数值计算中误差的传播规律

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

数值计算方法

实验序号:实验一

实验名称:数值计算中误差的传播规律

实验人:

专业年级:

教学班:

学号:

实验时间:

实验一 数值计算中误差的传播规律

一、实验目的

1.观察并初步分析数值计算中误差的传播;

2.观察有效数字与误差传播的关系.

二、实验内容

1.使用MATLAB 的help 命令学习MATLAB 命令digits 和vpa 的用途和使用格式;

2.在4位浮点数下解二次方程01622=++x x ;

3.计算下列5个函数在点2=x 处的近似值

(1)60)1(-=x y ,

(2)6

1)1(1+=x y , (3)32)23(x y -=,

(4)3

3)23(1x y +=, (5)x y 70994-=.

三、实验步骤

本次实验包含三个相对独立的内容.

1.在内容1中,请解释两个命令的格式和作用;

在matlab 中采用help 语句得到:

1、digits用于规定运算精度,比如: digits(20); 这个语句就规定了运算精度是20位有效数字。但并不是规定了就可以使用,因为实际编程中,我们可能有些运算需要控制精度,而有些不需要控制。vpa就用于解决这个问题,凡是用需要控制精度的,我们都对运算表达式使用vpa函数。

例如: digits(5); a=vpa(sqrt(2)); 这样a的值就是1.4142,而不是准确的1.4142135623730950488016887242097 又如: digits(11);

a=vpa(2/3+4/7+5/9); b=2/3+4/7+5/9; a的结果为1.7936507936,b的结果为1.793650793650794......也就是说,计算a的值的时候,先对2/3,4 /7,5/9这三个运算都控制了精度,又对三个数相加的运算控制了精度。而b的值是真实值,对它取11位有效数字的话,结果为1.7936507937,与a不同,就是说vpa 并不是先把表达式的值用matlab本身的精度求出来,再取有效数字,而是每运算一次都控制精度。

2.求解方程时,分别使用求根公式和韦达定理两种方法,并比较其有效数字和相对误差;

用求根公式解得:x1=-0.015,x2=-62.00

用韦达定理解得:x11=-0.016,x22=-62.00

x22=x2,x11=1/x22

该方程相对精确的解为:

Er1表示用求根公式求得的相对误差,Er2表示用韦达定理求得的相对误差

x1有1位有效数字,x2有3位有效数字;

x11有4位有效数字,x22有3位有效数字。

3.实验内容3中的5个函数在2=x 处的精确值都是相等的,若取4.12≈进行计算,计算各函数的结果,作图观察并比较它们的绝对误差(作图区间可取

]

.1,4.1[甚至更小),并从算法设计原则上说明原因.

42

Matlab计算如下:

作图比较如下:

计算绝对误差:

结论:当x=1.4时,结果的好坏次序是y3,y1,y0,y2,y4.导致y4的结果出现很大误差的原因是大数70作了乘数,y2误差的原因是小数0.2作为了乘数,其余的结果还是比较好的,误差都不至于太大。

由此可知,不同的计算方法会导致不同的结果,相应结果中误差的放大程度也不同,所以我们在计算的过程中应尽量遵循计算原则,注意以下几点:小数不能作为乘数,大数不能作为除数,避免大数吃小数,避免相近的数相减,简化计算步骤等。

相关文档
最新文档