matlab中用for 循环+条件语句求值:

fora=0:.001:15;if(49.82418*cos(a.*pi./180.)+2768.01.*sin(a.*pi./180.)==650);disp(a);e... for a=0:.001:15;
if(49.82418*cos(a.*pi./180.)+2768.01.*sin(a.*pi./180.)==650);disp(a);
end;
end;
为什么结果总为15。 我用笔算大概在12、13左右
展开
 我来答
梅花香如故
2010-11-06 · TA获得超过1847个赞
知道小有建树答主
回答量:934
采纳率:100%
帮助的人:1311万
展开全部
你的条件语句中
49.82418*cos(a.*pi./180.)+2768.01.*sin(a.*pi./180.)==650
这个的逻辑值应该永远是假,那么程序肯定相当于

for a=0:.001:15;
if(0);disp(a);
end;
end;

那最后的结果肯定是a=15

那么为什么你的条件的逻辑值是假,显然是计算的截断误差了,所以你应该设置一个阈值theta
49.82418*cos(a.*pi./180.)+2768.01.*sin(a.*pi./180.)==650
这个条件改为:
(49.82418*cos(a.*pi./180.)+2768.01.*sin(a.*pi./180.)>650-theta)&(49.82418*cos(a.*pi./180.)+2768.01.*sin(a.*pi./180.)<650+theta)
那么就能找到你要找的那个点了
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式