计算方法
author:AIDreamer
blog:http://blog.csdn.net/mmy1996
last modified on :2016/12/23
一:线性方程组的直接解法
- 基本方法
⎧⎩⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪消去法{Gauss消去法:把原来的方程组化为等价的三角形方程组Gauss列主元消去法:在Gauss消去法的基础上的改进,用一列中绝对值最大的去消,这样误差小直接三角形分解法⎧⎩⎨⎪⎪⎪⎪AX=LUX=B⎧⎩⎨先将A作LU分解(ps:L:low,U:up指下三角形和上三角形)LY=bUX=Y
二:线性方程组的迭代解法
迭代法的基本思想:
我们的目的是求解线性方程组的解,迭代法的做法是初始化一个向量序列的值,通过迭代的方法不断改进这个值使其收敛至某个极限向量,这个极限向量就是线性方程组的解。
迭代法的主要步骤:
⎧⎩⎨1.将求解的方程组AX=b化成形如X=BX+f的形式2.给定初始化向量X(0)=(x1(0),x2(0),……,xn(0))3.按照迭代公式进计算
三种迭代方法:
记:
D=⎡⎣⎢⎢⎢⎢⎢a11a22⋱ann⎤⎦⎥⎥⎥⎥⎥
L=⎡⎣⎢⎢⎢0−a21⋯−an10⋯−an2⋯0⎤⎦⎥⎥⎥
U=⎡⎣⎢⎢⎢⎢0−a210⋯⋯−a1n−a2n⋮0⎤⎦⎥⎥⎥⎥
- 三个迭代方法
⎧⎩⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪Jacobi迭代法⎧⎩⎨迭代公式:X(k+1)=D−1(L+U)X(k)+D−1b即:x(k+1)i=(bi−∑j≠iaijx(k)j)aiiGauss−Seidel迭代法⎧⎩⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪1.Gauss−Seidel迭代法是在Jacobi的基础上进行的优化2.Jacobi迭代中是用X(k)的全部分量来计算X(k+1)的全部分量,我们注意到在计算新的分量x(k+1)i时,旧分量x(k+1)1,x(k+1)2...x(k+1)i−1都已经算出3.Gauss−Seidel迭代法的思想就是将已经算出的量x(k+1)1∼x(k+1)i−1代入迭代公式替代x(k)1∼x(k)i−1进行运算4.迭代公式:xk+1i=(bi−∑i−1j=1aijx(k+1)j−∑nj=i+1aijx(k)j)aij5.迭代公式的矩阵形式:X(k+1)=BGX(k)+fG,其中BG=(D−L)−1b,称BG为G−S迭代矩阵超松弛迭代法(SOR法)⎧⎩⎨⎪⎪⎪⎪⎪⎪1.SOR法是G−S迭代法的一种加速方法,核心思想是引入一个被称为松弛因子的参数ω2.由G−S迭代法:xi^k+1=(bi−∑i−1j=1aijx(k+1)j−∑nj=i+1aijx(k)j)aij3.选取参数ω,取x(k+1)i=(1−ω)x(k)i+ωxi^(k+1)
关于这几种迭代法收敛性的证明略。
三:插值方法
数值逼近
数值逼近是计算方法中最重要的概念与方法之一,基本思想是用简单函数去近似复杂函数。
Rn(x):逼近的误差函数(余项);f(x):被逼近的复杂函数;Pn(x):所构造的简单函数
- 数值逼近包括以下基本问题:
⎧⎩⎨⎪⎪⎪⎪⎪⎪⎪⎪1.插值问题:找到的函数过这n+1个点2.一致逼近:使得max|f(x)−Pn(x)|=min,x∈[a,b]3.均方逼近(已知[a,b]上f(x)的解析表达式):∫ba[f(x)−Pn(x)]2dx=min4.最小二乘拟合(f(x)以离散点的形式给出):∑nk=1[fk−Pn(xk)]2=min
下面重点讨论插值问题:
插值问题
插值问题就是已知原函数 y=f(x) 在区间[a,b]上n+1个点 (xi,f(xi)) ,让你求出一个多项式函数 y=Pn(x) 过这n个点来近似代替原函数。
插值多项式存在且唯一
Lagrange插值
⎧⎩⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪1.通过线性插值和抛物线插值引入Lagrange插值2.Lagrange插值多项式⎧⎩⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪Pn(x)=(x−x1)(x−x2)...(x−xn)(x0−x1)(x0−x2)...(x0−xn)f0+(x−x0)(x−x2)...(x−xn)(x1−x0)(x1−x2)...(x1−xn)f1+......(x−x0)(x−x1)...(x−xn−1)(xn−x0)(xn−x1)...(xn−xn−1)fn标准型公式:{Pn(x)=∑ni=0li(x)⋅fili(x)=Πnj=0,j≠1x−xjxi−xj3.可证明Lagrange插值多项式存在且唯一4.插值多项式误差估计⎧⎩⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪1.余项的估计定理:存在ξ∈(a,b)使得误差函数Rn(x)=f(x)−pn(x)=ω(n+1)(x)f(n+1)(ξ)(n+1)!其中:ωn+1(x)=Πni=0(x−xi)2.若令Mn+1=maxa≤x≤b|f(n+1)(x)|则:|Rn(x)|≤Mn+1(n+1)!|ωn+1(x)|通常用此式来估计Lagrange插值的误差newtonNewton插值
⎧⎩⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪1.均差:⎧⎩⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪零阶均差:f[x0]=f0,f[x1]=f1...f[xn]=fn一阶均差:f[xi,xi+1]=f[xi]−f[xi+1]xi−xi+1k阶均差:f[xi,xi+1,...,xi+k]=f[xi,xi+1,...,xi+k−1]−f[xi+1,xi+2,...,xi+k]xi−xi+k2.均差的性质:3.Newton插值公式:Nn(x)=f[x0]+f[x0,x1](x−x0)+...+f[x0,x1,...,xn](x−x0)(x−x1)...(x−xn−1)则Nn(x)是满足条件Pn(xi)=yi的插值多项式4.Newton插值算法{1.根据节点和节点的值计算均值表2.利用Newton插值多项式估算f(x)
等距节点插值
四:数值积分
求函数f(x)在[a,b]上的定积分 I=∫baf(x)dx ,如果用传统的牛顿莱布尼茨公式 I=∫baf(x)dx=F(b)−F(a) ,原函数F(x)不易求得,数值积分就是为了解决这样问题的工具。
数值积分
计算定积分的具有一定精度的近似值的各种计算方法。
从几何上看就是计算曲边梯形面积的近似值。
{矩形公式:是用许多小矩形之和近似曲边梯形的面积梯形公式:改用许多小梯形之和近似曲边梯形的面积数值积分的一般形式
∫baf(x)dx=∑i=0nωifi+Rn{fi是函数f(x)在节点xi上的函数值ωi称为节点xi上的权系数
正是由于权系数的构造方法不同,从而决定了数值积分的不同方法代数精度问题
一般地,数值求积公式如果对次数不超过 k 的多项式 Pk(x) 是精确的,而对k +1次多项式 Pk+1(x) 不精确,则称该公式具有—-k 阶代数精度
插值型求积公式和 Newton-Cotes求积公式
⎧⎩⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪一.插值型求积公式⎧⎩⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪1.由Lagrange插值有⎧⎩⎨⎪⎪⎪⎪Lagrange插值多项式:Ln(x)=∑ni=0f(xi)li(x)插值余项:Rn(x)=f(n+1)(ξx)(n+1)!Πni=0(x−xi),ξx∈(x0,xn)f(x)=Ln(x)+Rn(x)2.两端积分后⎧⎩⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪I=∫baf(x)dx=∑ni=0Aif(xi)+Rn(f)求积系数:Ai=∫bali(x)dxI=∑ni=0Aif(xi)作为定积分I=∫ba(x)dx的近似值余项(或误差):Rn(f)=∫baRn(x)dx=1(n+1)!∫baf(n+1)(ξx)Πni=0(x−xi)dx二.求积公式的代数精度三.Newton−Cotes公式⎧⎩⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪1.NC公式是将求积区间n等分构造出来的插值型求积公式2.梯形公式是n为1时的情况,线性插值3.Simpson公式是n为2时的情况,二次Lagrange插值4.NC积分代数精度{∗若n为奇数,公式对不超过n次的多项式准确成立,可验证其代数精度为n∗若n为偶数,代数精度为n+1四.复合求积公式{思路:把[a,b]分为若干个子区间,在每个区间上使用NC求积公式然后组合起来,得到更加精确的求积公式.
变步长求积算法
求积过程中随时判断是否达到精度,不然就自动加细分割
五:常微分方程
通过数值的方法求解微分方程是求出微分方程的一系列离散的解.
- 常用方法
⎧⎩⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪一.Euler公式⎧⎩⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪1.Euler公式⎧⎩⎨⎪⎪通过Taylor展开得到近似公式:yn+1=yn+hf(xn,yn)截断误差:En+1=y(xn+1)−yn+1=12h2y′′(ξ)2.梯形公式{梯形公式:yn+1=yn+h2[f(xn,yn)+f(xn+1y¯n+1)]误差公式:En+1=−112h3y′′′(ξ),ξ∈[xn,xn+1]3.改进Euler公式⎧⎩⎨⎪⎪⎪⎪⎪⎪以Euler公式提供预测值,再用梯形公式来校正⎧⎩⎨⎪⎪yn+1=12(yp+yq)yp=yn+hf(xn,yn)yq=yn+hf(xn+1,yp)二.Runge−Kutta法⎧⎩⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪1.Taylor级数法:可以看成是Euler公式的升级版2.Runge−Kutta法的基本思想3.二阶Runge−Kutta公式⎧⎩⎨⎪⎪⎪⎪⎪⎪yn+1=yn+h2(k1+k2)k1=f(xn,yn)k2=f(xn+h,yn+k1h)形式就是改进的欧拉公式