PDA

查看完整版本 : [MATLAB基础] dblquad函数求积分时表达式过长怎么解决?谢谢


aqyugu
2012-03-16, 21:42
大家好,我编了一个程序,目的大体是:求P在(x,y)上的分布,但P还是YZ面上矩形区域的积分,在程序中,x,y取值范围是[0 5],YZ面积分区域为a[0 5],c[0 3]。我表述的不太清楚,我把写的程序贴下来,大家看看。

----------------------------------------------------------------
%(cosa.^m)=(((3-c)./sqrt((a-2.5).^2+2.5^2+(c-3).^2)).^m)
%(cosb2)=(((a-2.5).*(x-a)-2.5*y+(c-3).*(.85-c))./(sqrt((a-2.5).^2+2.5^2+(c-3).^2).*sqrt((x-a).^2+y.^2+(.85-c).^2)))
%(cosd)=((.85-c)./sqrt((x-a).^2+y.^2+(.85-c).^2))
%下面for循环中的积分是p=积分号(cosa.^m)*(cosb2)*(cosd)/(R1*R2)dadc,
for x=0:.5:5
for y=0:.5:5
P=dblquad(@(a,c)((((3-c)./sqrt((a-2.5).^2+2.5^2+(c-3).^2)).^m).*(((a-2.5).*(x-a)-2.5*y+(c-3).*(.85-c))./...
(sqrt((a-2.5).^2+2.5^2+(c-3).^2).*sqrt((x-a).^2+y^2+(.85-c).^2))).*((.85-c)./...
sqrt((x-a).^2+y^2+(.85-c).^2)))./(((a-2.5).^2+2.5^2+(c-3).^2).*((x-a).^2+y^2+(.85-c).^2)),0,5,0,3);
end
end
plot3(x,y,P)


-------------------------------------------------------------------------

dblquad中的函数表达式很长,但有@(a,b)不知道怎么能把那个很长的式子变短,不知道函数调用可以不?画图用plot3不知道对不对。我写的程序也比较乱,应该有更简洁的编写方法,希望大家不吝赐教,谢谢大家!

未注册
2012-03-17, 09:32
早晨,顶一下!再顶一下!求答案!谢啦~~