计算方法上机1舍入误差与数值稳定性

合集下载

实验一 误差传播与算法稳定性

实验一 误差传播与算法稳定性

实验一 误差传播与算法稳定性1.1 实验目的体会稳定性在选择算法中的地位.误差扩张的算法是不稳定的,是我们所不期望的;误差衰竭的算法是稳定的.是我们努力寻求的,这是贯穿本课程的目标.通过上机计算,了解舍入误差所引起的数值不稳定性。

1.2 算法描述概要:舍人误差在计算方法中是—个很重要的概念。

在实际计算中,如果选用了不同的算法,由于舍入误差的影响.将会得到截然不同的结果。

因此,选取稳定的算法,在实际计算中是十分重要的。

考虑一个简单的由积分定义的序列101n x n I x e dx e =⎰, 0,1,2,n=(E.1)利用分部积分易得 11111000111n x n x n x n n n I x e dx x e x e dx nI e e e --==-=-⎰⎰, 0,1,2,n= 得递推公式11n n I nI -=-, 0,1,2,n=(E.2)注意到 110100111111n n n n x e dx I x e dx I e e e(n )n ⋅<<⋅∴<<++⎰⎰ 取100111063212056x I e dx .e e ==-≈⎰由利用(E.2)变形得到11n n I I n --= (E.3)计算方法:先估计一个N I ,再反推要求的n I (n N )。

11(1)1N I e N N <<++ 可取 1112(1)1N I e N N ⎡⎤≈+⎢⎥++⎣⎦(0I →+∞→当时,N N )。

1.3 实验内容由递推关系(E.2),可以得到计算(E.1)积分序列{}n I 的两种算法.其一为(E.2)的直接应用,即100111x I e dx e e ==-⎰, 11n n I nI -=-, 0,1,2,n = (E.4)另外一种算法则是利用(E.2)变形得到的0N I =, 11n n I I n --=, 1,2,,1n N N =--(E.5)1.4 实验要求(1)分别用算法(E.4)、(E.5)并在计算中分别采用5位、6位和7位有效数字,请判断哪种算法能给出更精确的结果.(2)两种算法的优劣,与你的第一感觉是否吻合.请从理论上证明你实验得出的结果,解释实验的结果.设(E.4)中0I 的计算误差为0e ,由0I 递推计算n I 的误差为n e ;算法(E.5)中N I 的误差为N ε,由N I 向前递推计算()n I n N <的误差为n ε.如果在上述两算法中都假定后面的计算不再引入其他误差,试给出n e 与0e 的关系和n ε与N ε的关系.(3)算法(E.4)中通常0e 会很小,当n 增大时,n e 的变化趋势如何?算法(E.5)中N ε通常相对比较大,当n 减小时,误差n ε又是如何传播的?也就是说比较一下上述两个算法,当某一步产生误差后.该误差对后面的影响是衰减还是扩张的.(4)通过理论分析与计算实验,针对算法(E.4)和(E.5)的稳定性,给出你的结论。

数值算法的稳定性

数值算法的稳定性

用上式计算 Im 可使计算的误差减少5倍,因而它对 应的算法是数值稳定的算法。
线性代数一④
有递推公式
In

5In1

1 n
(n
1,2,...)
15/32
在该例中,用上述公式计算积分的值,I0=ln6-ln5
≈0.182322的舍入误差在计算过程迅速传播,每次扩大 5倍,致使I12= -0.32902110×10-2 严重失真,所以这一 公式是不稳定的。
n
I9n/32
5 0.0284684
4 0.0343063
3 0.0431387
2 0.0580389
1 0.0883922
最后得: I0=0.182322
与我们开始计算的I0≈0.182322是一样的
该公式给 出的算法
I n1


1 5
In

1 5n
(n

m,
m
1,...,2,1)
就是稳定 的
11
就是稳定
In1 5 In 5n (n m, m 1,...,2,1) 的
线性代数一④
五、简化计算步骤,减小运算次数,避免误差积累18/32
简化计算步骤是提高程序执行速度的关键,它不仅可以节省 时间,还能减少舍入误差。
例6:计算9255的值 若逐个相乘要用254次乘法, 9255 = 9•9•9•……•9
≈0.182322的舍入误差在计算过程迅速传播,每次扩大 5倍,致使I12= -0.32902110×10-2 严重失真,所以这一 公式是不稳定的。
线性代数一④
7/32
n
In
n
In
n
In
n

计算方法与计算 实验一误差分析

