1、数值计算方法,徐弢 2014.04,课程安排,算法和误差 非线性方程 线性方程组 特征值与特征向量 插值和多项式逼近 曲线拟合 数值积分 常微分方程,一、概述,数值计算是求解数学问题的常用方法,随着计算机技术的飞速发展,数值计算方法在现代科学研究中的作用越来越广泛。数值计算的算法的研究越来越受到人们的重视。 数值计算是应用数学一个重要分支,比如:微分方程,现代物理. 新的数学,混沌理论(迭代法求非线性方程的根). 与过去相比,现代数值计算方法有两个显著特点: 数值计算的方法和理论都结合数字计算机的特点来研究。在进行算法研究时,注意算法与计算速度,计算内存消耗的关系 在研究算法时,注重算法误差分
2、析,注意数值解的收敛性和数值计算的稳定性问题。,实际问题,数学模型,数值方法,程序设计,上机计算,分析结果,真实、准确地反映实际工程问题的本质; 数学模型所用的数学算法能在计算机上实现。,数值计算方法只能用算数运算和逻辑运算; 数值计算方法需要速度快、精度高。,程序设计需要最简练、最快、最少存储空间。,检验是否与实际相符,是否可推广; 找出原因,继续研究。,二、 算法,1、算法的概念当我们用数值计算方法求解一个比较复杂的数学问题时,常常要事先拟定一个计算方案,规划一下计算的步骤,所谓算法,就是指在求解数学问题时,对求解方案和计算步骤的完整而明确的描述。描述一个算法可以采用许多方法,最常用的一个
3、方法是程序流程图。算法也可以用人的自然语言来描述。如果用计算机能接受的语言来描述算法,就称为程序设计。,例1:一群小兔一群鸡,两群合到一群里,要数腿共48,要数脑袋整17,多少小兔多少鸡?,算术方法 :,代数方法 :,若没有小兔,则鸡应是17只总腿数 :21734一只小兔增加 2条腿,应该有只小兔10只小鸡,设有x只小鸡,y只小兔 ,,(-2)*(i) +(ii) , 得,只小兔,高斯消去法,例2:求解二元一次联立方程组,用行列式解法:首先判别,是否为零,存在两种可能:,(1)如果 ,则令计算机计算,输出计算的结果x1,x2。,2)如果D= 0,则或是无解,或有无穷多组解。,例2:求解二元一次
4、联立方程组,令,通过求解过程,可以总结出算法步骤如下:,S1 输入,S2 计算,S3 如果,则输出原方程无解或有无穷多组解的信息;,否则,S4 输出计算的结果,二、算法,2、算法的优劣 求解一个数学问题,可以采用不同的算法,比如:线性方程组,可用克莱姆法则,高斯消元法等多种方法求解。但是每一种方法的优劣不同,评价一个 算法的好坏有以下几个标准: 1) 算法的计算量(时间复杂性) 2) 算法的空间复杂性 3) 算法逻辑结构的复杂性,二、算法,1) 算法的时间复杂性计算机运行时间,例:用行列式解法求解线性方程组:n阶方程组,要计算n + 1个n阶行列式的值,总共需要做n! (n - 1) (n +
5、 1) 次乘法运算。 当n=20时,需要运算?当n=100时,需要运算?,二、算法,2) 算法的空间复杂性占据计算机存储空间的多少 当使用计算机求解一个数学问题时,计算程序要占用许多工作单元(内存)。当计算一个大型的数学问题时,内存的消耗量是很大的。因此,算法占用内存数量的多少,是衡量算法优劣的另一个标准。,二、算法,3)算法逻辑结构的复杂性影响程序开发的周期以及维护 设计算法时应该考虑的另一个因素是逻辑结构问题,虽然计算机能自动执行极其复杂的计算程序,但是计算程序的每个细节都需要编程人员制定,因此算法的逻辑结构应尽量简单,才能使程序的编制、维修和使用比较方便。,三、误差,1、误差的来源: 在
6、研究算法时,要进行误差分析,能估计误差的算法才 是有实用价值的算法。引起计算误差的原因是多方面的。1)模型误差当解决一个工程实际问题时,常常需要用一定的数学表达式来描述,即建立一个数学模型。建立数学模型时,通常要根据实际需要做一些简化,忽略一些次要因素,是模型不致过分复杂,又能满足精度要求。这样建立起来的数学模型是客观现象的近似描述。这种近似必然产生误差。,三、误差,2) 方法误差在计算过程中,由数学方法产生的误差,称为方法误差。 例如,在计算指数函数的值时,常用到如下幂级数展开式:,这是一个无穷级数。计算时,只能取有限项。,用有限项逼近无穷级数,会产生一个误差,这个误差是由数学方法产生的,所
7、以是一种方法误差。,三、误差,3) 舍入误差在计算过程中,当我们表示一个数时,常常只能取有限位。超出的尾数将会舍去,从而造成误差,这种误差称为舍入误差。舍入误差时我们数值计算中重点研究的对象,将贯穿整个课程之中。,三、误差,2、 误差的概念1)误差某个量的真值与近似值的差的绝对值,称为近似值的误 差,又称绝对误差,用e表示。,真值,,近似值,,2) 误差限在许多情况下,我们不知道某个量的真实值是多少,因 此也不知道它的近似值的误差。但是我们能估计出误差不会超过某个确定的数值。这个数值就称为近似值的误差限。我们能用误差限定量的衡量一个近似值的误差。,三、误差,如果某近似值的误差限是,我们就说,在
8、允许误差的条件下,近似值是准确的。,3)有效数字我们还可以引入有效数字来更明确地表达数的准确度。我们先介绍“四舍五入”的概念,四舍五入是数值计算时,取近似值的一种方法。若被舍去部分的头一位大于等于5时,就在所取数的末位加1;小于5时,就舍去。用四舍五入方法得到的近似值,称为有效数字。有效数字的末位到第一位非零数字的个数,称为该有效数字的位数。有效数字可用来表示一个近似值的准确程度,一个近似值的有效位数越多,这个近似值就越逼近真值。,三、误差,由上面的有效数字的定义,我们能给出另外一种等价的定义。若近似值的误差小于某一位的半个单位,便称近似值准确到这一位。从这一位到第一个非零数字的个数就是近似值
9、的有效位数。 上述定义常用在数值计算的过程中,用来控制迭代的精度。,3),的万分位不是按四舍五入规则得到的,因此,有四位有效数字,而不是五位有效数字。,小于千分位上的半个单位,从千分位到个位有四位。,精确到千分位。3.1416有五位有效数字,准,确到万分位。3.1415有四位有效数字,准确到千分,位。这就是,的近似值采用3.1416,而不采用3.1415,的原因。,四、算法与稳定性,例:,四、小结,设计一个数值计算方法,其任务就是: 针对提出的上述数值问题(难有解析解或大型计算),运用数学中的一些基本理论(如泰勒公式,微分中值定理等),找出解决问题的方法与步骤(称之为算法), 然后运用计算机语
10、言将算法编制成程序,上机实验并调试。然后作出误差分析,使得误差限制在规定的范围内。这样就得到一个实用的适于某类数值问题的算法。,第二章 非线性方程,一、二分法,1、定理:,若,2、基本思想:,将a, b分为相等的两个小区间,计算小区间端点函数值, 找出新的有根区间。 重复上述过程,直到找到满足精度要求的根。,一、二分法,3、几何意义:,一、二分法,4、误差估计:,一、二分法,一、二分法,x=1.364746094,二、迭代法,1、基本思想:,二、迭代法,2、定理:,若x*是方程的根,则x*称为方程的不动点。,二、迭代法,二、迭代法,二、迭代法,3、几何意义:,二、迭代法,三、牛顿法,1、基本思
11、想,三、牛顿法,三、牛顿法,2、几何意义,收敛快。,三、牛顿法,四、割线法,1、基本思想牛顿法(切线法)将微分改为差分,得割线法特点: 需两个初始值x0和x1 精度比牛顿法偏低 不用求函数的微分,四、割线法,2、几何意义,第三章 线性方程组,方法列表,消元法 高斯消元法 因子表法 矩阵分解法 三角分解法 平方根法 乔累斯基法 迭代法 一般迭代法 赛德尔迭代法,一、消元法,高斯消元法与因子表法在算法上的不同点是规格化和消元的顺序不同: 高斯消元法:对增广矩阵进行规格化和消元 因子表法:先对系数矩阵进行规格化和消元,然后再对右端项进行规格化和消元。 因子表法的优点是: 当系数矩阵不变,右端项变化时
12、,可反复利用因子表对右端项进行规格化和消元,可大大减少运算时间。,一、消元法,1、高斯消元法(列主元),一、消元法,一、消元法,一、消元法,一、消元法,2、因子表法,一、消元法,一、消元法,一、消元法,二、矩阵分解法,1、三角分解法(LU分解),二、矩阵分解法,二、矩阵分解法,二、矩阵分解法,二、矩阵分解法,2、平方根法,二、矩阵分解法,二、矩阵分解法,二、矩阵分解法,3、乔累斯法,二、矩阵分解法,二、矩阵分解法,三、迭代法,1、一般迭代法,三、迭代法,收敛定理:,三、迭代法,2、赛德尔迭代法,第四章 特征值与特征向量,一、最大特征值,特征向量组成了n组空间的基底,在这一基底空间中的任一向量,
13、可用基底线性表示,一、最大特征值,一、最大特征值,二、最小特征值,二、最小特征值,三、中间特征值,定理:,三、中间特征值,第五章 插值和多项式逼近,一、引言,相反问题,一、引言,函数,与各结点的误差的平方和最小。,二、线性插值,二、线性插值,二、线性插值,三、拉格朗日插值,1、抛物线插值,三、拉格朗日插值,三、拉格朗日插值,2、高次插值,三、拉格朗日插值,例:根据下列数据,构造一个拉格朗日三次插值多项式,代入数据,四、插值余项,在其它点有误差:,四、插值余项,1、拉格朗日余项定理,四、插值余项,2、误差的估计可用插值余项估计误差,也可用下列方法估计误差(余项公式需知道函数的导数),四、插值余项
14、,五、埃特金插值,1、二次插值,五、埃特金插值,五、埃特金插值,2、三次插值,五、埃特金插值,五、埃特金插值,六、分段插值,六、分段插值,1、分段线性插值2、分段抛物线插值,七、数值微分,1、插值型求导公式余项,2、一阶导数的二点公式,七、数值微分,3、一阶导数的三点公式,八、三次样条插值,高阶插值震荡不稳定; 分段插值不光滑; 飞机、船体放样要求在节点处要光滑,且不能产生震荡,这样求放样插值在节点处具有二阶连续导数; 样条:弹性木条,强迫它通过插值点(施加力),根据力学原理,样条所形成的曲线满足二阶连续导数; 三次插值多项式是具有二阶连续导数的函数。,八、三次样条插值,八、三次样条插值,八、
15、三次样条插值,八、三次样条插值,八、三次样条插值,八、三次样条插值,八、三次样条插值,八、三次样条插值,八、三次样条插值,第六章 曲线拟合,一、最小二乘法,右图中,与测量值的误差,确定,使其与测量值误差的绝对值最小,或者,一、最小二乘法,对上式求偏导数,令,整理得,一、最小二乘法,解得最后得到,二、曲线拟合,利用最小二乘原理拟合数据,得到拟合曲线 1、线性拟合设拟合直线为直线上的点与数据差的平方和:求偏导,二、曲线拟合,其中令整理得,二、曲线拟合,2、抛物线拟合设拟合曲线为:曲线上的点与数据差的平方和求偏导数,二、曲线拟合,其中令,二、曲线拟合,整理得二次曲线的正规方程组,二、曲线拟合,3、m
16、次多项式曲线拟合设拟合曲线的m次多项式为:拟合曲线的正规方程组:,第七章 数值积分,一、引言,给出一组数据,二、插值求积分,1、两点式(梯形公式),二、插值求积分,2、三点式(辛卜生公式),二、插值求积分,3、五点式(科特斯公式),二、插值求积分,4、复化求积公式1)复化梯形在每个小区间上应用梯形公式式中h为等距步长,二、插值求积分,2)复化辛卜生在每两个小区间上应用辛卜生公式式中h为等距节点,二、插值求积分,3)复化科特斯在每四个小区间上应用科特斯公式式中h为等距节点,三、求积公式的误差,的舍入对公式的影响; 求积公式的截断误差 。 1、舍入误差,三、求积公式的误差,三、求积公式的误差,三、
17、求积公式的误差,2、截断误差1)梯形公式,三、求积公式的误差,或:,三、求积公式的误差,2)辛卜生公式,三、求积公式的误差,三、求积公式的误差,三、求积公式的误差,3)科特斯公式,四、龙贝格算法,复化求积法 步长减小,精度提高 步长小,工作量增大 变步长求积法 为统一精度与计算量的矛盾,采用变步长,每次步长减半,直至迭代精度达到要求为止。 变步长梯形法 变步长辛卜生法 变步长科特斯法 尨贝格算法,四、龙贝格算法,1、变步长梯形法,四、龙贝格算法,四、龙贝格算法,2、变步长的辛卜生求积法变步长梯形法算法简单,单精度低,收敛慢,四、龙贝格算法,四、龙贝格算法,3、龙贝格算法1)变科特斯算法,四、龙
18、贝格算法,得,四、龙贝格算法,2)龙贝格算法,四、龙贝格算法,或,第八章 常微分方程,一、引言,1、常微分方程最简单形式:初始条件:积分:解得:,一、引言,2、常微分方程的一般形式3、高阶微分方程例如二阶微分方程:令则,二、欧拉法,二、欧拉法,二、欧拉法,三、改进欧拉法,1、观察积分项:若采用梯形求积公式可得到改进欧拉法,三、改进欧拉法,三、改进欧拉法,三、改进欧拉法,2、截断误差分析1)欧拉法截断误差,三、改进欧拉法,三、改进欧拉法,2)改进欧拉法截断误差,四、龙格-库塔法,一阶常微分方程初始值:,四、龙格-库塔法,四、龙格-库塔法,1、二阶龙格-库塔,四、龙格-库塔法,四、龙格-库塔法,四、龙格-库塔法,2、三阶龙格-库塔,四、龙格-库塔法,3、四阶龙格-库塔,五、一阶微分方程组,考察二阶微分方程初始条件:引入中间变量,令:则:,五、一阶微分方程组,即:,五、一阶微分方程组,