matlab 积分慢,[MATLAB基础] dblquad函数求积分时表达式过长怎么解决?谢谢

icon1.gif dblquad函数求积分时表达式过长怎么解决?谢谢

大家好,我编了一个程序,目的大体是:求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不知道对不对。我写的程序也比较乱,应该有更简洁的编写方法,希望大家不吝赐教,谢谢大家!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值