计算方法与计算 实验一误差分析
(1)MATLAB 主程序 function [k,juecha,xiangcha,xk]= liti112(x0,x1,limax) % 输入的量--x0是初值, limax是迭代次数和精确值x;
% 输出的量--每次迭代次数k和迭代值xk,
%
--每次迭代的绝对误差juecha和相对误差xiangcha,
误差分析
误差问题是数值分析的基础,又是数值分析中一个困难的课题。在实际计算 中,如果选用了不同的算法,由于舍入误差的影响,将会得到截然不同的结果。 因此,选取算法时注重分析舍入误差的影响,在实际计算中是十分重要的。同时, 由于在数值求解过程中用有限的过程代替无限的过程会产生截断误差,因此算法 的好坏会影响到数值结果的精度。 一、实验目的
因为运行后输出结果为: y 1.370 762 168 154 49, yˆ =1.370 744 664 189
38, R 1.750 396 510 491 47e-005, WU= 1.782 679 830 970 664e-005 104 . 所
以, yˆ 的绝对误差为 10 4 ,故 y
③ 运行后输出计算结果列入表 1–1 和表 1-2 中。
④ 将算法 2 的 MATLAB 调用函数程序的函数分别用 y1=15-2*x^2 和
y1=x-(2*x^2+x-15)/(4*x+1)代替,得到算法 1 和算法 3 的调用函数程序,将其保
存,运行后将三种算法的前 8 个迭代值 x1, x2 ,, x8 列在一起(见表 1-1),进行
的精确解 x* 2.5 比较,观察误差的传播.
算法 1 将已知方程化为同解方程 x 15 2x2 .取初值 x0 2 ,按迭代公式
xk1 15 2xk2

工程数学中数值计算应注意的一些原则

工程数学中数值计算应注意的一些原则

数值计算中应遵循的原则工程问题的数值计算中出现误差的渠道及原因, 分析了这些误差可能会引起的后果。

通过具体例子说明要避免这些误差须遵循的原则。

用数值稳定性好的计算方法;两个数量级相差很大的数进行加减运算时, 防止小的那个数加减不到大的数中; 避免两个相近的数相减, 损失有效数字; 防止出现机器零和溢出停机; 在除法运算中, 避免除数的绝对值远小于被除数的绝对值; 简化计算步骤, 减少运算次数。

用电子数字计算机进行各种工程问题的数值计算, 计算误差是不可避免的。

误差的渠道来源主要有四个: 模型误差、观测误差、截断误差、舍入误差。

用数学模型描述各类实际问题, 一般都要作一定的简化, 由此产生的数学模型的解与实际问题的解之间一定会有差异, 这种差异就是模型误差; 数学模型中包含的某些参数或常数, 大多是经过仪器观测或试验获得的数值, 这样得到的观测数值与实际数值之间也有误差, 这种误差称为观测误差; 求解数学模型所用的数值计算方法往往是近似计算方法, 由此产生的误差称为方法误差。

由于近似方法一般都要用有限的四则算术运算步骤来代替无穷的极限运算, 这种由截断一个无穷过程而引起的误差, 就叫截断误差, 方法误差也属于截断误差; 由于电子数字计算机只能将数表示成有限位进行计算, 对超过位数的数字按一定的规则作舍入, 由此产生的误差称为舍入误差。

数值计算方法主要研究截断误差和舍入误差对计算结果的影响, 一般不考虑模型误差和观测误差。

分析参数或常数的观测误差在数值计算中的影响的方法与分析舍入误差的影响所用的方法大致相同,而控制观测误差和模型误差则不是数学计算工作者所能独立解决的。

为了减小误差, 特别是舍入误差的影响, 在数值运算中应注意以下一些原则:1用数值稳定性好的计算方法, 以便控制舍入误差的传播如, 要求在四位有效数字的精度下计算定积分的值[1]:由有理函数积分法知,因而计算这 101 个定积分的算法是:它是数值稳定性不好的一种算法, 因为 y0的舍入误差传播到 y1时增大 5 倍, 如此进行, 传播到 y100时将增大到 5100倍。

数值运算的误差估计四则运算的证明

数值运算的误差估计四则运算的证明

数值运算的误差估计四则运算的证明数值运算的误差估计是指在进行四则运算(加法、减法、乘法、除法)时,由于计算机在表示和处理实数时存在有限精度的问题,导致结果可能与实际值之间存在一定的差距。

这种差距即为误差,我们需要对误差进行估计,以保证计算结果的准确性和可靠性。

在进行数值运算时,计算机使用有限的位数来表示实数,例如使用二进制的浮点数表示法。

然而,无论使用何种表示方法,都无法完全准确地表示无限的实数集合。

这就意味着,在计算机中进行的数值运算实际上是对实数的一个近似计算。

我们来看加法和减法运算的误差估计。

在进行加法运算时,如果两个数的绝对值差距很大,那么较小的数在计算机中可能被舍入为零,从而引入了较大的误差。

