Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
回复
 
主题工具 显示模式
旧 2012-03-16, 21:42   #1
aqyugu
初级会员
 
注册日期: 2012-03-16
年龄: 38
帖子: 3
声望力: 0
aqyugu 正向着好的方向发展
默认 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不知道对不对。我写的程序也比较乱,应该有更简洁的编写方法,希望大家不吝赐教,谢谢大家!
aqyugu 当前离线   回复时引用此帖
旧 2012-03-17, 09:32   #2
未注册
游客
 
帖子: n/a
默认 回复: dblquad函数求积分时表达式过长怎么解决?谢谢

早晨,顶一下!再顶一下!求答案!谢啦~~
  回复时引用此帖
回复

主题工具
显示模式

发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码



所有时间均为北京时间。现在的时间是 23:51


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.