作业帮 > 综合 > 作业

一个MATLAB二重积分的问题

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/04/29 17:30:44
一个MATLAB二重积分的问题
要用MATLAB画一个表达式中含二重积分的曲线,但是不会写程序.看到您之前回答过一个类似的问题,很强大,希望能得到您的帮助.
表达式如下,其中参数设定为a=0.05,b=0.1,t=1,x的定义域是(0.,正无穷).
最简单的方法是用数值积分,但是上下限一改差别非常大,说明你这个函数的振荡的非常厉害,不适合,具体的上下限你可以看看你的函数的收敛区间再定:
clc
clear
a=0.05;b=0.1;t=1;
xx=linspace(0,50);Q=zeros(size(xx));
for i=1:length(xx)
x=xx(i);
Q(i) = quad2d(@(y,v) sin(4*pi*v/b^2/t).*sinh(v).*exp(-2.*v.^2/b^2/t).*y.^(2*a/b^2).*exp( -2/(b^2*x).*(y.^2+2.*y.*cosh(v)+1) ),0,300,0,300,'AbsTol',1e-8);
end
Q=8*Q.*(pi*b^3*x.^2*sqrt(2*pi*t)).^(-1).*exp(4*pi^2-(a*t)^2/(2*b^2*t));
plot(xx,Q,'k.')
再就是用符号积分,不过这个会非常慢
syms y v
ap=0.05;bp=0.1;tp=1;
a=sym(0.05);b=sym(0.1);t=sym(1);
xx=linspace(0,50);Q=zeros(size(xx));
for i=1:length(xx)
x=sym(xx(i));
Q(i)=str2num(int(int(sin(4*pi*v/b^2/t)*sinh(v)*exp(-2.*v^2/b^2/t).*y^(2*a/b^2)*exp( -2/(b^2*x)*(y^2+2.*y*cosh(v)+1) ),v,0,Inf),y,0,Inf));
end
Q=8*Q.*(pi*bp^3*x.^2*sqrt(2*pi*t)).^(-1).*exp(4*pi^2-(ap*tp)^2/(2*bp^2*tp));
plot(xx,Q,'k.')
再有就是用quadlgk来积分,这个积分可以用无穷作为上下限,但是只能做一维,第二维感觉还是要用数值,使用你可以参考这个函数的帮助