TO SOLVE AN INTEGRAL WHERE A FUNCTION CONTAINS A COMPLEX SUM

Hello! I am stuck up with a problem where my function contains a sum of certain quantities indeed matrices and scalars that are computed in a loop. The matrices are 2 by 2.
delta=0.75;
for i=2:n
APHNEW=expm([(i-1).*H,(i-1).*(2*(Q'*Q));(i-1).*(R+M),(i-1).*(-(H'))]);
APHNEW11=APHNEW(1:2,1:2); %That is good
APHNEW21=APHNEW(3:4,1:2);
APHNEW12=APHNEW(1:2,3:4);
APHNEW22=APHNEW(3:4,3:4);
BPHNEW22=inv(APHNEW22);
PSIi=BPHNEW22*APHNEW21;
SPSI1=SPSI1+PSIi;
PHIi=beta*(log(det(APHNEW22))+(i-1)*trace(H'))/2;
S0i(i)=exp(-((rbar+mubar)*(i-1)+PHIi));
S0i2(i)=(-((rbar+mubar)*(i-1)+PHIi));
Yn0=Yn0+S0i2(i);
fun0=@(Gamma) exp(trace(1i*(THETA1*inv(eye(2)-2i*SIGMA*Gamma)*SIGMA*Gamma)))/((det(eye(2)-2i*SIGMA*Gamma))^(beta/2));
%In the next line Gamma1 is a scalar and is indeed the parameter
%of the Fourier Transform
%the next two lines are separate functions
fun1 = @(Gamma1) exp((1i*Gamma1+delta)*Yn0)*S0i(i)*fun0(1i*PSIi-(Gamma1-1i*delta)*SPSI);
fun3 = @(Gamma1) exp((1i*Gamma1+delta)*Yn0)*(S0i(i)*fun0(1i*PSIi-(Gamma1-1i*delta)*SPSI)-K*fun0(-(Gamma1-1i*delta)*SPSI));
end
I need to compute fun1 on sum of
S0i(i)*fun0(1i*PSIi-(Gamma1-1i*delta)*SPSI);
and then use this in fun3 which I am writing without sum.
I then use it to define a new function which I have to integrate using quadgk between 0 to infinity. However I am not being able to sum the arguments since Gamma1 is unknown and used in quadgk.
Any help would be great.
Thanks
Warm regards,

5 件のコメント

RB
RB 2017 年 5 月 14 日
Also I am unable to store the matrices "PSIi" generated in the above loop into a separate array.
Thanks.
Jan
Jan 2017 年 5 月 14 日
@RB: I do not get what you are asking for. Why do you define fun0 inside the loop? As far as I can see, it does not depend on the loop at all.
Currently PHIi is overwritten in each iteration. If you want to store it in a separate array, just store it in a separate array:
PSIi = cell(1, n)
for i=2:n
...
PSIi{i} = ...
fun1 and fun3 are overwritten also.
Some other hints: Using indices in the names of variables is usually a bad idea. Idnices are hidden there and it is more direct to ise indices instead. inv(A)*b is less efficient and accurate as A\b.
RB
RB 2017 年 5 月 14 日
Thanks for your answer and useful hints. You are right. fun0 does not vary in the loop. I actually want to sum on the arguments of fun0. To make things clear please see the file attached.
RB
RB 2017 年 5 月 14 日
Actually I am still stuck up the fact that the function involves a sum of arguments is creating a problem. I canot run a loop to sum the arguments of the function.
P.S. The other 'i' appearing in exponent and in functions is iota.
Any help would be appreciated.
Thanks.
RB
RB 2017 年 5 月 16 日
It is still not working out. The function does not sum arguments.

サインインしてコメントする。

回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeLoops and Conditional Statements についてさらに検索

質問済み:

RB
2017 年 5 月 14 日

コメント済み:

RB
2017 年 5 月 16 日

Community Treasure Hunt

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

Start Hunting!

Translated by