yangyang1021 发表于 2009-5-5 10:16

求助:MATLAB计算和画图(求和,积分)

clear all; syms l;            %积分变量λ
format long; u1=4*pi*10^-7;          %其他参数
u2=4*pi*10^(-5.0); u3=4*3.14*10^-7;
e1=1; e2=1; e3=1; d1=0.01; d2=0.01; d3=0.01;
r1=0.1; r2=1; r=0.07; I=5;
Sn=pi*r1^2; Nt=1; M=I*Sn*Nt; Sr=Sn;
z=1; f=5; w=2*pi*f;   
%%系数kn
kn=[-0.0166666666666666 16.0166666666666 -1247 27554.3333333333 -26328.0833333333 1324138.7 -3891705.533333333 7053286.33333333 -8005336.5 5552830.5 -2155507.2 359251.2];
n=;

tt=linspace(0.00000000000001,1,5);
for n2=1:length(tt)
    t=tt(n2);
   
P=log(2)*n./t;      %%Pn

%%其他参数,计算表达式中的A1(λ)所用   
   
k1=sqrt(w^2*u1*e1+i*w*u1*d1);k2=sqrt(w^2*u2*e2+i*w*u2*d2);
k3=sqrt(w^2*u3*e3+i*w*u3*d3);
x1=sqrt(l.^2-k1^2); x2=sqrt(l.^2-k2^2); x3=sqrt(l.^2-k3^2);
t11=x1*r1; t21=x2*r1; t22=x2*r2; t32=x3*r2;
I00=besseli(0,t11); I01=besseli(0,t21); I02=besseli(0,t22);
I10=besseli(1,t11); I11=besseli(1,t21); I12=besseli(1,t22);
K00=besselk(0,t11); K01=besselk(0,t21); K02=besselk(0,t22); K03=besselk(0,t32);
K10=besselk(1,t11); K11=besselk(1,t21); K12=besselk(1,t22); K13=besselk(1,t32);

s=[-u1*x1.*K10      -u2*I11            -u2*K11            0
   -x1.^2.*K00         x2.*I01         -x2.*K01         0   
          0            u2*I12             u2*K12         -u3*K13
          0             x2.*I02            -x2.*K02         x3.*K03];
      
x=[ u1.*I10            -u2.*I11          -u2.*K11            0
   -x1.*I00            x2.*I01         -x2.*K01            0
       0               u2*I12             u2.*K12       -u3.*K13
       0               x2.*I02            -x2.*K02       x3.*K03];

S=det(s); X=det(x); A1=S./X;      %%表达式中的A1(λ)

xs=-log(2)*M/(2*t*pi^2);   
ys=kn./P; y3=xs*ys; y3s=sum(y3);
y3=subs(y3s); y2=x1.*(-A1*I00+x1*K00)*cos(l*z);
y2q(n2)=quadl(inline(y2),0.001,100);
y=y3*y2q; yr=real(y); yi=imag(y);

end
figure(1); plot(tt,yr);
figure(2); plot(tt,yi);

求出时间取不同值时,H(t)的值,在画出t与H(t)的曲线图。t值的范围(0.0000000000001,1),相当于每取一个t值,就要计算12次,再将这12个数值相加。
遇到的问题:t取不同值时,得到的结果H(t)却相同。
(式中的其他参数就不列出了,主要公式见附件)
请高手们帮帮我吧!!!!



[ 本帖最后由 ChaChing 于 2009-5-5 10:38 编辑 ]

yangyang1021 发表于 2009-5-5 15:40

假如在计算中令
t=0.2时,y =

7.65480897660316 + 0.02562014483532i
t=1时,y= 7.65480897660070 + 0.02562014483532i
但是用运行上面的程序,即tt =

Columns 1 through 4

   0.00000000000001   0.25000000000001   0.50000000000001   0.75000000000000

Column 5

   1.00000000000000
则运行结果y =

Columns 1 through 2

7.65480897660070 + 0.02562014483532i7.65480897660070 + 0.02562014483532i

Columns 3 through 4

7.65480897660070 + 0.02562014483532i7.65480897660070 + 0.02562014483532i

Column 5

7.65480897660070 + 0.02562014483532i
请教大家呀,帮我看看问题出在哪了,谢谢啦

friendchj 发表于 2009-5-5 15:58

y2和t无关,因此,y2q与t无关;
y3=xs*ys=-log(2)*M/(2*t*pi^2)*kn./P=-log(2)*M/(2*t*pi^2)*kn*t/log(2)/n=-M/2/pi^2*kn/n,因此y3也与t无关,
所以y与t无关
呵呵,这是我根据你的程序做的分析

yangyang1021 发表于 2009-5-5 21:33

非常感谢楼上的关注!

y=y3*y2q;

y3中是有t的 ,所以y与t有关。

具体的表达式可见附件!

请各位高手帮我看看!谢谢啦

yangyang1021 发表于 2009-5-5 21:39

非常感谢friendchj,我明白啦!还是自己太粗心了,以后多加改正,呵呵!

:victory:
页: [1]
查看完整版本: 求助:MATLAB计算和画图(求和,积分)