作业帮 > 综合 > 作业

matlab问题:计算计算代数式的值

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/13 06:28:17
matlab问题:计算计算代数式的值
以4位正确的有效数字计算√(c²+d)-c 的值,其中,c=246886422468 d=13579
求代码
直接算sqrt(c^2+d)-c会导致大数+小数从而在保存c^2+d时失去小数的一些有效数字,然后又大数-大数失去了前面的很多有效数字,所以d里的信息没法复原了。简单一点可以这么算:
d/(sqrt(c^2+d)+c)
从而避免大数-大数。在format long情况下结果是
2.750049975259379e-08
另一种办法是装一个symbolic toolbox,然后这么算:
c=sym(246886422468);
d=sym(13579);
vpa(sqrt(c^2+d)-c)
这样应该可以精确到几乎任意位(参看vpa的用法)。默认的结果是
0.000000027500499752593790335726015243319
(所以之前的结果还是挺精确的)