1数值计算方法1解析
数值计算方法和应用
数值计算方法和应用数值计算方法是指将数学问题转化为计算机程序来求解的一种方法。
随着计算机技术的不断发展,数值计算方法已经成为解决各种实际问题的重要手段。
在这篇文章中,我们将介绍数值计算方法的基础知识和应用。
一、基础知识1.1 数值解数值解是指通过数值计算方法得到的近似解。
对于某些复杂的数学问题,很难得到精确解,这时就需要采用数值计算方法来求解。
数值解的精度取决于算法本身的精度以及所使用的计算机的精度。
1.2 常用数值计算方法常用的数值计算方法包括求解方程、插值和拟合、微积分等。
其中,求解方程是数值计算方法中应用最广泛的一种方法。
通过数值计算方法求解方程的思路是将方程转化为一个数值逼近问题,然后采用数值计算方法求解出近似解。
插值和拟合是另外一种常用的数值计算方法,它们主要用于分析和处理实验数据,用来预测未知变量的值。
1.3 数值稳定性在进行数值计算时,数值稳定性是非常重要的一方面。
数值稳定性指的是计算结果受到输入数据误差的影响程度。
如果计算结果对输入数据的微小变化非常敏感,那么该算法就是不稳定的。
否则,该算法就是稳定的。
在选择数值计算方法时,需要考虑计算结果的稳定性。
二、应用2.1 工程计算数值计算方法在工程计算中也得到了广泛的应用。
工程计算包括结构分析、流体力学等领域。
在这些领域中,需要对各种物理现象进行数值模拟和分析。
利用数值计算方法可以得到复杂系统的数值解,帮助工程师掌握系统的性能和行为规律,做出正确的决策。
2.2 金融计算金融计算是另外一种需要应用数值计算方法的领域。
金融计算通常涉及大量的金融数据,例如股票价格、汇率等。
利用数值计算方法可以对这些数据进行分析,预测未来的价格趋势,提高投资的成功率。
2.3 数据科学数据科学是近年来兴起的一种新兴领域。
数据科学利用大数据分析技术,对各种数据进行分析,预测未来的趋势,挖掘出隐藏在数据背后的信息。
数值计算方法是数据科学中最基础的方法之一,无论是数据采集、数据处理还是数据分析,都需要通过数值计算方法得到精确的数据结果。
数值方法和解析方法
数值方法和解析方法数值方法和解析方法是数学中常用的两种求解问题的方法。
它们分别适用于不同类型的问题,有着各自的优势和局限性。
本文将介绍数值方法和解析方法的基本概念、特点和应用领域,并比较它们之间的差异。
一、数值方法数值方法是通过近似计算来求解数学问题的方法。
它基于一系列数值计算的步骤和算法,通过迭代逼近的方式得到问题的数值解。
数值方法的特点是通过有限的计算步骤来逼近问题的解,因此可以处理复杂的问题,并且在实际应用中具有较高的效率和精度。
数值方法的应用领域非常广泛,例如在求解微分方程、积分、线性方程组、优化问题等方面有着重要的应用。
由于数值方法是通过逼近求解问题,所以在一些情况下可能会引入误差,因此在使用数值方法时需要注意误差控制和精度要求。
二、解析方法解析方法是通过推导和求解数学方程式来得到问题的解的方法。
它基于数学分析和推理,通过符号计算的方式得到问题的解析解。
解析方法的特点是通过数学公式和推导来得到问题的解,因此可以给出精确的解析解。
解析方法的应用范围主要包括代数方程、微分方程、积分、概率统计等方面。
解析方法在一些简单和规则的问题中有着明显的优势,可以给出精确的解析解。
然而,解析方法并不适用于所有问题,对于复杂和非线性的问题,往往需要借助于数值方法来求解。
三、数值方法与解析方法的比较数值方法和解析方法各有优劣,具体选择哪种方法要根据问题的性质和要求来决定。
1. 精度要求:解析方法可以给出精确的解析解,而数值方法是通过逼近求解,会引入一定的误差。
因此,在对精度要求较高的问题中,解析方法更为适用。
2. 复杂度:数值方法适用于处理复杂的问题,例如非线性方程组、多维积分等,而解析方法在处理简单和规则的问题时更为高效。
3. 可行性:对于一些无法直接求解的问题,例如无法用解析方法求解的积分或微分方程,数值方法是唯一可行的选择。
4. 可视化:解析方法可以给出解析解的表达式,便于理解和可视化;而数值方法只能给出数值解,难以直观地理解问题。
计算方法(1)-数值计算中的误差
* r
(
x)
1)乘方运算结果的相对误差增大为原值 x的p倍,降低精度.
2)开方运算结果的相对误差缩小为原值
x的1/q倍,精度得到提高.
三.算例的误差分析
x
3
2 2
1 1
24
§6 算法的数值稳定性
一.算法稳定性的概念
凡一种算法的计算结果受舍入误差的影 响小者称它为数值稳定的算法.
例4 解方程 x2 (109 1)x 109 0
方程精确解: x1 10 9 , x2 1
利用求根公式
x1,2
b
b2 4ac 2a
x1 10 9 , x2 0
25
当多个数在计算机中相加时,最好从
绝对值最小的数到绝对值最大的数依次相
加,可使和的误差减小.
二.算法的改进
2 2
1 1
3
计算结 果
2 7/5
2 17 /12
1 ( 2 1)6
2 6
0.0040960
5
6
0.00523278
5
12
2 99 70 2
1
1 0.16666667
6
3
6
1
5
6
0.00523278
12 6
计算方法
1
第一章 数值计算中的误差
§1 引言 §2 误差的种类及其来源 §3 绝对误差和相对误差 §4 有效数字及其与误差的关系 §5 误差的传播与估计 §6 算法的数值稳定性
数值计算方法
数值计算方法数值计算方法是一种通过使用数字和计算机来解决数学问题的方法。
它使用数值近似和算法来处理复杂的数学运算,从而帮助人们在实际应用中获得准确和可靠的结果。
在本文中,我将介绍数值计算方法的基本原理、常见的数值计算方法以及其在不同领域的应用。
一、基本原理数值计算方法的基本原理是将复杂的数学问题转化为简单的数值近似。
当我们遇到无法直接求解的数学问题时,我们可以通过逼近、插值、数值积分等方法来找到问题的近似解。
这些方法依赖于数值计算的基本运算,如加法、减法、乘法和除法,以及根据需要进行的其他运算,如开方、求幂、对数等。
二、常见的数值计算方法1. 逼近法:逼近法是一种通过构造一系列逼近值来找到待求解问题的近似解的方法。
常见的逼近法包括线性逼近、多项式逼近和三角函数逼近等。
2. 插值法:插值法是通过已知数据点来推断未知数据点的数值的方法。
最常见的插值法是拉格朗日插值和牛顿插值。
3. 数值积分:数值积分是通过将定积分转化为求和的形式来计算复杂的积分问题的方法。
常见的数值积分方法包括矩形法、梯形法和辛普森法等。
4. 方程求解:方程求解是通过数值计算方法来找到方程的根的方法。
常见的方程求解方法包括二分法、牛顿迭代法和割线法等。
5. 数值微分:数值微分是通过数值计算方法来近似计算函数的导数的方法。
最常见的数值微分方法是中心差分法和前向差分法。
三、数值计算方法的应用数值计算方法在多个领域都有广泛的应用。
以下是数值计算方法在一些领域的应用示例:1. 物理学:数值计算方法在物理学中常用于解决运动、电磁场、量子力学等问题。
通过数值模拟和计算,可以得到粒子的轨迹、电场分布和能级结构等重要信息。
2. 工程学:数值计算方法在工程学中广泛应用于结构分析、流体力学、电路设计等领域。
通过数值模拟和计算,可以预测材料的强度、流体的流动特性和电路的性能等。
3. 经济学:数值计算方法在经济学中用于解决成本、收益、市场供需等问题。
通过数值模拟和计算,可以预测经济指标的变化趋势和决策的效果。
第一章数值计算方法与误差分析分析
控制误差传播的例子
例10 计算积分 In=∫01 xn ex-1dx,n=0,1, 2, … , 9 利用分部积分法,可得 In= xn ex-1| 01 –∫01 ex-1dxn
=1– n∫01 xn-1 ex-1dx =1– nIn-1
从而有递推公式
I0= ∫01 ex-1dx= ex-1 | 01 = 1-e-1 ≈0.6321 In= 1– nIn-1 (n=0, 1, 2, … , 9)
所谓算法,是指对一些数据按某种规定的顺序 进行的运算序列。在实际计算中,对于同一问题我 们选用不同的算法, 所得结果的精度往往大不相同。 这是因为初始数据的误差或计算中的舍入误差在计 算过程中的传播,因算法不同而异,于是就产生了 算法的数值稳定性问题。一个算法, 如果计算结果 受误差的影响小,就称这个算法具有较好的数值稳 定性。否则,就称这个算法的数值稳定性不好。
简化计算步骤、减少运算次数、避免误差积累的例子
又如计算
1/(1*2)+1/(2*3)+…+1/(1000*1001)
的值。 若一项一项进行计算,不仅计算次数多,而 且误差积累也很大。若简化成 1-1/1001 进行计 算,则整个计算只要一次求倒数和一次减法。
(四)要避免绝对值小的数作除数
由式 ε(x1/x2)≈d(x1/x2)≈[x2ε(x1)-x1ε(x2)]/ x22 , (x2≠0) 可知,当除数x2接近于零时,商的绝对误差就可能很大。因此 , 在数值计算中要尽量避免绝对值小的数作除数, 避免的方法是把 算式变形或改变计算顺序。 例8 当x接近于0时 (1-cosx)/sinx 的分子、分母都接近0,为避免绝对值小的数作除数,可将原式 化为 (1-cosx)/sinx=sinx/(1+cosx) 例9 当x 很大时,可化 x/[(x+1)0.5-x0.5]=x[(x+1)0.5 + x0.5]
数值计算方法1_误差
0 绪论
评分标准 考试
60%
作业 出勤
30%
10%
1.1 误差 – 来源
误差来源
原始误差-模型误差(忽略次要因素,如空气阻力)物理模型 ,数学模型 观测误差-获取模型参数的观测或实验过程中带来的误差 方法误差-截断误差(算法本身引起) 计算误差-舍入误差(计算机表示数据引起)
1.1 误差 – 来源
模型 长乘以宽
求面积
测量
尺子
近似 表达
虚线
取值
四舍五入
1.2 误差 – 分类
绝对误差
* 设 x* 为精确值, x 为近似值,e x x 为误差或绝对误差
例如:f ( x ) ln(x 1) 作Taylor展开,
(1)i 1 i (1) n x n 1 , 0 1 x n1 i (n 1)(1x) i1
方法二:
取前5项,截断误差已经小于10-5 。
1.5 误差 – 避免两个相近的数相减
方法一:
方法二:
1.6 误差 – 避免除数绝对值远小于被除数绝对值
除数减小,绝对误差增大
1.7 误差 – 防止大数吃小数 求根
1.7 误差 – 防止大数吃小数
如果用8位数计算机:
正确结果: 错误结果:
1.8 误差 – 尽量采用数值稳定性好的方法
方法一:迭代 正向计算
方法二:取中数 反向计算
1.8 误差 – 尽量采用数值稳定性好的方法
为 什 么 ?
Hale Waihona Puke 1.8 误差 – 尽量采用数值稳定性好的方法
方法一:迭代
方法二:取中数 反向计算
反向计算误差传播降低,方法一可否反向计算?
数值计算方法总结.
运算量
1 1 分解A LR需 (n3 n)次, 解Ly b需 (n 2 n)次, 3 2 1 2 n3 n 解Rx y需 (n n)次, 共N n 2 2 3 3
第2章 解线性代数方程的直接法
2.2 三角分解法 2.2.2 克洛特分解法
对A进行杜里特尔分解时, A=LR, L为单位下三角阵, R为上三角阵
1i n j 1
2
( AT A), 称为谱范数
第2章 解线性代数方程的直接法
2.3 舍入误差对解的影响 2.3.1 向量和矩阵的范数
这些系数的绝对值称为求y问题的条件数,其值很大时的问题 称为坏条件问题或病态问题
凡是计算结果接近于零的问题往往是病态问题。
应避免相近数相减,小除数和大乘数
第1章 数值计算方法的一般概念
1.2.3 数据误差影响的估计
由误差估计式(1 1)可知 (x1 x2 ) x1 x2 x1 x2 (x1 x2 ) x x x1 x x x2 1 2 1 2 (x1 x2 ) x2 x1 x1x2 (x1 x2 ) x1 x2 x1 x1 x1 ( ) 2 x 2 x x2 x2 2 ( x1 ) x x 1 2 x 2
2.[回代] 按相反顺序求解上三角形方程组,得到方程组的解
第一步得到xn ,第二步得到xn1,...,第n步得到x1
将方程组写成增广矩阵的形式,将有利于计算机实现
A A b
第2章 解线性代数方程的直接法
2.1 高斯消去法 2.1.2 运算量估计 高斯消去法运算量估计 1.消去算法运算量
第1章 数值计算方法的一般概念
1.2.3 数据误差影响的估计
数值计算方法
数值计算方法数值计算方法是指通过数值运算来解决数学问题的一种方法。
数值计算方法在现代科学与工程领域中广泛应用,例如在数值模拟、数据分析、优化问题等方面都扮演着重要的角色。
本文将介绍数值计算方法的一些基本概念与常见算法。
数值计算方法的基本概念包括数值逼近、插值与数值积分。
数值逼近是指通过数值运算得到对某个数值的逼近值。
例如,我们可以用泰勒级数展开来逼近某个函数的值。
插值是指通过已知点的数值来求解未知点的数值。
常见的插值方法有线性插值、拉格朗日插值等。
数值积分是指通过数值运算来求解某个函数的积分值。
蒙特卡洛积分和数值求积公式是常用的数值积分方法。
数值计算方法中常用的算法有迭代法、分治法和优化方法等。
迭代法是一种通过不断逼近的方法来求解某个问题的算法。
例如,牛顿迭代法可以用来求解非线性方程的根。
分治法是指将一个大问题分割成多个小问题来求解的方法。
例如,快速排序算法就是一种基于分治思想的排序算法。
优化方法是一种通过寻找最优解的方法来求解某个问题的算法。
例如,梯度下降法可以用来求解无约束优化问题。
数值计算方法在实际应用中需要考虑到数值稳定性与计算效率。
数值稳定性是指算法在数值计算过程中的误差控制能力。
例如,矩阵求逆过程中的舍入误差会对结果造成较大影响,需要通过数值稳定的算法来减小误差。
计算效率是指算法在计算过程中所需的时间与空间。
例如,矩阵乘法的传统算法的时间复杂度为O(n^3),而通过Strassen算法可以将时间复杂度减小为O(n^log2^7)。
因此,在实际应用中需要选择合适的算法来平衡数值稳定性与计算效率的要求。
在数值计算方法中,误差分析是一项重要的工作。
误差分析是指通过数学分析来分析与评估数值计算的误差。
例如,可以通过泰勒级数的余项来估计数值逼近的误差。
误差分析有助于理解数值计算算法的准确性与可靠性,并帮助我们选择合适的算法以及确定适当的计算精度。
总之,数值计算方法是一种通过数值运算来解决数学问题的方法。
数值计算方法实验1
学院(系)名称:)()()()(0101112x x x f x f x f x x ---=附录(源程序及运行结果):一.二分法#include<stdio.h>#include<math.h>double f(double x){return x*x-x-1;}void main(){float a=0,b=0,x=1,m,e;int k;while(f(a)*f(b)>0){printf("请输入区间a,b的值。
以及精度e\n");scanf("%f,%f,%f",&a,&b,&e);}k=0;if(f(a)*f(b)==0){if(f(a)==0)printf("使用二分法输出:a=%f,k=%d\n",a,k);elseprintf("使用二分法输出:b=%f,k=%d\n",b,k);}else{while(f(a)*f(b)!=0){m=(a+b)/2;if(fabs(a-b)/2<e){printf("使用二分法输出:m=%f,k=%d\n",m,k);break;}else {if(f(a)*f(m)>0)a=m;else b=m;k=k+1;}}}}运行结果:二.迭代法与牛顿迭代法#include<stdio.h>#include<math.h>double f(double x){return exp(-x);}double f1(double x){return (x*exp(x)-1);}double ff(double x){return (exp(x)+x*exp(x));}void diedaifa(double x0,double e,int N){double x1;int k=1;while(k!=N){x1=f(x0);if(fabs(x1-x0)>=e){k++;if(k==N)printf("迭代失败!\n");x0=x1;}else{printf("使用迭代法输出结果:%lf\n",x1);break;}}}void NDdiedaifa(double x0,double e,int N){int k=1;double x1;while(k!=N){if(ff(x0)==0)printf("公式f(x)奇异!\n");else{x1=x0-f1(x0)/ff(x0);if(fabs(x1-x0)>=e){k++;if(k==N)printf("迭代失败!\n");x0=x1;}else{printf("使用牛顿迭代法输出结果:%lf\n",x1);break;}}}}void main(){double x0,e;int N;printf("请输入初值:");scanf("%lf",&x0);printf("精度:");scanf("%lf",&e);printf("以及判定迭代失败的最大次数N:");scanf("%d",&N);diedaifa(x0,e,N);NDdiedaifa(x0,e,N);}运行结果:四.双点弦截法#include<stdio.h>#include<math.h>double f(double x){return (x*x*x+3*x*x-x-9);}void main(){double x0,x1,x2,e;int N;int k=1;printf("请输入初值x0和x1:");scanf("%lf,%lf",&x0,&x1);printf("精度:");scanf("%lf",&e);printf("以及判定迭代失败的最大次数N:");scanf("%d",&N);while(k!=N){x2=x1-f(x1)*(x1-x0)/(f(x1)-f(x0));if(fabs(f(x2))>=e){k++;if(k==N)printf("迭代失败!\n");x0=x1;x1=x2;}else{printf("使用双点弦截法输出结果:%lf\n",x2);break;}}}运行结果:。
数值计算方法matlab 第一章 误差分析
1 第一章作业1.对一个数求和100000次。
对数1以单精度方式求和,对数0.00001分别以单精度和双精度方式求和。
问题分析:单精度方式使用函数single(),双精度求和为matlab自动调整,不需要特别说明。
程序编写如下:运行结果:实验结果分析:不难看出,对于1进行单精度求和得到的结果和期望值一致,但是对0.00001进行单精度求和的结果却存在误差,对0.00001进行双进度求和,误差得到减小。
这是由于量化误差造成的,0.00001在计算机中并不能准确表示,只能对其进行量化处理,得到一个和真值有一点区别的量化值,小量计算中可以忽略,但在计算了100000后误差积累,导致了最后的结果误差较大。
双精度的情况下,该误差小得多。
当x=0.1时,从1x -开始,然后每次加入一项来分别计算。
在每加入一个新项后,计算近似百分比相对误差,直到近似误差估计值的绝对值小于与五位有效数字一致的误差准则时停止计算。
问题分析:本例中,要保证5位有效数字,因此容限误差为:256s (0.510)%510--ε=⨯=⨯近似百分比误差为: -100%a ε=⨯当前近似值前一近似值当前近似值真误差为:-100%ε=⨯真值近似值真值跳出循环的标准为:a |s |ε<ε程序编写如下:运行结果如下:3实验结果分析:实验结果表明,当计算到第6次时,近似误差就已经小于了容限值,循环结束。
随着添加多的项数,实际误差和近似误差都减小了,说明了计算精度在逐步提高。
我们可以通过改的值来调节所需要的计算精度。
变s。
数值计算方法
数值计算方法数值计算方法是一种通过使用数学算法和计算机技术,对数值问题进行近似求解的方法。
它广泛应用于科学、工程和金融等领域,是现代科学研究和工程设计中不可或缺的工具。
本文将介绍数值计算方法的基本概念和原理,以及一些常用的数值计算方法和其在实际问题中的应用。
一、基本概念和原理1.1 数值计算方法的定义数值计算方法是一种使用数学模型和计算机算法来求解数值问题的方法。
它的基本思想是将实际问题转化为数学模型,并通过数学算法进行近似求解。
数值计算方法包括数值逼近、数值微积分、数值代数、数值方程求解等多个方面。
1.2 数值计算方法的原理数值计算方法的原理是通过将连续的实际问题转化为离散的数学问题,然后利用数值算法对离散问题进行求解。
它的基本步骤包括问题建模、离散化、数值计算和求解结果的评估。
数值计算方法的关键在于选择合适的离散方法和数值算法,并进行适当的误差分析。
二、常用的2.1 数值逼近方法数值逼近方法是一种通过使用逼近函数来近似求解函数值的方法。
常用的数值逼近方法包括插值法、拟合法和最小二乘法等。
插值法通过已知函数值来估计其他点上的函数值,拟合法通过拟合函数来逼近实际数据,最小二乘法通过最小化误差平方和来确定拟合函数的系数。
2.2 数值微积分方法数值微积分方法是一种通过数值近似计算函数的导数和积分的方法。
常用的数值微积分方法包括数值微分和数值积分。
数值微分通过差分近似计算函数的导数,数值积分通过数值近似计算函数的定积分。
数值微积分方法在科学计算和工程设计中广泛应用,如求解微分方程、优化问题等。
2.3 数值代数方法数值代数方法是一种通过数值计算近似解线性代数方程组的方法。
常用的数值代数方法包括直接方法和迭代法。
直接方法通过高斯消元法等精确求解线性方程组,迭代法通过迭代逼近的方式求解线性方程组。
数值代数方法广泛应用于科学计算和工程设计中的矩阵计算和线性方程组求解等问题。
2.4 数值方程求解方法数值方程求解方法是一种通过数值计算近似求解非线性方程的方法。
数值计算方法
数值计算方法数值计算方法,是指通过数值代数和解析几何的思想和方法,利用计算机技术进行数学计算和问题求解的方法。
它在科学计算、工程技术、金融统计等领域都有广泛应用。
本文将介绍数值计算方法的基本原理和常用技术,以及其在实际问题中的应用。
一、基本原理数值计算方法的基本原理是将连续问题离散化,然后通过数值逼近来求解。
离散化是将整个问题分割成一系列的小问题,求解这些小问题,最后再将结果组合起来得到整体的解。
数值逼近是指我们通过一系列数值计算来逼近问题的精确解,以达到预期的计算精度。
二、常用技术1. 插值法插值法是指根据已知数据点的函数值,通过构造一个插值函数来估计中间点的函数值。
常用的插值方法有拉格朗日插值法和牛顿插值法。
拉格朗日插值法是通过构造一个多项式,使其经过已知数据点,然后利用该多项式来求解中间点的函数值。
牛顿插值法是通过构造一个差商表,然后利用差商表来计算中间点的函数值。
2. 数值积分数值积分是指通过数值方法来计算函数的定积分。
常用的数值积分方法有梯形法则、辛普森法则和龙贝格法则。
梯形法则是将函数的积分区间分割成若干个小区间,然后用每个小区间的梯形面积来逼近函数的积分。
辛普森法则是将函数的积分区间分割成若干个小区间,然后用每个小区间的曲线面积来逼近函数的积分。
龙贝格法则是通过不断加密求解区间,然后通过龙贝格加法将不同精度的近似值进行组合,从而得到更高精度的积分结果。
3. 数值微分数值微分是指通过数值方法来计算函数的导数。
常用的数值微分方法有有限差分法和牛顿差商法。
有限差分法是通过计算函数在一些离散点上的差分值,然后用差分值逼近函数的导数。
牛顿差商法是通过构造差商表,然后利用差商从而计算函数的导数。
4. 方程求解方程求解是指通过数值方法来求解非线性方程或线性方程组的根。
常用的方程求解方法有二分法、牛顿迭代法和高斯消元法。
二分法是通过不断将区间分成两部分,然后根据函数值的符号变化来确定方程的根。
牛顿迭代法是通过在初值附近进行迭代,根据切线与横坐标轴的交点来逼近根。
《数值计算方法》实验 (1)
电子科技大学《数值计算方法》
实
验
报
告
输入6,1;0,1,21i i n a b i i n ===+=−" 结果得f=1.718263
输入10,1;0,1,21i i n a b i i n ===+=−" 结果得f=1.718282
输入100,1;0,1,21i i n a b i i n ===+=−" 结果得f=1.718282
从中计算结果看随n 增大迭代计算结果逐渐稳定,可认为出现此现象有两种情况一是对该输入序列a,b 用此迭代公式随序列増长会逐渐逼近一个稳定值,二是在迭代计算过程中产生大数“吃掉”小数现象且计算结果只取7为有效数字。
3. 实验结论
在计算机内做加法运算时,首先要对加数作对阶处理,加之计算机字长有限,因尽量避免出现大数吃小数现象,计算时要注意运算次序,否则会影响结果的可靠性。
报告评分:
指导教师签字:。
数值计算方法1
数值计算方法1数值计算方法1解线性方程组的数值方法是数学计算中的重要内容之一,而数值解算法的选择对于解方程组的准确性和效率有着决定性的影响。
本章将介绍一些常用的数值解线性方程组的方法,包括高斯消元法、LU分解法、雅可比迭代法、高斯-赛德尔迭代法和迭代法加速技术。
1.高斯消元法是最常用的求解线性方程组的数值方法之一、它通过一系列的行变换将方程组转化为三角形形式的方程组,再逐步回代求解出未知量。
高斯消元法的关键步骤包括选择主元、行变换、回代等。
该方法适用于系数矩阵为非奇异矩阵的方程组。
2.LU分解法是一种将线性方程组的系数矩阵分解为一个下三角矩阵和一个上三角矩阵的方法。
通过先对系数矩阵进行LU分解,再进行前代和回代,可以求解出线性方程组的解。
与高斯消元法相比,LU分解法可以在求解多个右端向量相同的线性方程组时节省计算量。
3.雅可比迭代法是一种迭代求解线性方程组的方法。
它通过不断迭代计算来逼近方程组的解。
雅可比迭代法的基本思想是将线性方程组的系数矩阵分解为主对角线矩阵和剩余部分,再通过迭代计算来逼近解。
雅可比迭代法收敛速度较慢,适用于系数矩阵的特征值分布良好的方程组。
4.高斯-赛德尔迭代法是雅可比迭代法的改进方法,通过利用更新的未知量来加速收敛。
高斯-赛德尔迭代法在每次迭代时都使用最新计算出的未知量值,相较于雅可比迭代法,它的收敛速度更快。
5.迭代法加速技术是一种进一步加速迭代求解的方法。
其中常用的包括超松弛法和共轭梯度法。
超松弛法在每次迭代中引入一个参数来加速收敛,而共轭梯度法则通过利用方程组的特性来通过有限次数的迭代达到精确解。
总结来说,解线性方程组的数值方法包括高斯消元法、LU分解法、雅可比迭代法、高斯-赛德尔迭代法和迭代法加速技术等。
选择合适的方法来求解线性方程组可以提高计算的准确性和效率,这是数值计算中必不可少的内容。
数值计算方法
数值计算方法数值计算方法是一种通过数学模型和计算机算法来解决实际问题的方法。
它包括了数值分析、数值逼近、数值代数、数值微分方程等多个领域。
数值计算方法在科学工程领域有着广泛的应用,例如在物理学、化学、生物学、经济学和工程学等领域都有着重要的地位。
本文将介绍数值计算方法的基本原理和常用技术,并探讨其在实际问题中的应用。
一、数值计算方法的基本原理。
数值计算方法的基本原理是将实际问题转化为数学模型,然后通过计算机算法来求解这个数学模型。
在实际问题中,往往会遇到一些复杂的方程或者函数,无法通过解析方法求解。
这时就需要借助数值计算方法来进行近似求解。
数值计算方法主要包括了离散化、逼近和求解三个步骤。
1. 离散化。
离散化是将连续的问题转化为离散的问题。
在实际问题中,往往会遇到一些连续的函数或者方程,无法直接求解。
这时就需要将连续的问题转化为离散的问题,然后通过计算机算法来求解。
离散化的方法有很多种,比如有限差分法、有限元法、谱方法等。
2. 逼近。
逼近是指通过一些简单的函数或者多项式来近似表示复杂的函数或者方程。
在实际问题中,往往会遇到一些复杂的函数或者方程,无法直接求解。
这时就需要通过逼近的方法来近似表示这个函数或者方程,然后通过计算机算法来求解。
逼近的方法有很多种,比如插值法、拟合法、最小二乘法等。
3. 求解。
求解是指通过计算机算法来求解离散化的问题或者逼近的问题。
在实际问题中,往往会遇到一些复杂的离散化问题或者逼近问题,无法直接求解。
这时就需要通过计算机算法来求解这个离散化问题或者逼近问题。
求解的方法有很多种,比如迭代法、直接法、迭代法等。
二、数值计算方法的常用技术。
数值计算方法有很多种常用技术,下面将介绍一些常用的技术。
1. 有限差分法。
有限差分法是一种常用的离散化方法,它将微分方程转化为差分方程,然后通过计算机算法来求解。
有限差分法的基本思想是将函数在一些离散点上进行逼近,然后通过差分近似来求解微分方程。
数值计算方法第一章
数值计算方法第一章(总12页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--2第一章 绪 论本章以误差为主线,介绍了计算方法课程的特点,并概略描述了与算法相关的基本概念,如收敛性、稳定性,其次给出了误差的度量方法以及误差的传播规律,最后,结合数值实验指出了算法设计时应注意的问题.§ 引 言计算方法以科学与工程等领域所建立的数学模型为求解对象,目的是在有限的时间段内利用有限的计算工具计算出模型的有效解答。
由于科学与工程问题的多样性和复杂性,所建立的数学模型也是各种各样的、复杂的. 复杂性表现在如下几个方面:求解系统的规模很大,多种因素之间的非线性耦合,海量的数据处理等等,这样就使得在其它课程中学到的分析求解方法因计算量庞大而不能得到计算结果,且更多的复杂数学模型没有分析求解方法. 这门课程则是针对从各种各样的数学模型中抽象出或转化出的典型问题,介绍有效的串行求解算法,它们包括(1) 非线性方程的近似求解方法; (2) 线性代数方程组的求解方法;(3) 函数的插值近似和数据的拟合近似; (4) 积分和微分的近似计算方法; (5) 常微分方程初值问题的数值解法; (6) 优化问题的近似解法;等等从如上内容可以看出,计算方法的显着特点之一是“近似”. 之所以要进行近似计算,这与我们使用的工具、追求的目标、以及参与计算的数据来源等因素有关.计算机只能处理有限数据,只能区分、存储有限信息,而实数包含有无穷多个数据,这样,当把原始数据、中间数据、以及最终计算结果用机器数表示时就不可避免的引入了误差,称之为舍入误差.我们需要在有限的时间段内得到运算结果,就需要将无穷的计算过程截断,从而产生截断误差. 如 +++=!21!111e 的计算是无穷过程,当用!1!21!111n e n ++++= 作为e 的近似时,则需要进行有限过程的计算,但产生了截断误差e e n -.3当用计算机计算n e 时,因为舍入误差的存在,我们也只能得到n e 的近似值*e ,也就是说最终用*e 近似e ,该近似值既包含有舍入误差,也包含有截断误差.当参与计算的原始数据是从仪器中观测得来时,也不可避免得有观测误差. 由于这些误差的大量存在,我们得到的只能是近似结果,进而对这些结果的“可靠性”进行分析就是必须的,它成为计算方法的第二个显着特点. 可靠性分析包括原问题的适定性和算法的收敛性、稳定性.所谓适定性问题是指解存在、惟一,且解对原始数据具有连续依赖性的问题. 对于非适定问题的求解,通常需要作特殊的预处理,然后才能做数值计算. 在这里,如无特殊说明,都是对适定的问题进行求解.对于给定的算法,若有限步内得不到精确解,则需研究其收敛性. 收敛性是研究当允许计算时间越来越长时,是否能够得到越来越可靠的结果,也就是研究截断误差是否能够趋于零.对于给定的算法,稳定性分析是指随着计算过程的逐步向前推进,研究观测误差、舍入误差对计算结果的影响是否很大.对于同一类模型问题的求解算法可能不止一种,常希望从中选出高效可靠的求解算法. 如我国南宋时期着名的数学家秦九韶就提出求n 次多项式0111a x a x a x a n n n n ++++-- 值的如下快速算法n a s =;k n a t -=;t sx s += ),,2,1(n k =它通过n 次乘法和n 次加法就计算出了任意n 次多项式的值. 再如幂函数64x 可以通过如下快速算法计算出其值x s =;s s s ⋅=;循环6次如上算法仅用了6次乘法运算,就得到运算结果.算法最终需要在计算机上运行相应程序,才能得到结果,这样就要关注算法的时间复杂度(计算机运行程序所需时间的度量)、空间复杂度(程序、数据对存储空间需求的度量)和逻辑复杂度(关联程序的开发周期、可维护性以及可扩展性). 事实上,每一种算法都有自己的局限性和优点,仅仅理论分析是很不够的,大量的实际计算也非常重要,结合理论分析以及相当的数值算例结果才有可能选择出适合自己关心问题的有效求解算法. 也正因如此,只有理论分析结合实际计算才能真正把握准算法.4§ 误差的度量与传播一、误差的度量误差的度量方式有绝对误差、相对误差和有效数字.定义 用*x 作为量x 的近似,则称)(:**x e x x =-为近似值*x 的绝对误差. 由于量x 的真值通常未知,所以绝对误差不能依据定义求得,但根据测量工具或计算情况,可以估计出绝对误差绝对值的一个较小上界ε,即有ε≤-=x x x e **)( 称正数ε为近似值*x 的绝对误差限,简称误差. 这样得到不等式εε+≤≤-**x x x工程中常用ε±=*x x表示近似值*x 的精度或真值x 所在的范围.误差是有量纲的,所以仅误差数值的大小不足以刻划近似的准确程度. 如量m m cm s μ50001230000005.023.15.0123±=±=±= 为此,我们需要引入相对误差定义 用0*≠x 作为量x 的近似,称)(:**x e xx x r =-为近似值*x 的相对误差. 当*x 是x 的较好近似时,也可以用如下公式计算相对误差***)(x x x x e r -=显然,相对误差是一个无量纲量,它不随使用单位变化. 如式中的量s 的近似,无论使用何种单位,它的相对误差都是同一个值.同样地,因为量x 的真值未知,我们需要引入近似值*x 的相对误差限)(*x r ε,它是相对误差绝对值的较小上界. 结合式和,*x 相对误差限可通过绝对误差限除以近似值的绝对值得到,即***)()(x x x r εε= 为给出近似数的一种表示法,使之既能表示其大小,又能体现其精确程度,需引入有效数字以及有效数的概念.定义 设量x 的近似值*x 有如下标准形式 p n m a a a a x 21*.010⨯±=()p m p n m n m m a a a a ----⨯++⨯++⨯+⨯±101010102211 =其中}9,,1,0{}{1 ⊂=p i i a 且01≠a ,m 为近似值的量级. 如果使不等式5n m x x -⨯≤-1021* 成立的最大整数为n ,则称近似值*x 具有n 位有效数字,它们分别是1a 、2a 、… 和 n a . 特别地,如果有p n =,即最后一位数字也是有效数字,则称*x 是有效数.从定义可以看出,近似数是有效数的充分必要条件是末位数字所在位置的单位一半是绝对误差限. 利用该定义也可以证明,对真值进行“四舍五入”得到的是有效数. 对于有效数,有效数字的位数等于从第一位非零数字开始算起,该近似数具有的位数. 注意,不能给有效数的末位之后随意添加零,否则就改变了它的精度.例 设量π=x ,其近似值141.3*1=x ,142.3*2=x ,722*3=x . 试回答这三个近似值分别有几位有效数字,它们是有效数吗 解 这三个近似值的量级1=m ,因为有312*110211021005.000059.0--⨯=⨯=≤=- x x 413*2102110210005.00004.0--⨯=⨯=≤=- x x 571428571428.3*3=x312*310211021005.0001.0--⨯=⨯=≤=- x x 所以*1x 和*3x 都有3位有效数字,但不是有效数. *2x 具有4位有效数字,是有效数.二、误差的传播这里仅介绍初值误差传播,即假设自变量带有误差,函数值的计算不引入新的误差. 对于函数),,,(21n x x x f y =有近似值),,,(**2*1*n x x x f y =,利用在点),,,(**2*1n x x x 处的泰勒公式(Taylor Formula),可以得到)(),,,()(*1**2*1**i i ni n i x x x x x f y y y e -≈-=∑= )(),,,(*1**2*1i ni n i x e x x x f ∑==其中ii x ff ∂∂=:,*i x 是i x 的近似值,)(*i x e 是*i x 的绝对误差),,2,1(n i =. 式表明函数值的绝对误差近似等于自变量绝对误差的线性组合,组合系数为相应的偏导数值.从式也可以推得如下函数值的相对误差传播近似计算公式6)(),,,()(***1**2*1*i r i ni ni r x e y x x x x f y e ∑=≈对于一元函数)(x f y =,从式和可得到如下初值误差传播近似计算公式)()()(***x e x f y e '≈)()()(*****x e yx x f y e r r '≈式表明,当导数值的绝对值很大时,即使自变量的绝对误差比较小,函数值的绝对误差也可能很大.例 试建立函数n n x x x x x x f y +++== 2121),,,(的绝对误差(限)、相对误差的近似传播公式,以及{}ni i x 1*0=>时的相对误差限传播公式.解 由公式和可分别推得和的绝对误差、相对误差传播公式如下∑∑==≈ni i ini ni x e x e x x x f y e 1**1**2*1*)()(),,,()(=∑∑==≈ni i r i i r i ni ni r x e yx x e y x x x x f y e 1******1**2*1*)()(),,,()(=进而有∑∑∑===≤≤≈ni in i in i ix x e x e y e 1*1*1**)()()()(ε于是有和的绝对误差限近似传播公式 ∑=≈ni i x y 1**)()(εε当{}ni i x 1*0=>时,由式推得相对误差限的近似传播公式)(max )(max )(max )()()(*11***11***11****1**i r ni ni i ir n i ni i i r n i ni i r i ni ir x yx x y x x x y x yxy εεεεεε≤≤=≤≤=≤≤====≤=≈∑∑∑∑例 使用足够长且最小刻度为1mm 的尺子,量得某桌面长的近似值3.1304*=a mm ,宽的近似值8.704*=b mm (数据的最后一位均为估计值). 试求桌子面积近似值的绝对误差限和相对误差限.解 长和宽的近似值的最后一位都是估计位,尺子的最小刻度是毫米,故有误差限5.0)(*=a εmm ,5.0)(*=b εmm面积ab S =,由式得到近似值***b a S =的绝对误差近似为)()()(*****b e a a e b S e +≈7进而有绝对误差限55.10045.03.13045.08.704)()()(*****=⨯+⨯=+≈b a a b S εεε mm 2 相对误差限 %11.00011.08.7043.130455.1004)()(***=≈⨯=≈S S S r εε§ 数值实验与算法性能比较本节通过几个简单算例说明解决同一个问题可以有不同的算法,但算法的性能并不完全相同,他们各自有自己的适用范围,并进而指出算法设计时应该注意的事项.算例 表达式)1(1111+=+-x x x x ,在计算过程中保留7位有效数字,研究对不同的x ,两种计算公式的计算精度的差异.说明1:Matlab 软件采用IEEE 规定的双精度浮点系统,即64位浮点系统,其中尾数占52位,阶码占10位,尾数以及阶码的符号各占1位. 机器数的相对误差限(机器精度)eps=2-52≈×10-16,能够表示的数的绝对值在区间×10-308,×10308)内,该区间内的数能够近似表达,但有舍入误差,能够保留至少15位有效数字. 其原理可参阅参考文献[2, 4].分析算法1: 111)(1+-=x x x y 和算法2: )1(1)(2+=x x x y 的误差时,精确解用双精度的计算结果代替. 我们选取点集301}{=i i π中的点作为x ,比较两种方法误差的差异.从图可以看出,当x 不是很大时,两种算法的精度相当,但当x 很大时算法2的精度明显高于算法1. 这是因为,当x 很大时,x 1和11+x 是相近数,用算法1进行计算时出现相近数相减,相同的有效数字相减后变成零,于是有效数字位数急剧减少,自然相对误差增大. 这一事实也可以从误差传播公式分析出. 鉴于此,算法设计时,应该避免相近数相减.在图中我们给出了当x 接近1-时,两种算法的精度比较,其中变量x 依次取为{}3011=--i i π. 从图中可以看出两种方法的相对误差基本上都为710-,因而二者的精度相当.8图 算例中两种算法的相对误差图(+∞→x )图 算例中两种算法的精度比较)1(-→x算例 试用不同位数的浮点数系统求解如下线性方程组⎩⎨⎧=+=+2321200001.02121x x x x 说明2:浮点数系统中的加减法在运算时,首先按较大的阶对齐,其次对尾数实施相应的加减法运算,最后规范化存入计算机.算法1 首先用第一个方程乘以适当的系数加至第二个方程,使得第二个方程的1x 的系数为零,这时可解出2x ;其次将2x 带入第一个方程,进而求得1x (在第三章中称该方法为高斯消元法). 当用4位和7位尾数的浮点运算实现该算法,分别记之为算法1a 和算法1b .9算法 2 首先交换两个方程的位置,其次按算法1计算未知数 (第三章中称其为选主元的高斯消元法). 当用4位和7位尾数的浮点运算实现该算法,分别记之为算法2a 和算法2b .方程组的精确解为...25000187.01=x ,...49999874.02=x ,用不同的算法计算出的结果见表.对于算例,表中的数据表明,当用4位尾数计算时,算法1给出错误的结果,算法2则给出解很好的近似. 这是因为在实现算法1时,需要给第一个方程乘以00001.0/2-加至第二个方程,从而削去第二个方程中1x 的系数,但在计算2x 的系数时需做如下运算661610000003.0104.0103.0104.03200001.02⨯⨯⨯⨯=+⨯+=-+--对上式用4位尾数进行计算,其结果为6104.0⨯-. 因为舍入误差,给相对较大的数加以相对较小的数时,出现大数“吃掉”小数的现象. 计算右端项时,需做如下运算661610000002.0102.0102.0102.02100001.02⨯⨯⨯⨯=+⨯+=-+--同样出现了大数吃小数现象,其结果为6102.0⨯-. 这样,得到的变形方程组⎩⎨⎧⨯-=⨯-⨯=⨯+⨯62612114102.0104.0101.0102.0101.0x x x 中没有原方程组中第二个方程的信息,因而其解远偏离于原方程组的解. 该算法中之所以出现较大数的原因是因为运算00001.0/2-,因而算法设计中尽可能避免用绝对值较大的数除以绝对值较小的数. 其实当分子的量级远远大于分母的量级时,除法运算还会导致溢出,计算机终止运行.虽从单纯的一步计算来看,大数吃掉小数,只是精度有所损失,但多次的大数吃小数,累计起来可能带来巨大的误差,甚至导致错误. 例如在算法1a 中出现了两次大数吃小数现象,带来严重的后果. 因而尽可能避免大数吃小数的出现在算法设计中也是非常必要的.10当用较多的尾数位数进行计算,舍入误差减小,算法1和2的结果都有所改善,算法1的改进幅度更大些.算例 计算积分⎰+=1055dx x x I n 有递推公式),2,1(511 =-=-n I nI n n ,已知56ln 0=I . 采用IEEE 双精度浮点数,分别用如下两种算法计算30I 的近似值.算法1 取0I 的近似值为6793950.18232155*0=I ,按递推公式*1*51--=n n I nI 计算*30I算法2 因为)139(5156)139(611039103939+⨯=<<=+⨯⎰⎰dx x I dx x ,取39I 的近似值为3333330.004583332001240121*39≈⎪⎭⎫ ⎝⎛+=I ,按递推公式⎪⎭⎫ ⎝⎛-=-**1151n n I n I 计算*30I算法1和算法2 的计算结果见表. 误差绝对值的对数图见图.图 算例用不同算法计算结果的误差绝对值的对数图 从表中的计算结果可以看出,算法1随着计算过程的推进,绝对误差几乎不断地以5的倍数增长,即有0*02*221*1*555I I I I I I I I n n n n n n n -≈≈-≈-≈-----成立. 对于逐步向前推进的算法,若随着过程的进行,相对误差在不断增长,导致产生不可靠的结果,这种算法称之为数值不稳定的算法. 对于算法1绝对误差按5的幂次增长,但真值的绝对值却在不断变小且小于1,相对误差增长的速度快于5的幂次,导致产生错误的结果,因而算法1数值不稳定,不能使用. 而算法2随着计算过程的推进,绝对误差几乎不断地缩小为上一步的1/5,即有m m n m n n n n n n n I I I I I I I I 5/5/5/*22*21*1*++++++-≈≈-≈-≈-成立. 绝对误差不断变小,真值的绝对值随着过程向前推进却在变大,这样相对误差也越来越小,这样的方法称之为数值稳定的算法. 算法1和算法2的误差对数示意图见图. 这个算例告诉我们应该选用数值稳定的算法.知识结构图⎪⎪⎪⎪⎪⎪⎪⎩⎪⎪⎪⎪⎪⎪⎪⎨⎧⎪⎩⎪⎨⎧⎪⎪⎪⎪⎪⎩⎪⎪⎪⎪⎪⎨⎧⎩⎨⎧⎪⎩⎪⎨⎧⎩⎨⎧算法设计要点数值方法的稳定性数值方法的收敛性算法多元函数一元函数传播有效数字相对误差(限)绝对误差(限)度量截断误差舍入误差误差的产生误差误差与算法 习题一1 已知有效数105.3*1-=x ,4*210125.0⨯=x ,010.0*3=x . 试给出各个近似值的绝对误差限和相对误差限,并指出它们各有几位有效数字.2 证明当近似值*x 是x 的较好近似时,计算相对误差的计算公式x x x -*和**x x x -相差一个和2*⎪⎪⎭⎫ ⎝⎛-x x x 同阶的无穷小量.3 设x 的近似值*x 具有如式的表示形式,试证明 1) 若*x 具有n 位有效数字,则相对误差n r a x e -⨯≤11*1021)(; 2) 若相对误差n r a x e -⨯+≤11*10)1(21)(,则*x 至少具有n 位有效数字. 4 试建立二元算术运算的绝对误差限传播近似计算公式.5 试建立如下表达式的相对误差限近似传播公式,并针对第1题中数据,求下列各近似值的相对误差限.1) *3*2*1*1x x x y +=; 2) 3*2*2x y =; 3) *3*2*3/x x y = 6 若例题中使用的尺子长度是80mm ,最小刻度为1mm ,量得某桌面长的近似值3.1304*=a mm ,宽的近似值8.704*=b mm . 试估计桌子长度、宽度的绝对误差限,并求用该近似数据计算出的桌子面积的绝对误差限和相对误差限. 7 改变如下计算公式,使其计算结果更为精确. 1) 0,cos 1≠-x xx 且1<<x 2) 1,1ln )1ln()1(ln 1>>--++=⎰+N N N N N xdx N N3) 1,133>>-+x x x8 (数值试验)试通过分析和数值试验两种手段,比较如下三种计算1-e 近似值算法的可靠性.算法1 ∑=--≈m n nn e 01!)1(; 算法2 101!1-=-⎪⎭⎫ ⎝⎛≈∑m n n e ; 算法3 101)!(1-=-⎪⎪⎭⎫ ⎝⎛-≈∑m n n m e ;9 (数值试验)设某应用问题归结为如下递推计算公式72.280=y ,251-=-n n y y , ,2,1=n 在计算时2取为具有5位有效数字的有效数*c . 试分析近似计算公式**1*5c y y n n -=-的绝对误差传播以及相对误差传播情况,并通过数值实验验证 (准确值可以用IEEE 双精度浮点运算结果代替),该算法可靠可用吗。
数值计算方法
数值计算方法数值计算方法是一种利用计算机进行数学计算的方法。
它主要是通过离散化连续问题,将其转化为离散的数值问题,然后利用计算机进行求解。
数值计算方法在科学计算、工程技术、经济管理等领域有着广泛的应用,因此对于掌握数值计算方法具有重要意义。
首先,数值计算方法包括了数值逼近、数值积分、数值微分、常微分方程数值解、偏微分方程数值解等内容。
其中,数值逼近是利用有限的计算资源来逼近实际的数学问题,而数值积分和数值微分则是对于连续函数的积分和微分进行数值计算。
常微分方程数值解和偏微分方程数值解则是对于微分方程进行数值求解,这些方法在实际问题中有着广泛的应用。
其次,数值计算方法的基本思想是离散化。
离散化是将连续的数学问题转化为离散的数值问题,通过离散化,我们可以利用计算机进行高效的数值计算。
在离散化的过程中,我们需要考虑如何选择合适的离散化方法和步长,以及如何控制离散化误差,这些都是数值计算方法中需要重点关注的问题。
另外,数值计算方法需要注意数值稳定性和数值精度。
数值稳定性是指数值计算方法对于输入数据的微小扰动具有较好的稳定性,而数值精度则是指数值计算方法得到的数值解与真实解之间的误差大小。
在实际应用中,我们需要根据具体的问题来选择合适的数值计算方法,并且要注意数值稳定性和数值精度的问题。
最后,数值计算方法是一门综合性较强的学科,它涉及到数学、计算机科学、物理学、工程技术等多个领域。
掌握数值计算方法需要具备扎实的数学基础和良好的计算机编程能力,同时也需要对于实际问题有较强的应用能力。
因此,学习数值计算方法需要全面提高自己的综合素质,这对于提高科学技术水平和解决实际问题有着重要的意义。
总之,数值计算方法是一门重要的学科,它在科学研究和工程技术中有着广泛的应用。
通过学习数值计算方法,我们可以更好地理解和解决实际问题,提高数学建模和科学计算的能力,为推动科学技术的发展做出积极的贡献。
希望大家能够重视数值计算方法的学习,不断提高自己的数值计算能力,为社会发展做出更大的贡献。
数值分析上机作业1-1解析
数值计算方法上机题目11、实验1. 病态问题实验目的:算法有“优”与“劣”之分,问题也有“好”和“坏”之别。
所谓坏问题就是问题本身的解对数据变化的比较敏感,反之属于好问题。
希望读者通过本实验对此有一个初步的体会。
数值分析的大部分研究课题中,如线性代数方程组、矩阵特征值问题、非线性方程及方程组等都存在病态的问题。
病态问题要通过研究和构造特殊的算法来解决,当然一般要付出一些代价(如耗用更多的机器时间、占用更多的存储空间等)。
问题提出:考虑一个高次的代数多项式∏=-=---=201)()20)...(2)(1()(k k x x x x x p (E1-1)显然该多项式的全部根为l ,2,…,20,共计20个,且每个根都是单重的(也称为简单的)。
现考虑该多项式方程的一个扰动0)(19=+xx p ε (E1-2)其中ε是一个非常小的数。
这相当于是对(E1-1)中19x 的系数作一个小的扰动。
我们希望比较(E1-1)和(E1-2)根的差别,从而分析方程(E1-1)的解对扰动的敏感性。
实验内容:为了实现方便,我们先介绍两个 Matlab 函数:“roots ”和“poly ”,输入函数u =roots (a )其中若变量a 存储1+n 维的向量,则该函数的输出u 为一个n 维的向量。
设a 的元素依次为121,...,,+n a a a ,则输出u 的各分量是多项式方程0...1121=++++-n n n n a x a x a x a的全部根,而函数b=poly(v)的输出b 是一个n +1维变量,它是以n 维变量v 的各分量为根的多项式的系数。
可见“roots ”和“Poly ”是两个互逆的运算函数.ve=zeros(1,21); ve(2)=ess;roots(poly(1:20))+ve)上述简单的Matlab 程序便得到(E1-2)的全部根,程序中的“ess ”即是(E1-2)中的ε。
实验要求:(1)选择充分小的ess ,反复进行上述实验,记录结果的变化并分析它们。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
i 2 ,3 , , n
第一章
引论
Ax b 第一章
i 2 ,3 , , n 绪论
§ 1.1 数值计算的研究对象与特点 § 1.2 数值问题与数值方法
a11 a21 A an 1 a12 a1 n 误差 § 1.3 a22 a2 n i 1 b l x i ij j j 1 an 2 ann x i lii
§ 1.1 计算机数值方法的研究对象与特点
以计算机为工具,求解各种数学模型,都要经历三个过程:
总体设计——模型的细化 详细设计——主要为算法设计 程序设计
计算机数值方法研究的是将数学模型化为数值问题, 并研究求解数值问题的数值方法进而设计数值算法
§ 1.2 数值问题与数值算法
一、数值问题 数值问题: 输入数据与输出数据之间关系
如求根公式 应化为公式
x1 , 2
x1 , 2
b b 2 4ac 2a
b sqrt(b 2 4ac) 2a
2 n x x ex 1 x 2! n!
超越函数e
x
应化为
函数y( x)的导数y( x)的计算应化为
y( x h ) y( x ) y( x ) h
3.14159265
2 1.414213562
1 1 0.166666666 3! 6
过失误差
3.1415927
2 1.4142136
1 0.16666667 3!
由于模型错误或方法错误引起的误差. 这类误差一般可以避免
数值计算中除了过失误差可以避免外,其余误差都是 难以避免的.数学模型一旦建立,进入具体计算时所考 虑和分析的就是截断误差和舍入误差
x 3 x 5 x7 sin x x 3! 5! 7! x2 x3 x4 ln( 1 x ) x 2! 3! 4!
Taylor展开
若将前若干项的部分和作为函数值的近似公式, 由于以后各项都舍弃了,自然产生了误差
舍入误差 计算误差
在数值计算过程中还会遇到无穷小数,因 计算机受到机器字长的限制,它所能表示 的数据只能有一定的有限位数,如按四舍 五入规则取有限位数,由此引起的误差
研究数值方法的主要任务: 1.将计算机上不能执行的运算化为在计算机上可 执行的运算 2.针对所求解的数值问题研究在计算机上可执行 的且有效的计算公式 3.因为可能采用了近似等价运算,故要进行误差分析, 即数值问题的性态及数值方法的稳定性 本课程的重点就是对线性方程组、微积分、微分方程、 矩阵特征值及回归拟合等问题寻找行之有效的数值方法
经过大量的运算之后,积累的总误差有时会大得惊人, 因此如何控制误差的传播也是数值方法的研究对象. 二、误差和误差限
,称 定义1. 设x为准确值, x *为x的一个近似值
E( x * ) x * x * 为近似值 x 的绝对误差 , 简称误差, 可简记为 E.
因为准确值 x 往往是未知甚至是无法 知道的
即: 输入与输出的都是数值的数学问题 如求解线性方程组 求解二次方程
Ax b
ax2 bx c 0
是数值问题
输入的数据是系数矩阵 A, 常数项向量 b与系数a , b, c
输出的数据是解向量 x , 和方程的解 x1 , x2
求解微分方程
y 2 x 3 y( 0 ) 0
三、数值算法
数值算法是指有步骤地完成解数值问题的过程. 数值算法有四个特点:
1.目的明确
2.定义精确 3.可执行 4.步骤有限
算法必须有明确的目的,其条件和结论 均应有清楚的规定 对算法的每一步都必须有精确的定义
算法中的每一步操作都是可执行的 算法必须在有限步内能够完成解题过程
例1. 给出等差数列1,2,3,…,10000的求和算法 解:
1. 取N 0, S 0
记数器置零
2. N 1 N , S N S
3. 若N 10000 , 转2,否则
4. 输出N , S
§ 1.3 误差
一、误差的种类及来源 模型误差 描述误差 在建立数学模型过程中,要将复杂的现 象抽象归结为数学模型,往往要忽略一 些次要因素的影响,而对问题作一些简 化,因此和实际问题有一定的区别. 在建模和具体运算过程中所用的数据往 往是通过观察和测量得到的,由于精度的 限制,这些数据一般是近似的,即有误差 由于计算机只能完成有限次算术运算和 逻辑运算,因此要将有些需用极限或无穷
二、数值方法
数值方法: 是指解数值问题的在计算机上 可执行的系列计算公式
在计算机上可执行的公式 是指只含有加减乘除的公式
现在的计算机中几乎都含有关于开方的标准函数sqrt()
常见的在计算机上不能直接运行的计算有: 开方、极限、超越函数、微分、积分等等 要在计算机上实行上述运算需将其化为可执行的等价 或近似等价运算
观测误差 参数误差
截断误差 方法误差
过程进行的运算有限化,对无穷过程进行截断,这就带来误 差.截断误差是对参与计算的数学公式做简化可行处理后 所产生的误差(用有限过程代替无限过程或用容易计算的 方法代替不容易计算的方法),是计算方法关注的内容
如:
2 3 x x ex 1 x 2! 3!
不是数值问题
输入的虽是数据 , 但输出的不是数据而是 函数y x2 3x
将其变成数值问题,即将其“离散化”
即将求函数 y x2 3x
改变成求函数值 y( x1 ), y( x2 ),, y( xn ), x1 x2 xn
“离散化”是将非数值问题的数学模型化为数值问题 的主要方法,这也是计算方法的任务之一
因此 E( x* ) x* x 往往也无法求出 而只能知道E( x* ) x* x 绝对值的某个上界 ,即 |E( x* )| |x* x| ( x* )
数值 ( x )称为x 的 绝对误差限或误差限, 简记为
* *
显然 且
0
x* x x* x x*