数值分析上机实验思考题——误差分析

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

思考题一:

在上述实验中我们会发现用roots函数求解多项式方程的精度不高,为此你可以考虑用符号函数solve来提高解的精确度,这需要用到将多项式转换为符号多项式的函数poly2sym,函数的具体使用方法可参考MATLAB的帮助。

分别使用roots函数和solve函数对多项式求根的代码如下:

roots计算方程根 solve计算方程根两种函数对同一方程的求根结果计算如下表所示,可见solve的计算精度高于roots。

roots solve

1.000000 1.000000

2.000000 2.000000

3.000000 3.000000

4.000000 4.000000

5.000000 5.000000

6.000000 6.000001

6.999973 6.999995

8.000284 8.000023

8.998394 8.999924

10.006060 10.000189

10.984041 10.999640

12.033449 12.000531

12.949056 12.999393

14.065273 14.000539

14.935356 14.999632

16.048275 16.000190

16.971132 16.999928

18.011222 18.000019 18.997160 18.999997 20.000325

20.000000

思考题三:(一个简单公式中产生巨大舍入误差的例子)

可以用下列式子计算自然对数的底数

n n n

e e )1

1(lim 1+==∞→

这个极限表明随着n 的增加,计算e 值的精度是不确定的。现编程计算

n n

n f )1

1()(+=与exp(1)值的差。

n 大到什么程度的时候误差最大?你能解释其中的原因吗?

用代码实现了对自然常数真实值与计算值相同小数位数的计算,代码如下

容易知道,自然常数e 的真实值为2.718281828。经代码运算得出下表数据,通过比较可以知道真实值与计算值相同的小数位数。可以得出如下结论:当n 小于8110×时,随着n 的增大,误差越来越小;当n 大于8110×时,由于1/n 小到无法忽视舍入误差的存在,经过误差积累导致计算结果越来越偏离真实值。

n 的数量级

e 的计算值 相同位数 n 的数量级 e 的计算值 相同位数 1 2.59374246 0 9 2.718282052 5 2 2.704813829 1 10 2.718282053 5 3 2.716923932 2 11 2.718282053 5 4 2.718145927 3 12 2.718523496 3 5 2.718268237 4 13 2.716110034 2 6 2.718280469 5 14 2.716110034 2 7 2.718281694 6 15 3.035035207

0 8

2.718281798

6

相关文档
最新文档