24小时热门版块排行榜    

查看: 926  |  回复: 1

crackpotop

银虫 (小有名气)

[求助] matlab 求解积分问题

我想求一个含有复数的积分,
matlab 求解积分问题
并作出积分结果的幅值与变量a的图像,matlab程序如下:

b=10*10^-6;
ef=0.606;
es=1.1;
af=0.012;
as=0.065;
w=10;
qf=;
qs=;
k=0;
for a=-20*10^-6:1*10^-6:20*10^-6
    k=k+1;
    e(k)= a;
    f=@(n)1./(ef*sqrt(n.^2+2*1i*w/af)+es*sqrt(n.^2+2*1i*w/as)).*sin(n*b).*cos(n*a)./(n*b);
    y= quad(f,0,inf);
    d(k)= abs(y);
end
plot(e,d)

然而最后的积分结果都是NaN
请问怎么办?
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

crackpotop

银虫 (小有名气)

看推荐的帖子,积分用 quadgk,出结果了~~

http://blog.sina.com.cn/s/blog_8138d87601013wrk.html
四、[q,errbnd] = quadgk(fun,a,b,param1,val1,param2,val2,...)
自适应Gauss-Kronrod数值积分,适用于高精度和震荡数值积分,支持无穷区间,并且能够处理端点包含奇点的情况,同时还支持沿着不连续函数积分,复数域线性路径的围道积分法。
注意事项:
1.积分限[a,b]可以是[-inf,inf],但必须快速衰减;
2.被积函数在端点可以有奇点,如果区间内部有奇点,将以奇点区间划分成多个,也就是说奇点只能出现在端点上;
3.被积函数可以剧烈震荡;
4.可以计算不连续积分,此时需要用到'Waypoints'参数,'Waypoints'中的点必须严格单调;
5.可以计算围道积分,此时需要用到'Waypoints'参数,并且为复数,各点之间使用直线连接;
6.param,val为函数的其它控制参数,比如上面的'waypoints'就是,具体看帮助。
出现错误:
1.'Reached the limit on the maximum number of intervals in use'
2.'Infinite or Not-a-Number function value encountered'
例4 计算有奇点积分int(exp(x)*log(x),0,1)。
>>F=@(x)exp(x).*log(x);%奇点必须在端点上,否则请先进行区间划分。
>>Q = quadgk(F,0,1)
Q =
   -1.3179
例5 计算半无限震荡积分int(x^5*exp(-x)*sin(x),0,inf)。

>>F=@(x)x.^5.*exp(-x).*sin(x);
>>fplot(F,[0,100])%绘图,看看函数的图形
>>[q,errbnd] = quadgk(F,0,inf,'RelTol',1e-8,'AbsTol',1e-12)%积分限中可以有inf,但必须快速收敛
q =
-15.0000

errbnd =
9.4386e-009

例6 计算不连续积分,积分函数为f(x)=x^5*exp(-x)*sin(x),但是人为定义f(2)=1000,f(5)=-100,积分区间为[1 10]。
>>F=@(x)x.^5.*exp(-x).*sin(x);
>>[q,errbnd] = quadgk(F,1,10,'Waypoints',[2 5])%显然2,5为间断点
q =
-10.9408

errbnd =
3.2296e-014
例7 计算围道积分,在复数域内,积分函数1/(2*z-1),积分路径为由[-1-i 1-i 1+i -1+i -1-i]围成的矩形边框。
>>Waypoints=[-1-i 1-i 1+i -1+i -1-i];
>>plot(Waypoints);%绘制积分路径
>>xlabel('Real axis');ylabel('Image axis');axis([-1.5 1.5 -1.5 1.5]);grid on;
>>Q = quadgk(@(z)1./(2*z - 1),-1-i,-1-i,'Waypoints',[1-i,1+i,-1+i])%注意各点间使用直线连接
ans =
   0.0000 + 3.1416i
>> quadgk(@(z)1./(2*z - 1),-1-i,-1-i,'Waypoints',Waypoints)%使用这个的效果也是一样的,就是说始末点可以随便包不包含在Waypoints中。
ans =
   0.0000 + 3.1416i
2楼2015-06-12 18:50:30
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 crackpotop 的主题更新
信息提示
请填处理意见