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 Center および File ExchangeCalculus についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by