而在进行减法运算时,由于计算机的有限精度,可能会出现两个非常接近的数相减时的大误差。

在实际应用中,我们可以通过控制计算顺序以及合理的舍入规则来减小这些误差。

接下来,我们来看乘法和除法运算的误差估计。

在进行乘法运算时,如果两个数的绝对值都很大,那么结果的绝对值可能会超出计算机的表示范围,从而导致溢出。

而在进行除法运算时,如果除数接近于零,那么结果可能会变得非常大,也可能会变得非常小,这就会引入较大的误差。

因此,在进行乘法和除法运算时,我们需要特别注意数值的范围和精度,避免产生不可预测的结果。

为了更好地估计数值运算的误差,我们可以借助一些数值分析的方法。

其中一种常用的方法是舍入误差分析。

舍入误差是由于将无限精度的实数舍入为有限精度的实数而引入的误差。

通过分析舍入误差的上界和下界,我们可以得到对数值运算结果的误差估计。

另外,我们还可以使用数值稳定性分析来评估数值算法的稳定性和可靠性。

数值稳定性是指在输入数据存在扰动的情况下,算法的输出结果是否能够保持稳定。

如果算法具有较好的数值稳定性,那么它在进行数值运算时产生的误差就相对较小。

总结起来,数值运算的误差估计是保证计算结果准确性和可靠性的重要手段。

在进行四则运算时,我们需要注意加法、减法、乘法和除法运算可能引入的误差,并采取相应的措施来减小误差。

计算方法中的误差

计算方法中的误差

计算方法中的误差标题:计算方法中的误差导言:在科学和工程领域,计算方法是解决问题和预测结果的关键工具。

然而,所有的计算方法都不可避免地涉及到误差。

误差是指计算结果与实际值之间的差异,它可能源自多种因素,包括测量精度、近似方法和计算机数值表示等。

本文将探讨计算方法中的误差类型、其对结果的影响以及如何处理和减小误差的方法。

一、误差类型:1.绝对误差:绝对误差是计算结果与实际值之间的差异的绝对值。

它反映了计算的精确度,通常以相应物理量的单位来表示。

2.相对误差:相对误差是绝对误差与实际值之比。

它描述了计算结果与实际值之间的相对差异,常以百分比或小数形式表示。

3.舍入误差:舍入误差是由于对计算结果进行舍入或截断而引入的误差。

在计算机中,由于数值的有限表示能力,舍入误差是不可避免的。

4.截断误差:截断误差是指使用近似方法或截断级数展开时引入的误差。

它是因为截断了无穷级数或近似了复杂的计算模型而产生的。

二、误差对结果的影响:误差的存在可能对计算结果产生重要影响,特别是在高精度要求的问题中。

小的误差可能会被放大,导致最终结果的明显偏离实际值。

误差还可能导致不稳定性,使计算过程变得不可靠。

三、处理和减小误差的方法:1.提高测量精度:通过使用更精确的测量设备或方法,可以减小测量误差,并提高计算结果的准确性。

2.优化算法和近似方法:选择合适的算法和近似方法,可以减小截断误差和舍入误差。

例如,使用更高阶的数值方法可以提高计算精度。

3.错误传播分析:对于复杂的计算问题,通过误差传播分析可以评估误差在计算过程中的传播情况,从而预测结果的误差范围。

4.数值稳定性分析:在涉及数值计算的问题中,进行数值稳定性分析可以确定潜在的数值不稳定性和误差放大的情况,并采取相应的措施来减小误差。

5.合理选择计算精度:根据问题的要求和计算资源的限制,选择合适的计算精度。

过高的计算精度可能导致不必要的计算开销,而过低的计算精度可能引入较大的误差。

3_舍入误差分析及数值稳定性

3_舍入误差分析及数值稳定性


c a a b p 1 23 p 1 23 x , ,a 2 ) 用 a 表示 [a 2 2 2
记为: a fl ( x )
实 数 x 在 机 器 中 的 浮 点 (float)表 示 记 为 fl (x ) . 将 由 此 将 表 示 产 生 的 误 差 fl ( x ) x 称 之 为 舍 入 误 差 .
下限
-127
2 2 128
s 7
不区分正零和负零
区分正零和负零
上限
127
下限
-128
上限
127
区分正零和负零
一 般 地
不区分正零和负零 下限 上限
下限
上限
( 2 1)
s
2 1
s
2
s
2 1
s
August 6, 2012
yfnie@
3
4) Overflow
二进制阶数上限 2 1 ,那么表示数的绝对值的上限为:
•当|x|>>1时
x 1 x 1 x 1 x
ln( x
x 1 ) ln( x
2
x 1)
2
•当|x|<<1时
1 1 x
相对误差 e r :
*
e
* r

fl ( x ) x fl ( x )

