大神帮我看看这个MATLAB二重积分程序哪里有错啊 请大神帮忙看一下下面这个二重积分近似值哪里错了

作者&投稿:尉迟眉 (若有异议请与网页底部的电邮联系)

括号的位置写错了。

 

从表达式上分析,你的本意应该是想对函数

2*0.89*sqrt(1-(y-0.6)^2/0.36)

进行积分,而积分下限为2.45*0.41129/2.05,上限为2.45*0.41129/2.05-z*tan(deg2rad(4.1)),是z的函数,然后再对z进行积分。但是,你把一个括号写错了位置,不妨把里面那个积分表达式单独拿出来看看:

>> int(2*0.89*sqrt(1-(y-0.6)^2/0.36)),y,2.45*0.41129/2.05,2.45*0.41129/2.05-z*tan(deg2rad(4.1))
 
ans = 
-89/15000*(-50*y+30)*(-25*y^2+30*y)^(1/2)+267/500*asin(5/3*y-1) 
 
y = 
y
 
ans =
    0.4915
 
ans = 
4427414099820457/9007199254740992-5165152565082871/72057594037927936*z

一个表达式为什么会出来这么一堆结果?因为在这一段:

int(2*0.89*sqrt(1-(y-0.6)^2/0.36))

后面的那个右括号是多余的,这样写就直接把int函数给封闭了,后面的参数都根本对不上号了(相应的,后面又少了一个括号,应该是因为语法检查不能通过你改的吧)。

 

正确的表达式是:

>> int(int(2*0.89*sqrt(1-(y-0.6)^2/0.36),y,2.45*0.41129/2.05,2.45*0.41129/2.05-z*tan(deg2rad(4.1))),z,0,2.45)
 
ans = 
109309091962170385197/51651525650828710000*asin(4884527265120691/27021597764222976)+4557054400486485700853793602045736247/37714226396530637672297999994372488529250835496960000*706308139127752718076806249979095^(1/2)-49335301290488534512338385857057647427/4291040870005263664048127999359714250439206172098560000*64453839881999312265574738195607127^(1/2)-109309091962170385197/51651525650828710000*asin(136465782724307597/288230376151711744) 
 
>> double(ans)
ans =
   -0.3668

 

建议以后遇到复杂的表达式尽量分成几个来写,以避免出错,例如

>> syms y z
>> f=2*0.89*sqrt(1-(y-0.6)^2/0.36);
>> y1=2.45*0.41129/2.05;
>> y2=2.45*0.41129/2.05-z*tan(deg2rad(4.1));
>> z1=0;
>> z2=2.45;
>> fz=int(f,y,y1,y2);
>> r=int(fz,z,z1,z2);
>> double(r)
ans =
   -0.3668

这样是不是比你那个要清晰很多?



怎么用Matlab计算这个二重积分??求程序代码~

如果你是要用程序求积分的话,楼上的回答已经很清楚了,但是这个问题是是可以用解析解计算出来的,只要交换积分次序即可。

应该分成正方形的网格。
另外,关于y=x的对称点,x²-y²与y²-x²,互相抵消,0≤x≤2,0≤y≤2内,积分为0,可以不用考虑,只要考虑2≤x≤5,0≤y≤2即可。
要提高精度,网格适当密一点。

matlab 二重积分
答:>> int(int('y*exp(x)/(x+y)','y','2*y'),1,2)Warning: Explicit integral could not be found.ans = int(-(y*(Ei(2*y) - Ei(3*y)))/exp(y), y = 1..2)Ei是maple的函数,需要调用maple内核计算 图中是用maple计算的 I是虚数单位 ...

怎么用Matlab计算这个二重积分?
答:你好!clc;clear all format long 要么 Y1=quad2d(@(x,y)(y.*(y-0.042))./(y.*(2+pi*sin(x))-0.084),pi/60,(4.2724/180)*pi,@(x)(0.084./(2-sin(x))),@(x)(0.0905./(2+sin(x)))或者 Y2=integral(@(x) arrayfun(@(x) integral(@(y)(y.*(y-0.042))./...

利用matlab三重积分到二重积分过程,消不掉z变量,希望得到只含x,y变量...
答:画出图形:y=x与y=1/x交点是(1,1),x=2与y=x交点(2,2),y=1/x与x=2交点是(2,1/2),图形是由这三个点围成的曲边三角形区域。可以写为:1<=x<=2,1/x<=y<=x,因此化重积分为累次积分 =积分(从1到2)dx 积分(从1/x到x)x/(1+y) dy =积分(从1到2)dx...

matlab求二重积分:Q = dblquad(@(x,y)(x^2+y^2+x*y+2*x+y+1), 0...
答:对于quad、dblquad等求数值积分的函数,要求被积函数能够接受向量输入,所以表达式中积分变量的幂函数应使用点运算:>> Q = dblquad(@(x,y) (x.^2+y.^2+x*y+2*x+y+1), 0, 2, 0, 1)Q = 11.3333

关于二重积分的matlab实现
答: 我来答 1个回答 #热议# 孩子之间打架 父母要不要干预?learneroner 高粉答主 2015-01-12 · 关注我不会让你失望 知道大有可为答主 回答量:1.1万 采纳率:91% 帮助的人:8060万 我也去答题访问个人页 关注 展开全部 本回答由提问者推荐 已赞过 已踩过< 你对这个回答的评价是? 评论 ...

matlab计算这个简单的二重积分。。为啥出不来结果?
答:>> int(int(exp(-x-y),x,0,inf),y,0,inf)ans = 1 我能算出来呀,你看看是不是你输入的内容有全角半角的错误,比如括号或逗号是不是输成全角的,或者你直接复制我的命令去运行,如果还不行,可能是你的Matlab有问题了。还有:把最后那个分号去掉,输入分号表示不显示运行结果。希望可以帮到...

matlab 二重积分
答:方程太复杂,采用int一般得不到结果,最好使用quad积分

求用matlab作次式子二重积分,其中w,L,k,m都是常量。积分完之后应该是一...
答:计算第一重积分很简单:syms w L k m x y int(k/(x^2+y^2+m^2),y,0,L)得到的结果是一个类似这样的表达式:k*atan(L/z)/z 其中z=(x^2+m^2)^(1/2)。现在的问题是,即使对于 atan(1/x)/x 这样一个简单的函数求不定积分也是比较困难的事(得到的结果有polylog之类符号,我...

matlab中,计算二重积分,已知道四个上线限中的三个和积分的值,怎么样编...
答:syms X Y X2;f = int(int(X*X+Y, Y, 2, 4), X, 1, X2);x2 = solve(f-5);x2 = vpa(x2)

matlab 二重数值积分 第一重积分还有符号积分上限
答:clear;clc;a=4;b=2;M=3;f=@(z)quadl(@(x)1./((1+(z-x)/a).*(1+x/b)).^M,0,z);quadl(@(z)arrayfun(@(z)log(1+z)*f(z),z),0,1e8)ans = 3.1092