大神帮我看看这个MATLAB二重积分程序哪里有错啊
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(de...
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)
展开
展开全部
括号的位置写错了。
从表达式上分析,你的本意应该是想对函数
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
这样是不是比你那个要清晰很多?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询