2
p 1 23
2
p 1
2
23
10
6 . 923
(
1 2
10
6 . 623
)
单 精 度 实 数 fl (x ) 能 够 有 6~7 位 有 效 数 字 .

数值计算方法马东升等第 版习题解答

数值计算方法马东升等第 版习题解答

第1章 数值计算引论1.1 内容提要一、误差的来源数值计算主要研究以下两类误差。

1. 截断误差数学模型的准确解与用数值方法求得的解的差称为截断误差,又称为方法误差。

这种误差常常是由用有限过程代替无穷过程时产生的误差。

例如,要计算级数∑∞==+++++1!1!1!31!211k k n的值,当用计算机计算时,用前n 项(有限项)的和∑==+++++nk k n 1!1!1!31!211来代替无穷项之和,即舍弃了n 项后边的无穷多项,因而产生了截断误差∑∞+=1!1n k k2. 舍入误差由于计算机字长为有限位,原始数据和四则运算过程中进行舍入所产生的误差称为舍入误差。

例如,用3.141 59表示圆周率π时产生的误差0.000 002 6…,用0.333 33表示1÷3的运算结果时所产生的误差1÷3-0.333 33 = 0.000 003 3…都是舍入误差。

二.近似数的误差表示1. 绝对误差设x *是准值x 的一个近似值,称**)(x x x e -=为近似值x *的绝对误差,简称误差。

令|)(|*x e 的一个上界为*ε,即***|||)(|ε≤-=x x x e把*ε称为近似数*x 的绝对误差限,简称误差限。

2. 相对误差设*x 是精确值x 的一个近似值,称xx x xx e **)(-=为近似值x *的相对误差。

在实际应用中常取***)(xx x x e r -=为*x 的相对误差。

令相对误差绝对值 |)(|*x e r 的一个上界为ε*r,即 ****|||||)(|r r x x x x e ε≤-=把ε*r称为近似数*x 的相对误差限。

3. 有效数字对有多位数字的准确值四舍五入原则得到其前若干位的近似值时,该近似值的绝对误差不超过末位的半个单位。

设数x 的近似值m n x x x x 10.021*⨯±= ,其中,i x 是0~9之间的任一个数,但i x ≠0,n i ,2,1=是正整数,m 是整数,若nm x x -⨯≤-1021||*则称*x 为x 的具有n 位有效数字的近似值,*x 准确到第n 位,n x x x ,,,21 是*x 的有效数字。

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

⎰⎰⎰
=<=+<=10101
0205
/140^*5/1)5/(40^x 40^x *6/1dx x x dx 182322
.05ln 6ln 5/11
≈-=+⎰dx x )(⎰+1
0)5/(^dx
x n x 实验报告名称 舍入误差和数值稳定性 班级: 学号: 姓名: 成绩:
1实验目的
1)通过上机编程,复习巩固以前所学程序设计语言及上机操作指令;
2)通过上机计算,了解舍入误差所引起的数值不稳定性。

2 实验内容
对n=0,1,2,3,......,40计算定积分 3实验步骤 算法一 利用递推公式
yn=1/n-5yn-1 n=1,2,3,...,40
取y0= 算法二 利用递推公式
yn-1=1/5n-1/5yn n=40,39.....,1
注意到 1/246=
取y40≈1/2*(1/205+1/246)≈0.0044715 4 程序设计
算法一的c 语言程序:
/*数值不稳定算法*/
#include<stdio.h>
#include<math.h>
void main()
{
double y0=log(6.0/5.0),y1;
int n=1;
printf("y[0]=%-20f",y0);
while(1)
{
y1=1.0/n-5*y0;
printf("y[%d]=%-20f",n,y1);
if(n>=40)break;
y0=y1;
n++;
if(n%3==0)printf("\n");
}
}
算法二的c语言程序
#include<stdio.h>
#include<math.h>
void main()
{
double y0=(1/205.0+1/246.0)/2,y1;
int n=40;
printf("y[40]=%-20f",y0);
while(1)
{
y1=1/(5.0*n)-y0/5.0;
printf("y[%d]=%-20f",n-1,y1);
if(n<=1)break;
y0=y1;
n--;
if(n%3==0)printf("\n");
}
}
5实验结果及分析算法1的输出结果:
算法2的输出结果:
实验分析:从计算结果可以看出,算法一是数值不稳定的,而算法二是数值稳定的。

6总结
通过这次上机,学习了解了舍入误差在不同算法时对结果的影响不同,稳定的算法才能获得正确的结果。

7参考资料
【1】孙志忠,吴宏伟,袁慰平,闻震初,计算方法与实习.第四版.南京:东南大学出版社【2】谭浩强.C程序设计.第四版.北京:清华大学出版社。

相关文档
最新文档