matlab两次算出来的值不一样,是为什么

>>h=5;H=15;a=4;>>m=1;>>y=2.*(atan((h+H)./a)-atan(h./a)).*(1+1./4*(1./m.^2+1)+9./64.*(... >> h=5;H=15;a=4;
>> m=1;
>> y=2.*(atan((h+H)./a)-atan(h./a)).*(1+1./4*(1./m.^2+1)+9./64.*(1./m.^2+1).^2+1./10.*(1./m.^2+1).^3)/sqrt(1./m.^2+1)+2.*(atan((h+H)./m.*a)-atan(h./a.*m)).*(1+1./(4.*(m.^2+1))+9./(64.*(m.^2+1).^2)+1./(10.*(m.^2+1).^3))./sqrt(m.^2+1);
>> y

y =

3.0306

>> clear
>> m=1

m =

1

>> y=2.*(atan(5)-atan(1.25)).*(1+1./4*(1./m.^2+1)+9./64.*(1./m.^2+1).^2+1./10.*(1./m.^2+1).^3)/sqrt(1./m.^2+1)+2.*(atan(5./m)-atan(1.25./m)).*(1+1./(4.*(m.^2+1))+9./(64.*(m.^2+1).^2)+1./(10.*(m.^2+1).^3))./sqrt(m.^2+1);
>> y

y =

2.7240

>>
>> clear
>> m=1

m =

1

>> y=2.*(atan(5)-atan(1.25)).*(1+1./4*(1./m.^2+1)+9./64.*(1./m.^2+1).^2+1./10.*(1./m.^2+1).^3)/sqrt(1./m.^2+1)+2.*(atan(5./m)-atan(1.25./m)).*(1+1./(4.*(m.^2+1))+9./(64.*(m.^2+1).^2)+1./(10.*(m.^2+1).^3))./sqrt(m.^2+1);
>> y

y =

2.7240 此时,当m=1时,Y为2.7240
再次输入以下>> clear
>> m=0.1:0.01:3;
>> y=2.*(atan(5)-atan(1.25)).*(1+1./4*(1./m.^2+1)+9./64.*(1./m.^2+1).^2+1./10.*(1./m.^2+1).^3)/sqrt(1./m.^2+1)+2.*(atan(5./m)-atan(1.25./m)).*(1+1./(4.*(m.^2+1))+9./(64.*(m.^2+1).^2)+1./(10.*(m.^2+1).^3))./sqrt(m.^2+1);
>> plot(m,y),后却发现y只有1.7361左右,这是为什么呢
展开
 我来答
夜之阴影
2012-02-27 · TA获得超过172个赞
知道小有建树答主
回答量:70
采纳率:0%
帮助的人:85.3万
展开全部
1,多大括号,任何优先级别有问题的地方都打上括号
2,如果是常数,不需要用点乘,点除
3,多先变量吧,死不了人

4,可读性》程序的优化

以上是一个看你的代码头疼的人,给你几项建议。
还搞不定,

单不调试。。。

还有你上面这么多数值计算,输入不同,不同的格式输入,他的舍入法是服不同?
goode2008
2012-02-25 · TA获得超过471个赞
知道小有建树答主
回答量:175
采纳率:0%
帮助的人:211万
展开全部
第二行,(h+H)/m*a=(5+15)/1*4=80, 乘号和除号的运算优先级是相同的,(h+H)/m*a不等于(h+H)×a/m
追问
请再帮我看一下啊,我追加的问题
追答
你的式子太长了,多设几个变量,把那些复杂的运算分开,问题自然就出来了~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式