필터 지우기
필터 지우기

How to simplify infinite double matrix summation in Matlab.

조회 수: 5 (최근 30일)
Hilal Ahmad Bhat
Hilal Ahmad Bhat 2024년 3월 2일
편집: Torsten 2024년 3월 5일
I need to calculate the following sum:
I used the following code:
beta = 1.5; A = [1 0;0 2]; R = [0 3; 1 1];
syms k l t
f = ((-A).^k./factorial(k)).*((factorial(k+l).*(-R).^l)/gamma((2-beta).*l...
+ 2.*k + 2)).*((t.^((2-beta).*l+2.*k+1))/factorial(l));
F = vpasum(vpasum(f,k,0,inf),l,0,inf);
G = subs(F,t,1)
G = 
This yields G as a symbolic sum but I need it as numeric sum. I tried it using symsum function but that too yields a symbolic answer. Using, subs function for t=1 won't change it into a numeric value. Any help would be highly appriciated.
  댓글 수: 5
Walter Roberson
Walter Roberson 2024년 3월 2일
(-R).^l
I suspect that is
(-R)^l
and
(-A).^k
I suspect that is
(-A)^k
Hilal Ahmad Bhat
Hilal Ahmad Bhat 2024년 3월 3일
@Walter Roberson Yes, you are right but that won't make any difference in this case.

댓글을 달려면 로그인하십시오.

채택된 답변

Walter Roberson
Walter Roberson 2024년 3월 3일
이동: Walter Roberson 2024년 3월 3일
beta = 1.5; A = [1 0;0 2]; R = [0 3; 1 1];
syms k l t
f = ((-A)^k./factorial(k)).*((factorial(k+l).*(-R)^l)/gamma((2-beta).*l...
+ 2.*k + 2)).*((t.^((2-beta).*l+2.*k+1))/factorial(l));
F = symsum(symsum(f,k,0,inf),l,0,inf);
G = subs(F,t,1)
G = 
vpa(G)
ans = 
  댓글 수: 6
Torsten
Torsten 2024년 3월 5일
편집: Torsten 2024년 3월 5일
beta = 1.5; A = [1 0;0 2]; R = [0 3; 1 1]; t = 1;
mat = zeros(2);
mat_inner = Inf(2);
tol = 1e-6;
s1 = 0;
while norm(mat_inner,'fro') > tol
mat_inner = zeros(2);
for s2 = 0:s1
mat_inner = mat_inner + f(s1-s2,s2,beta,A,R,t);
end
mat = mat + mat_inner;
s1 = s1 + 1;
end
s1
s1 = 45
format long
mat
mat = 2x2
2.514129941450880 -2.868263680288298 -0.720173713227138 1.221004006453150
function mat = f(k,l,beta,A,R,t)
mat = (-1)^(k+l)*A^k/factorial(k)*R^l/factorial(l)*factorial(k+l)...
*t^((2-beta)*l+2*k+1)/gamma((2-beta)*l+2*k+2);
end
Hilal Ahmad Bhat
Hilal Ahmad Bhat 2024년 3월 5일
This is awesome. Thank you very much.

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Torsten
Torsten 2024년 3월 2일
편집: Torsten 2024년 3월 2일
Are you sure that the matrix potentials for A and R are meant elementwise ?
beta = 1.5; A = [1 0;0 2]; R = [0 3; 1 1]; t = 1;
N = 50;
M = N;
mat = zeros(2);
for s1 = 0:N
for s2 = 0:M
mat = mat + f(s1,s2,beta,A,R,t);
end
end
mat
mat = 2×2
0.8415 0.2856 0.5560 0.4253
function mat = f(k,l,beta,A,R,t)
mat = (-A).^k/factorial(k).*(-R).^l/factorial(l)*factorial(k+l)...
*t^((2-beta)*l+2*k+1)/gamma((2-beta)*l+2*k+2);
end
  댓글 수: 3
Hilal Ahmad Bhat
Hilal Ahmad Bhat 2024년 3월 3일
편집: Hilal Ahmad Bhat 2024년 3월 3일
Oh! It is my mistake. The matrix potential is not elementwise. It is the meant to be the matrix multiplication (i.e., rows × colums). Whatever be the case, I am stuck at finding the infinite sum. I think while loop might help but I don't know how to do it with double summation.
Torsten
Torsten 2024년 3월 3일
편집: Torsten 2024년 3월 3일
I doubt you will find an analytical expression for your double sum - that's what summing up to infinity would mean. Thus you will have to compute the sum numerically.
Infinite sums are numerically evaluated by building finite sums up to an index N until the result changes only neclectably if N is increased.
That's what I did.
If you meant usual matrix multiplication, replace
function mat = f(k,l,beta,A,R,t)
mat = (-A).^k/factorial(k).*(-R).^l/factorial(l)*factorial(k+l)...
*t^((2-beta)*l+2*k+1)/gamma((2-beta)*l+2*k+2);
end
by
function mat = f(k,l,beta,A,R,t)
mat = (-A)^k/factorial(k)*(-R)^l/factorial(l)*factorial(k+l)...
*t^((2-beta)*l+2*k+1)/gamma((2-beta)*l+2*k+2);
end

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Calculus에 대해 자세히 알아보기

태그

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by