数值分析笔记

这里是数值分析的部分笔记,(对前三章的算法都用python做了实验,程序见具体内容处)
PS:其中比较不重要的地方偷懒用了一点点numpy的API。内容写的比较简略,仅供参考,望见谅(更详细的数值分析Java实现 请见清华相关实验网站)

文章目录

Chap 1:误差

a = + ‾ a 0 a 1 a 2 . . . a m . a m + 1 . . . a n a=\underline{+} a_0 a_1 a_2...a_m.a_{m+1}...a_n a=+a0a1a2...am.am+1...an

def:

绝对误差(界)

相对误差(界)

有效数字

calculate:

误差界:注意近似时向上取整

有效数字的计算(以舍入法为基准):

n+1-s :s是第一位非零数字角标,n的算法: ∣ a − a ˉ ∣ ≤ 1 2 × 1 0 − ( n − m ) |a-\bar{a}|\leq \frac{1}{2} \times 10^{-(n-m)} aaˉ21×10(nm)

(1)真实值的有效数字

(2)已知实际值和近似值,求近似值的有效数组

thm(1.2.1):a的近似数 a ˉ \bar{a} aˉ有效数字有n+1-s位,相对误差有估计式:

∣ a − a ˉ a ˉ ∣ ≤ 1 2 a s × 1 0 − ( n − s ) a s ≠ 0 |\frac{a-\bar{a}}{\bar{a}}|\leq \frac{1}{2a_s}\times10^{-(n-s)}\qquad a_s\neq 0 aˉaaˉ2as1×10(ns)as=0 a ˉ \bar{a} aˉ的第一位数字

浮点数

def:

p进制表示: x = + ‾ 0. d 1 d 2 . . . d t × p J , 0 ≤ d i ≤ p − 1 x=\underline{+}0.d_1 d_2...d_t \times p^J,\quad 0\leq d_i\leq p-1 x=+0.d1d2...dt×pJ,0dip1

尾数: 0. d 1 d 2 . . . d t 0.d_1 d_2...d_t 0.d1d2...dt

计算机表示中为 + ‾ d 1 d 2 . . . d 7 J \underline{+} d_1 d_2...d_7 J +d1d2...d7J(阶码)

上溢下溢

舍入法&断尾法

calculate

(1)相加相减:先对位再加减

(2)避免减法:分子有理化;三角变换;Taylor展开

(3)乘除:双精度运算

(4)避免大数小数运算(不满足结合律)

def:向前误差分析;向后误差分析

Chap 2:解方程组

解线性方程组的Gauss消去法

操作:(1)消元(消为上三角矩阵)

​ (2)回代

原理:右乘矩阵行变换

优化方法1:列主元Gauss消去法

原理:避免在较小值为主元时,后面的行减第一行乘一个因数(乘子),的乘数过大引起误差。(列中元素差距大)

操作:在一般Gauss消去法中对每列消元时把该列绝对值最多的数所在的行换到上面进行消元。

优化方法2:按比例列主元消去法

原理:为避免每一行中元素大小差距过大带来误差

操作:(1)在消第i列时取系数矩阵中 ∣ a j i ∣ ∣ 第 j 行 元 素 最 大 的 绝 对 值 ∣ \frac{|a_{ji}|}{|第j行元素最大的绝对值|} jaji对应的 a i j a_{ij} aij为主元,(即绝对值最接近所在行最大绝对值的 元素)。

​ (2)不用交换行,但是改变回代顺序

remark:上面两种方法都是在规避用较小的数求比例得到乘子乘到较大的数上带来误差

优化方法3:Gauss-Jordan 消去法

原理:为避免回代过程,直接将矩阵化为对角矩阵。

操作:仍然采取列主元的方法,但是在消元过程中,消第k列时,将1,2,…,k-1行第k列也消去。

#Gauss-Jordan消去法的python实现(因为电脑没有装java和C++的编译器orz)
import numpy as np
Abb=np.array([(1,2,3,4),(2,12,3,5),(2,10,2,4)])
Abb = Abb.astype(np.float64) #转化为浮点型(否则运算时会自动化为int)

def GaussJordan(Ab,n): 
    row_rec=[];#记录已经有主元的行
    for k in range(n):
        max_k=0
        for i in range(n):
            if ((i in row_rec)==False)&(abs(Ab[i,k])>max_k):#从剩下行中寻找主元
                max_k=abs(Ab[i,k])
                index=i#记录主元所在行数
        row_rec.append(index)
        for j in range(n):
            if (j!=row_rec[-1]):#消去剩余行
                m=-(Ab[j,k]/Ab[row_rec[-1],k])#乘子
                for i in range(n-k+1):
                    Ab[j,i+k]+=m*Ab[row_rec[-1],i+k]
    #计算结果
    res=[]
    for i in range(n):
        res.append(Ab[row_rec[i],n]/Ab[row_rec[i],i])
    return(res)

print(GaussJordan(Abb,3))
res:[1.0, -0.0, 1.0]

直接三角分解法

1.LDR分解

A = L D R A=LDR A=LDR,L是单位上三角矩阵,D是对角矩阵,R是单位下三角矩阵

thm:矩阵A存在唯一LDR分解 ⇔ \Leftrightarrow A的顺序主子矩阵均非奇异

A = L D R = L U A=LDR=LU A=LDR=LU

从而直接解方程:

{ L y = b y = U x \left\{\begin{matrix} Ly=b \\ y=Ux \end{matrix}\right. {Ly=by=Ux

2.Doolittle分解

def :A=LU,L是单位下三角矩阵,U是上三角矩阵

原理:Gauss消元法的矩阵表示

表示消去第2列的右乘矩阵如下

L 2 = [ 1 0 0 . . . 0 1 0 0 0 − l 3 , 2 . . . 0 − l n , 2 0... 1 ] L_2=\begin{bmatrix} 1& 0 & 0 & ...\\ 0& 1 & 0&0 \\ 0& -l_{3,2} & ...& \\ 0& -l_{n,2}&0... &1 \end{bmatrix} L2=100001l3,2ln,200...0......01

l ⃗ k = [ 0 . . . l k + 1 , k . . . l m , k ] \vec{l}_{k}=\begin{bmatrix}&0\\ &...\\ &l_{k+1,k} \\& ... \\ &l_{m,k} \end{bmatrix} l k=0...lk+1,k...lm,k

从而 L k = I − l k ⃗ e k , e k L_k=I-\vec{l_k}e_k,\quad e_k Lk=Ilk ek,ek是第k个坐标是1,其余分量是0的n维向量

( I − l k ⃗ e k ) ( I + l k ⃗ e k ) = I → L k − 1 = I + l k ⃗ e k (I-\vec{l_k}e_k)(I+\vec{l_k}e_k)=I\rightarrow L_k^{-1}=I+\vec{l_k}e_k (Ilk ek)(I+lk ek)=ILk1=I+lk ek

i < j i<j i<j时有 L i − 1 L j − 1 = I + l i ⃗ e i + l j ⃗ e j L_i^{-1}L_j^{-1}=I+\vec{l_i}e_i+\vec{l_j}e_j Li1Lj1=I+li ei+lj ej

a i i ( i − 1 ) = 0 a_{ii}^{(i-1)}=0 aii(i1)=0(即主元为0)时要交换行

此时非下三角矩阵

要是每一个主元都不为0的充要条件是:A的每一个顺序主子矩阵非奇异(这一点根据Gauss消去法的操作过程是显然的)

3.Crout分解

原理:类比Gauss消元法的矩阵表示,按列消元从左向右

原理: A = L U , U A=LU,U A=LU,U是单位上三角矩阵, i < j , a i j = ∑ k = 1 i a i , k u k , j i<j,a_{ij}=\sum_{k=1}^i a_{i,k}u_{k,j} i<j,aij=k=1iai,kuk,j

先求L中第k列,再求U中第k行

操作:将 L , U − I L,U-I L,UI存入同一个矩阵。对矩阵A进行操作:

​ (1)第一列不变。

​ (2)第一行除对角线以外除以 a 11 a_{11} a11

​ 一行一列边框over

​ (3)第二列中元素从减去所在行和所在列边框互乘元素

​ (4)第二列减去互乘元素除以所在对角线元素

​ …

Crout分解存在唯一的充要条件依旧是顺序主子式非奇异

优化方法1:紧凑的crout分解

在求第i列之后可以直接求得 L y = b Ly=b Ly=b中的y

#Abbb顺序主子式非奇异
Abbb=np.array([(3,2,1,2),(2,4,1,-1),(1,2,4,3)])
Abbb = Abbb.astype(np.float64) 

def Crout_jin(Ab,n):
    y=[Ab[0,-1]/Ab[0,0]]#求L(1,1)
    for i in range(n-1):Ab[0,i+1]=Ab[0,i+1]/Ab[0,0]#求U中第1行
    for i in range(n-1):
        for j in range(n-i-1):#求U第i+2行
            minus=0
            for t in range(i+1):
                minus+=Ab[j+i+1,t]*Ab[t,i+1]
            Ab[j+i+1,i+1]-=minus##如果是按列选主元的话在这里进行行变换
        for j in range(n-i-2):#求L第i   +2列
            minus=0
            for t in range(i+1):
                minus+=Ab[t,i+2+j]*Ab[i+1,t]
            Ab[i+1,i+2+j]=(Ab[i+1,i+2+j]-minus)/Ab[i+1,i+1]
        y_i=Ab[i+1,-1]
        for j in range(i+1):#求y   紧凑的crout分解在于在这个循环里计算y的第i+2个分量
            y_i-=y[j]*Ab[i+1,j]
        y_i=y_i/Ab[i+1,i+1]
        y.append(y_i)
    x=[]#求解x,从最后一个分量向前求解
    for j in range(n):
        minus=0
        for i in range(j):
            minus+=Ab[-(j+1),-(i+2)]*x[i]
        x_j=y[-(j+1)]-minus;
        x.append(x_j)
    return(x[::-1])#最后reverse

Crout_jin(Abbb,3)
res:[0.9999999999999998, -0.9999999999999998, 1.0]
优化方法2:按列选主元的Crout方法

和doolittle分解一样在求完一列之后将绝对值最大的所在行提到上面来

remark:考试时不要求按照书上步骤,只需要写出最终形式即可

4.Cholesky 分解(对实对称矩阵)

thm:n阶实对称矩阵A是正定的 ⇔ \Leftrightarrow ∃ \exists n阶非奇异下三角矩阵 L , s . t . : L,s.t.: L,s.t.:
A = L L T A=LL^T A=LLT
且L的主对角元均为正数时该分解唯一

pf: ⇒ \Rightarrow A是正定的,则顺序主子式非奇异有 A = L 1 D R , A T = R T D T R T A=L_1DR,A^T=R^TD^TR^T A=L1DR,AT=RTDTRT,且 ∀ i , D i i > 0 \forall i,D_{ii}>0 i,Dii>0由分解式的唯一性得 L 1 = R T , A = L 1 D 1 ( L 1 D 2 ) T L_1=R^T,A=L_1\sqrt{D}_1(L_1\sqrt{D}_2)^T L1=RT,A=L1D 1(L1D 2)T,显然L主对角元为正数时( D 1 = D 2 \sqrt{D}_1=\sqrt{D}_2 D 1=D 2)分解唯一。

⇐ \Leftarrow x A x T = x L ( x L ) T ≥ 0 xAx^T=xL(xL)^T\geq 0 xAxT=xL(xL)T0,由于 x L ≠ 0 xL\neq 0 xL=0等号不能取到,从而A正定。

平方根法

如果直接将 A = L L T A=LL^T A=LLT利用Crout算法的步骤计算则对角线元素 l i i l_{ii} lii需要开方求解,由于开方计算复杂度大,且会带来更多误差,则考虑下面的分解。

5. L D L T LDL^T LDLT分解

A = L D L T A=LDL^T A=LDLT其中L是单位下对角矩阵,D是对角矩阵。则根据 L L T LL^T LLT分解的唯一性,可知A是对称正定时 L D L T LDL^T LDLT也是存在唯一的。

对此分解同样利用Crout分解的方法分成 L D LD LD L T L^T LT,再转换成 L , D L T L,DL^T L,DLT求解但是在每次计算第i行第i列的时候加上 d i i d_{ii} dii,来避免开方运算。也就是

改进的平方根算法

计算过程中
A = L D L T , A x = b → { L y = b y = D L T x A=LDL^T,Ax=b\rightarrow \left\{\begin{matrix} Ly=b \\ y=DL^Tx \end{matrix}\right. A=LDLT,Ax=b{Ly=by=DLTx
计算上和一般的Crout算法有以下不同:

  1. 求完L第i列的第k行( n − i ≤ k ≤ n n-i\leq k\leq n nikn)个元素之后,第i行的第k个元素 D L i k T = L i k D L i i T DL^T_{ik}=\frac{L_{ik}}{DL^T_{ii}} DLikT=DLiiTLik
  2. 并非先算DL第i列的后n-i个元素,再算 L T L^T LT的第i行的后n-i个元素,而是依次算DL和 L T L^T LT的第i个顺序主子式
  3. 且不需要同时储存 D L 和 L T DL和L^T DLLT,只需要储存 L L L和D的对角线即可
6.解三对角矩阵方程组的三对角算法

[ d 1 c 1 a 2 d 2 c 2 . . . . . . . . . a n − 1 d n − 1 c n − 1 a n d n ] = [ p 1 a 2 p 2 . . . . . . . . . a n − 1 p n − 1 a n p n ] [ 1 q 1 1 q 2 . . . . . . . . . . . . 1 q n − 1 1 ] \begin{bmatrix} d_1& c_1 & & \\ a_2& d_2 & c_2& \\ & ... & ...&... \\ &a_{n-1}&d_{n-1}&c_{n-1}\\ & &a_n &d_n \end{bmatrix}=\begin{bmatrix} p_1& & & \\ a_2& p_2 & & \\ & ... & ...&... \\ &a_{n-1}&p_{n-1}&\\ & &a_n &p_n \end{bmatrix}\begin{bmatrix} 1&q_1 & & \\ & 1 &q_2 & \\ & ... & ...&... \\ ...&&1&q_{n-1}\\ & & &1 \end{bmatrix} d1a2c1d2...an1c2...dn1an...cn1dn=p1a2p2...an1...pn1an...pn1...q11...q2...1...qn11

对半带宽稀疏矩阵,往往有更简单的分解方法。这里对于对角占优的三对角矩阵:

  1. ∣ d 1 ∣ > ∣ c 1 ∣ > 0 |d_1|>|c_1|>0 d1>c1>0

  2. ∣ d k ∣ ≥ ∣ a k ∣ + ∣ c k ∣ |d_k|\geq |a_k|+|c_k| dkak+ck a k c k ≠ 0 , k = 2 , 3 , . . . , n − 1 a_kc_k\neq 0,k=2,3,...,n-1 akck=0,k=2,3,...,n1

  3. ∣ d n ∣ > ∣ a n ∣ > 0 |d_n|>|a_n|>0 dn>an>0

    在上述三个条件下 p 1 , p 2 , . . . , p n p_1,p_2,...,p_n p1,p2,...,pn皆非0。

    pf:先归纳法证明 ∀ i , ∣ q i ∣ < 1 \forall i,|q_i|<1 i,qi<1:由 ( 1 ) (1) (1) ∣ q 1 ∣ < 1 |q_1|<1 q1<1

    a i q i − 1 + p i = d i , p i q i = c i a_iq_{i-1}+p_i=d_i,p_iq_i=c_i aiqi1+pi=di,piqi=ci由此得到 ∣ q i ∣ |q_i| qi的递推进行证明。

    同样利用上面两个等式得到 ∣ p i ∣ > 0 |p_i|>0 pi>0

对系数矩阵为上述矩阵的方程的解法就是Crout算法,但是计算过程中隐含 p i , q i p_i,q_i pi,qi的交错递归所以被称为追赶法

Appendix

1.QR分解

A = Q R A=QR A=QR,Q为正交矩阵,R为上三角矩阵

分解过程:Gram-Schmidt过程即列变换反复生成正交向量最后得到标准正交集

2.矩阵对角化

S = [ a 1 , . . . , a n ] , a i S=[a_1,...,a_n],a_i S=[a1,...,an],ai是特征向量, A S = S T , T = ( t i j ) = ( λ i ) i i → A = S T S − 1 AS=ST,T=(t_{ij})=(\lambda_i)_{ii}\rightarrow A=STS^{-1} AS=ST,T=(tij)=(λi)iiA=STS1

要求:S有n个独立的特征向量

要求: T ∈ C n × n : T\in C^{n\times n}: TCn×n:正规矩阵, T ∈ R n × n : T\in R^{n\times n}: TRn×n:自伴矩阵

例子:实对称矩阵:特征值相互正交(易证)

3.Schur分解

A ∈ C n × n , U H A U = T A\in C^{n\times n},U^H AU=T ACn×n,UHAU=T,T是上三角矩阵,特征值在T的对角线上。

再进一步,进行Jordan分解

pf:1.需要明确一点:对上三角矩阵A, [ x 1 , . . . x n ] A [x_1,...x_n]A [x1,...xn]A使得 x = [ x 1 , . . . , x n ] x=[x_1,...,x_n] x=[x1,...,xn]中任意分量张成的空间在变化前后不变。

​ 即 ∀ j = 1 , 2 , . . . . , n , s p a n ( v 1 , . . . , v j ) \forall j=1,2,....,n,\quad span(v_1,...,v_j) j=1,2,....,n,span(v1,...,vj)均在T下不变

2.对任意矩阵都可以表示为某个基上的上三角矩阵(构造过程由归纳0法,通过张成特征向量张成的空间以外的空	  间$(T-\lambda I)V$进行降维,详见done right P114)

​ 3.表示为某个基上的上三角矩阵则可以表示为某个规范正交基上的上三角矩阵(根据Gram-Schmit过程由1.中的 陈述或者用QR分解均可说明)

4.极分解

T ∈ L ( V ) T\in \mathcal{L}(V) TL(V),存在等距同构(Hermit矩阵)S,使得 T = S T ∗ T T=S\sqrt{T^*T} T=STT

5.满秩分解

r a n k ( A ) = r , A = B C , B ∈ C s × r , C ∈ C r × n , B , C rank(A)=r,A=BC,B\in C^{s\times r},C\in C^{r\times n},B,C rank(A)=r,A=BC,BCs×r,CCr×n,B,C秩都为r

A = B C A=BC A=BC矩阵的秩为r,线性无关的r行主子式为B,C对应的主子式是单位矩阵

具体例子见

矩阵论有关知识

def:矩阵相似 A = S B S − 1 , S A=SBS^{-1},S A=SBS1,S可逆(即同一线性变换在不同基上的矩阵)

def:矩阵合同 A = S T B S A=S^T B S A=STBS(同一双线性映射在不同基上的矩阵)

def:伴随算子(adjoin):对T,T的伴随算子 T ∗ , s . t . < T v , w > = < v , T ∗ w > T^*, \quad s.t. <Tv,w>=<v,T^*w> T,s.t.<Tv,w>=<v,Tw>,可知 T ∗ T^* T是T的共轭转置。

def:自伴算子(adjoint): T = T ∗ T=T^* T=T

def:正规算子(normal): T T ∗ = T ∗ T ⇔ ∣ ∣ T x ∣ ∣ = ∣ ∣ T ∗ X ∣ ∣ TT^*=T^*T\Leftrightarrow ||Tx||=||T^*X|| TT=TTTx=TX

def:对任意矩阵 A , A = P − 1 J P , J A,A=P^{-1}JP,J A,A=P1JP,J是jodan矩阵,P可逆

prop:正规算子对应不同特征值的特征向量是正交的:

(pf: ( a − b ) < u , v > = a < u , v > − b < u , v > = < T u , v > − < u , T ∗ v > = 0 (a-b)<u,v>=a<u,v>-b<u,v>=<Tu,v>-<u,T^*v>=0 (ab)<u,v>=a<u,v>b<u,v>=<Tu,v><u,Tv>=0)

prop: r a n k ( A A H ) = r a n k ( A ) rank(AA^H)=rank(A) rank(AAH)=rank(A)

prop: A , A T A,A^T A,AT有相同的特征值

prop:可对角化矩阵迹等于特征值之和

prop:AB,BA有相同特征值

thm:复谱定理:正规矩阵能做对角分解(S为正交矩阵)

thm:实谱定理:在实数域上对角分解要求自伴矩阵(S为Hermite矩阵)

6.广义矩阵

def: A ∈ C s × n , i f   G ∈ C n × s A\in C^{s\times n},if\, G\in C^{n\times s} ACs×n,ifGCn×s,满足下面M-P方程:则称G是A的广义逆矩阵:

  • AGA=A

  • GAG=G

  • ( A G ) H = A G (AG)^H=AG (AG)H=AG

  • ( G A ) H = G A (GA)^H=GA (GA)H=GA

prop:零矩阵的广义逆是零矩阵

thm:设 A ∈ C s × n A\in C^{s\times n} ACs×n,则A的广义逆是存在唯一的

pf:设 G 1 , G 2 G_1,G_2 G1,G2是A的广义逆则: G 1 = G 1 A G 1 = G 1 ( A G 1 ) H = G 1 G 1 H A H = G 1 G 1 H ( A G 2 A ) H G_1=G_1 A G_1=G_1(AG_1)^H=G_1G_1^HA^H=G_1G_1^H(AG_2 A)^H G1=G1AG1=G1(AG1)H=G1G1HAH=G1G1H(AG2A)H

= G 1 G 1 H A H ( A G 2 ) H = G 1 G 1 H A H A G 2 = G 1 ( A G 1 ) H A G 2 =G_1G_1^HA^H(AG_2)^H=G_1G_1^HA^HAG_2=G_1(AG_1)^HAG_2 =G1G1HAH(AG2)H=G1G1HAHAG2=G1(AG1)HAG2

= G 1 A G 1 A G 2 = G 1 A G 2 =G_1AG_1AG_2=G_1AG_2 =G1AG1AG2=G1AG2

​ 类似地 G 2 = G 1 A G 2 G_2=G_1AG_2 G2=G1AG2,唯一性得证

​ 利用矩阵的满秩分解 Y ( A ) = r , A = B C , B ∈ C s × r , C ∈ C r × n , B , C Y(A)=r,A=BC,B\in C^{s\times r},C\in C^{r\times n},B,C Y(A)=r,A=BC,BCs×r,CCr×n,B,C秩都为r

​ 构造广义逆矩阵: G = C H ( C C H ) − 1 ( B H B ) − 1 B H G=C^H(CC^H)^{-1}(B^HB)^{-1}B^H G=CH(CCH)1(BHB)1BH

remark:A的广义矩阵记为 A + A^+ A+

remark: ( A B ) + (AB)^+ (AB)+ B + A + B^+A^+ B+A+一般不相等

prop:

  • ( A + ) + = A (A^+)^+=A (A+)+=A

  • ( A H ) + = ( A + ) H (A^H)^+=(A^+)^H (AH)+=(A+)H

  • ( A T ) + = ( A + ) H (A^T)^+=(A^+)^H (AT)+=(A+)H

  • k ∈ R , ( k A ) + = k + A + k\in R,(kA)^+=k^+A^+ kR,(kA)+=k+A+

  • A H = A h A A + = A + A A H A^H=A^hAA^+=A^+AA^H AH=AhAA+=A+AAH

  • ( A A H ) + = A + ( A H ) + ; ( A A H ) + = ( A H ) + A + (AA^H)^+=A^+(A^H)^+;\qquad (AA^H)^+=(A^H)^+A^+ (AAH)+=A+(AH)+;(AAH)+=(AH)+A+

  • A + = ( A H A ) A H = A H ( A A H ) + A^+=(A^HA)A^H=A^H(AA^H)^+ A+=(AHA)AH=AH(AAH)+

  • U , V U,V U,V是酉矩阵,则 ( U A V ) + = V H A + U H (UAV)^+=V^HA^+U^H (UAV)+=VHA+UH

  • A + A B = A + A C ⇔ A B = A C A^+AB=A^+AC\Leftrightarrow AB=AC A+AB=A+ACAB=AC

example:

  • A A A是Hermite矩阵, A + A^+ A+也是Hermite矩阵
  • A是正规矩阵, ( A 2 ) + = ( A + ) 2 (A^2)^+=(A^+)^2 (A2)+=(A+)2

apply:

线性方程组 A x = b Ax=b Ax=b无解时,找到x使得 ∣ ∣ A x ^ − b ∣ ∣ 2 ||A\hat{x}-b||_2 Ax^b2最小。 η \eta η是最小二乘解 ⇔ η 是 A H A x = A H b \Leftrightarrow \eta 是 A^HAx=A^Hb ηAHAx=AHb的解

attention: x ⊥ s p a n ( a 1 , . . . , a n ) , A = ( a 1 , . . . , a n ) , → ∀ y : ( x , A y ) = 0 ⇔ ( A H x , y ) = 0 ⇔ A H x = 0 x\perp span(a_1,...,a_n),A=(a_1,...,a_n),\rightarrow \forall y:(x,Ay)=0\Leftrightarrow (A^Hx,y)=0\Leftrightarrow A^Hx=0 xspan(a1,...,an),A=(a1,...,an),y:(x,Ay)=0(AHx,y)=0AHx=0

通解 x = A + b + ( I − A + A ) y x=A^+b+(I-A^+A)y x=A+b+(IA+A)y,其中 A + b A^+b A+b是极小最小二乘解

行列式的计算

(1)Gauss消去法

对于顺序的Gauss消去法 d e t ( A ) = a 11 a 22 ( 1 ) . . . a n n ( n − 1 ) det(A)=a_{11}a^{(1)}_{22}...a^{(n-1)}_{nn} det(A)=a11a22(1)...ann(n1)即各主元的乘积

对于中间进行行变换的Gauss消去法则需要乘以 ( − 1 ) s (-1)^s (1)s,s为消元中行变换的次数

(2)Crout分解

A = L U , d e t ( A ) = d e t ( L ) A=LU,det(A)=det(L) A=LU,det(A)=det(L)

(3) L L T , L D L T LL^T,LDL^T LLT,LDLT消去法

d e t ( A ) = det(A)= det(A)=对角线元素的乘积

逆矩阵的计算

对于非奇异n阶矩阵A,用Gauss-Jordan消去法对A进行消元时 M n . . . M 1 A = I M_n...M_1 A=I Mn...M1A=I,其中
M k = [ 1 m 1 k 1 . . . m k k . . . . . . 1 m n k . . . 1 ] M_k=\begin{bmatrix} 1& & m_{1k}&& \\ & 1 & ...& &\\ & & m_{kk}&...& \\ &&...&1&\\ & &m_{nk} &...&1 \end{bmatrix} Mk=11m1k...mkk...mnk...1...1
从而 A − 1 = M n . . . M 1 A^{-1}=M_n...M_1 A1=Mn...M1

对于 M k M_k Mk的求和: M n . . . M 2 M 1 M_n...M_2M_1 Mn...M2M1存在特殊解法:

$T_1=M_1(e_{11}+A(e_{22}+…+e_{nn})) $ e i i e j j = 0 , i ≠ j , e i i e i i = e i i e_{ii}e_{jj}=0,i\neq j,e_{ii}e_{ii}=e_{ii} eiiejj=0,i=j,eiieii=eii

T 2 = M 2 ( e 22 + T 1 ( e 11 + e 22 + . . . e n n ) ) T_2=M_2(e_{22}+T_1(e_{11}+e_{22}+...{e_{nn}})) T2=M2(e22+T1(e11+e22+...enn))

A − 1 = M n . . . M 1 = T n A^{-1}=M_n...M_1=T_n A1=Mn...M1=Tn

范数

下面讨论的都是有限维的情况,在无限维的情况下,max=sup,min=inf其中多数叙述仍然成立。

(一)向量的范数

线性赋范空间

def:(1)非负性(正性&定性)

​ (2)齐次性(线性性)

​ (3)三角不等式

remark: l p l_p lp范数的三角不等式证明由Minkowski不等式可得

example:

1. ∞ \infty 范数 def: ∣ ∣ x ∣ ∣ ∞ = l i m p → ∞ ( ∑ i = 1 ∞ ∣ x i ∣ p ) 1 p ||x||_{\infty}=lim_{p\rightarrow \infty}(\sum_{i=1}^{\infty}|x_i|^p)^{\frac{1}{p}} x=limp(i=1xip)p1

∣ ∣ x ∣ ∣ ∞ = m a x 1 ≤ i ≤ n ∣ x i ∣ ||x||_{\infty}=max_{1\leq i\leq n}|x_i| x=max1inxi

​ pf: 记 m a x ∣ x i ∣ = ∣ x j ∣ , ∣ x j ∣ ≤ ( ∑ ∣ x i ∣ p ) 1 p ≤ n 1 p ∣ x j ∣ , n → ∞ , ∣ ∣ x ∣ ∣ ∞ = ∣ x j ∣ max|x_i|=|x_j|,|x_j|\leq(\sum |x_i|^p)^{\frac{1}{p}}\leq n^{\frac{1}{p}}|x_j|,n\rightarrow \infty,||x||_{\infty}=|x_j| maxxi=xj,xj(xip)p1np1xj,n,x=xj

2. ∣ ∣ x ∣ ∣ 2 ||x||_2 x2:Euclid范数,相关的有Cauchy-Schwarz不等式: ∣ ( x , y ) ∣ ≤ ∣ ∣ x ∣ ∣ 2 ∣ ∣ y ∣ ∣ 2 |(x,y)|\leq ||x||_2 ||y||_2 (x,y)x2y2(实质上是Euclid内积空间的性质)

3.A是给定的n阶实对称正定矩阵, x ∈ R n x\in R^n xRn,则 ∣ ∣ x ∣ ∣ A = ( x T A x ) 1 2 ||x||_A=(x^TAx)^{\frac{1}{2}} xA=(xTAx)21 R n R^n Rn中的一种范数

pf:对于三角不等式的证明: ∣ ∣ x + y ∣ ∣ A = ∣ ∣ L T ( x + y ) ∣ ∣ 2 = ∣ ∣ L T x + L T y ∣ ∣ 2 ≤ ∣ ∣ L T x ∣ ∣ 2 + ∣ ∣ L T y ∣ ∣ 2 = ∣ ∣ x ∣ ∣ A + ∣ ∣ y ∣ ∣ A ||x+y||_A=||L^T(x+y)||_2=||L^Tx+L^Ty||_2\leq ||L^Tx||_2+||L^Ty||_2=||x||_A+||y||_A x+yA=LT(x+y)2=LTx+LTy2LTx2+LTy2=xA+yA

prop:

1.对任意向量范数, ∀ x , y ∈ R n \forall x,y\in R^n x,yRn,恒有: ∣ ∣ ∣ x ∣ ∣ − ∣ ∣ y ∣ ∣ ≤ ∣ ∣ x − y ∣ ∣ |||x||-||y||\leq ||x-y|| xyxy,(在一维情况下即为绝对值不等式)​

pf: ∣ ∣ x ∣ ∣ ≥ ∣ ∣ y ∣ ∣ ||x||\geq ||y|| xy时, ∣ ∣ ∣ x ∣ ∣ − ∣ ∣ y ∣ ∣ ∣ = ∣ ∣ x ∣ ∣ − ∣ ∣ y ∣ ∣ ≤ ∣ ∣ x − y ∣ ∣ |||x||-||y|||= ||x||-||y||\leq||x-y|| xy=xyxy

∣ ∣ x ∣ ∣ ≤ ∣ ∣ y ∣ ∣ ||x||\leq ||y|| xy时,同理。

2. R n R^n Rn空间中,任意向量范数 ∣ ∣ x ∣ ∣ α ||x||_{\alpha} xα关于 l 2 l_2 l2范数是x的一致连续函数 (以欧氏空间上的拓扑为基础拓扑)

pf: ∀ x = ( x 1 , . . . , x n ) , y = ( y 1 , . . . , y n ) , ∣ ∣ x − y ∣ ∣ 2 = ( ∑ i = 1 n ( x i − y i ) 2 ) 1 2 < δ \forall x=(x_1,...,x_n),y=(y_1,...,y_n),||x-y||_2=(\sum_{i=1}^n (x_i-y_i)^2)^{\frac{1}{2}}<\delta x=(x1,...,xn),y=(y1,...,yn),xy2=(i=1n(xiyi)2)21<δ

∣ ∣ ∣ x ∣ ∣ α − ∣ ∣ y ∣ ∣ α ∣ ≤ ∣ ∣ x − y ∣ ∣ α |||x||_{\alpha}-||y||_{\alpha}|\leq ||x-y||_{\alpha} xαyαxyα

∣ ∣ x ∣ ∣ α = ∣ ∣ ∑ x i e i ∣ ∣ α ≤ ∑ ∣ x i ∣ ∣ ∣ e i ∣ ∣ α ≤ ∣ ∣ x ∣ ∣ 2 ( ∑ ∣ ∣ e i ∣ ∣ α 2 ) 1 2 ||x||_{\alpha}=||\sum x_ie_i||_{\alpha}\leq\sum |x_i|||e_i||_{\alpha}\leq ||x||_2(\sum ||e_i||_{\alpha}^2)^\frac{1}{2} xα=xieiαxieiαx2(eiα2)21(第一个不等式由三角不等式可得)

( ∑ i = 1 n ∣ ∣ e i ∣ ∣ α 2 ) 1 2 = c o n s t (\sum_{i=1}^n ||e_i||_{\alpha}^2)^\frac{1}{2}=const (i=1neiα2)21=const

​ 从而 ∣ ∣ ∣ x ∣ ∣ α − ∣ ∣ y ∣ ∣ α ∣ ≤ ∣ ∣ x − y ∣ ∣ α ≤ ∣ ∣ x − y ∣ ∣ 2 ( ∑ ∣ ∣ e i ∣ ∣ α 2 ) 1 2 < M δ |||x||_{\alpha}-||y||_{\alpha}|\leq ||x-y||_{\alpha}\leq||x-y||_2(\sum ||e_i||_{\alpha}^2)^\frac{1}{2}<M\delta xαyαxyαxy2(eiα2)21<Mδ

3. R n R^n Rn空间中的一切向量范数都是等价的,即对于任意两种范数 ∣ ∣ x ∣ ∣ α , ∣ ∣ β ∣ ∣ α ||x||_\alpha,||\beta||_\alpha xα,βα总存在与x无关的正常数 c 1 , c 2 ∈ R , s . t . c_1,c_2\in R,s.t. c1,c2R,s.t.(利用赋范线性空间特点)
c 1 ∣ ∣ x ∣ ∣ β ≤ ∣ ∣ x ∣ ∣ α ≤ c 2 ∣ ∣ x ∣ ∣ β , ∀ x ∈ R n c_1||x||_{\beta}\leq ||x||_{\alpha}\leq c_2||x||_{\beta},\qquad \forall x\in R^n c1xβxαc2xβ,xRn
pf:对于这点的证明,我们先将x单位化、标准化再做其它考虑。

∣ ∣ x ∣ ∣ α = ∣ ∣ x ∣ ∣ 2 ∣ ∣ x ∣ ∣ x ∣ ∣ 2 ∣ ∣ α = ∣ ∣ x ∣ ∣ 2 ∣ ∣ y ∣ ∣ α ||x||_{\alpha}=||x||_2||\frac{x}{||x||_2}||_{\alpha}=||x||_{2}||y||_{\alpha} xα=x2x2xα=x2yα其中 y ∈ { y : ∣ ∣ y ∣ ∣ 2 = 1 , y ∈ R n } , y\in \lbrace y:||y||_2=1 ,y\in R^n\rbrace, y{y:y2=1,yRn}, t ( y ) = ∣ ∣ y ∣ ∣ α t(y)=||y||_\alpha t(y)=yα是连续函数从而在闭球 面上有最大值和最小值 c 1 , c 2 c_1,c_2 c1,c2,从而 c 2 ∣ ∣ x ∣ ∣ 2 ≤ ∣ ∣ x ∣ ∣ α ≤ c 1 ∣ ∣ x ∣ ∣ 2 c_2||x||_2\leq||x||_\alpha\leq c_1||x||_2 c2x2xαc1x2利用 ∣ ∣ x ∣ ∣ 2 ||x||_2 x2做过渡可轻松进行证明。

4. R n R^n Rn空间中的 l p ( p = 1 , 2 , ∞ ) l_p(p=1,2,\infty) lp(p=1,2,)范数满足以下关系式:

  • ∣ ∣ x ∣ ∣ ∞ ≤ ∣ ∣ x ∣ ∣ 1 ≤ n ∣ ∣ x ∣ ∣ ∞ ||x||_{\infty}\leq ||x||_1 \leq n||x||_{\infty} xx1nx
  • ∣ ∣ x ∣ ∣ ∞ ≤ ∣ ∣ x ∣ ∣ 2 ≤ n ∣ ∣ x ∣ ∣ ∞ ||x||_{\infty}\leq ||x||_2 \leq \sqrt{n}||x||_{\infty} xx2n x
  • 1 n ∣ ∣ x ∣ ∣ 1 ≤ ∣ ∣ x ∣ ∣ 2 ≤ ∣ ∣ x ∣ ∣ 1 \frac{1}{\sqrt{n}}||x||_1\leq ||x||_2\leq ||x||_1 n 1x1x2x1 由Cauchy-Schwarz不等式可得

remark:这一步的证明过程适用于证明上一步,3强于2

example:设 A ∈ R n × n A\in R^{n\times n} ARn×n,在 R n R^n Rn中给定范数 ∣ ∣ ⋅ ∣ ∣ α ||\cdot||_\alpha α,证明 g ( x ) = ∣ ∣ A x ∣ ∣ α g(x)=||Ax||_{\alpha} g(x)=Axα关于范数 ∣ ∣ ⋅ ∣ ∣ α ||\cdot||_{\alpha} α是x的连续函数。

remark:从线性泛函的角度上看上述叙述是显然的。

​ 证明: ∣ g ( x ) − g ( y ) ∣ ≤ ∣ ∣ A ( x − y ) ∣ ∣ α ≤ c 1 ∣ b ⃗ ⋅ ( x − y ⃗ ) ∣ ≤ c 1 m a x { ∣ b i ∣ } ∣ ∣ x − y ∣ ∣ 1 ≤ c 1 m a x { ∣ b i ∣ } c 2 ∣ ∣ x − y ∣ ∣ α |g(x)-g(y)|\leq ||A(x-y)||_{\alpha}\leq c_1 |\vec{b}\cdot(\vec{x-y})|\leq c_1max\lbrace|b_i|\rbrace ||x-y||_1\leq c_1max\lbrace|b_i|\rbrace c_2||x-y||_{\alpha} g(x)g(y)A(xy)αc1b (xy )c1max{bi}xy1c1max{bi}c2xyα 其中 m a x { ∣ b i ∣ } max\lbrace|b_i|\rbrace max{bi}不超过A中每列绝对值最大的数的绝对值的求和。

(二)、矩阵的范数

首先对方阵进行定义:

R n × n R^{n\times n} Rn×n表示全体 n × n n\times n n×n阶实矩阵构成的线性空间,设 A ∈ R n × n A\in R^{n\times n} ARn×n若在 R n × n R^{n\times n} Rn×n中定义实值函数 ∣ ∣ A ∣ ∣ ||A|| A,满足:

  1. 正定性
  2. 线性性
  3. 三角不等式
  4. 相容性 ∣ ∣ A B ∣ ∣ ≤ ∣ ∣ A ∣ ∣ ⋅ ∣ ∣ B ∣ ∣ , ∀ A , B ∈ R n × n ||AB||\leq ||A||\cdot||B||,\qquad \forall A,B\in R^{n\times n} ABAB,A,BRn×n

∣ ∣ A ∣ ∣ ||A|| A为矩阵A的一种范数或者模或矩阵范数,相容范数。

def:矩阵范数 ∣ ∣ ⋅ ∣ ∣ β ||\cdot||_\beta β和向量范数 ∣ ∣ ⋅ ∣ ∣ α ||\cdot||_\alpha α是相容的: ∣ ∣ A x ∣ ∣ α ≤ ∣ ∣ A ∣ ∣ β ∣ ∣ x ∣ ∣ α , ∀ A ∈ R n × n , x ∈ R n ||Ax||_\alpha\leq ||A||_\beta||x||_\alpha,\forall A\in R^{n\times n},x\in R^n AxαAβxα,ARn×n,xRn

thm:设 ∣ ∣ ⋅ ∣ ∣ β ||\cdot||_\beta β R n × n R^{n\times n} Rn×n中的任意一种矩阵范数,则在 R n R^n Rn中至少存在一种向量范数 ∣ ∣ ⋅ ∣ ∣ α ||\cdot||_\alpha α使得 ∣ ∣ ⋅ ∣ ∣ α , ∣ ∣ ⋅ ∣ ∣ β ||\cdot||_\alpha,||\cdot||_\beta α,β是相容 的。

   pf:构造$||\cdot||_{\beta}=||[x,0,...,0]||_\beta,\qquad [x,0,...,0]\in R^{n\times n}$

def:假设矩阵范数 ∣ ∣ A ∣ ∣ β ||A||_\beta Aβ和向量范数 ∣ ∣ x ∣ ∣ α ||x||_\alpha xα相容且 ∀ A ∈ R n × n \forall A\in R^{n\times n} ARn×n都存在一个非零向量 x 0 ∈ R n x_0\in R^n x0Rn,使得
∣ ∣ A x 0 ∣ ∣ α = ∣ ∣ A ∣ ∣ β ∣ ∣ x 0 ∣ ∣ α ||Ax_0||_\alpha=||A||_\beta||x_0||_\alpha Ax0α=Aβx0α
则说 ∣ ∣ A ∣ ∣ β ||A||_\beta Aβ是从属于向量范数 ∣ ∣ x ∣ ∣ α ||x||_\alpha xα的矩阵范数

remark:从属的必要条件是 ∣ ∣ I ∣ ∣ β = 1 ||I||_\beta=1 Iβ=1

thm:对于 R n R^n Rn中的向量范数 ∣ ∣ ⋅ ∣ ∣ α ||\cdot||_\alpha α都存在从属于它的矩阵范数 ∣ ∣ ⋅ ∣ ∣ β ||\cdot||_\beta β

其中一种为 ∣ ∣ A ∣ ∣ = m a x ∣ ∣ x ∣ ∣ α = 1 ∣ ∣ A x ∣ ∣ α ||A||=max_{||x||_\alpha=1}||Ax||_\alpha A=maxxα=1Axα,次范数被定义为算子范数。

pf:由范数等价性& ∣ ∣ A x ∣ ∣ ||Ax|| Ax是有界闭集上的连续函数知最大值能取到。(1)非负性(正且定)(2)齐次性(3)三角不等式(3)相容性 ∣ ∣ A B ∣ ∣ = m a x ∣ ∣ A B x ∣ ∣ ≤ m a x ∣ ∣ A ∣ ∣ ∣ ∣ B x ∣ ∣ ≤ m a x ∣ ∣ A ∣ ∣ ∣ ∣ B ∣ ∣ ∣ ∣ x ∣ ∣ = ∣ ∣ A ∣ ∣ ∣ ∣ B ∣ ∣ ||AB||=max ||ABx||\leq max ||A||||Bx||\leq max ||A||||B||||x||=||A||||B|| AB=maxABxmaxABxmaxABx=AB;证明相容性 ∣ ∣ A ∣ ∣ α ≥ ∣ ∣ A x ∣ ∣ x ∣ ∣ α ∣ ∣ α ||A||_\alpha\geq ||\frac{Ax}{||x||_{\alpha}}||_\alpha AαxαAxα

prop:

同样有 ∣ ∣ ∣ A ∣ ∣ − ∣ ∣ B ∣ ∣ ∣ ≤ ∣ ∣ A − B ∣ ∣ |||A||-||B|||\leq ||A-B|| ABAB

example:

  • 1-范数 ∣ ∣ A ∣ ∣ 1 = m a x 1 ≤ j ≤ n ∑ i = 1 n ∣ a i j ∣ ||A||_1=max_{1\leq j\leq n}\sum_{i=1}^n |a_{ij}| A1=max1jni=1naij

  • 2-范数(谱范数) ∣ ∣ A ∣ ∣ 2 = ρ 1 2 ( A T A ) , ρ ||A||_2=\rho^{\frac{1}{2}}(A^TA),\quad \rho A2=ρ21(ATA),ρ表示矩阵谱半径(即特征值最大值)

    注意这里是 A T A A^TA ATA本质上 A B , B A AB,BA AB,BA具有相同的特征值,但是其特征向量不一定相同;同样P和 P T P^T PT也有相同的特征值但是特征向量不一定相同(由特征多项式的形式可看出)

    pf: A B x = λ x , B A B x = λ B x , B x ABx=\lambda x,BABx=\lambda Bx,Bx ABx=λx,BABx=λBx,Bx B A BA BA关于 λ \lambda λ的特征向量。

  • ∞ \infty -范数 ∣ ∣ A ∣ ∣ ∞ = m a x 1 ≤ i ≤ n ∑ i = j n ∣ a i j ∣ ||A||_\infty=max_{1\leq i\leq n}\sum_{i=j}^n |a_{ij}| A=max1ini=jnaij

  • F-范数 ∣ ∣ A ∣ ∣ F = ( ∑ i ∑ j ∣ a i j ∣ 2 ) 1 2 ∣ ∣ A x ∣ ∣ 2 ≤ ∣ ∣ A ∣ ∣ F ∣ ∣ x ∣ ∣ 2 , 由 于 ∣ ∣ I ∣ ∣ F ≠ 1 ||A||_F=(\sum_i\sum_j|a_{ij}|^2)^{\frac{1}{2}}\qquad ||Ax||_2\leq ||A||_F||x||_2,由于||I||_F\neq 1 AF=(ijaij2)21Ax2AFx2IF=1知F-范 数不从属于任何范数

$||A||_2\leq ||A||_F\leq \sqrt{n}||A||_2 $

pf:$||A||_2^2=max_i \lambda_i\geq \frac{1}{n}(\lambda_1+…+\lambda_n )=\frac{1}{n}tr(ATA)=\frac{1}{n}||A||_F2 $实对称矩阵的迹等于特征值的和,且是半正定矩阵(特征值不小于0)。

上述定义在共轭转置的基础上可推广到复数域上的矩阵,在考虑 C n , C m C^n,C^m Cn,Cm上的范数后可推广到 C n × n C^{n\times n} Cn×n非方阵上,详见P69.

thm:

对于任意矩阵范数 ∣ ∣ ⋅ ∣ ∣ ||\cdot|| ,都有 ρ ( A ) ≤ ∣ ∣ A ∣ ∣ , ∀ A ∈ C n × n \rho(A)\leq ||A||,\quad \forall A\in C^{n\times n} ρ(A)A,ACn×n

pf:由于对于所有矩阵范数都存在向量范数 ∣ ∣ ⋅ ∣ ∣ α ||\cdot||_\alpha α使得两者相容,即 ∣ ∣ A x ∣ ∣ α ≤ ∣ ∣ A ∣ ∣ ⋅ ∣ ∣ x ∣ ∣ α ||Ax||_\alpha\leq ||A||\cdot ||x||_\alpha AxαAxα,取 x x x为A的特征向量,则有 λ ∣ ∣ x ∣ ∣ α ≤ ∣ ∣ A ∣ ∣ ⋅ ∣ ∣ x ∣ ∣ α \lambda||x||_\alpha\leq ||A||\cdot ||x||_\alpha λxαAxα,QED.

补充Jordan矩阵幂运算

Jodan jordan2

thm:设 A ∈ C n × n , ∀ ϵ > 0 , ∃ ∣ ∣ ⋅ ∣ ∣ β , s . t . ∣ ∣ A ∣ ∣ β ≤ ρ ( A ) + ϵ A\in C^{n\times n},\forall \epsilon >0,\exist ||\cdot||_\beta,s.t.||A||_{\beta}\leq \rho(A)+\epsilon ACn×n,ϵ>0,β,s.t.Aβρ(A)+ϵ

pf:A必与一个Jordan标准型 J J J相似,即存在非奇异矩阵P使得 P − 1 A P = J , D = d i a g ( 1 , ϵ , . . . , ϵ n − 1 ) , D − 1 J D = J ~ P^{-1}AP=J,D=diag(1,\epsilon,...,\epsilon^{n-1}),D^{-1}JD=\tilde{J} P1AP=JD=diag(1,ϵ,...,ϵn1),D1JD=J~将J的每一个非对角1换成 ϵ , J ~ = Q − 1 A Q , Q = P D , ∣ ∣ Q − 1 A Q ∣ ∣ 1 = ∣ ∣ J ~ ∣ ∣ 1 ≤ ρ ( A ) + ϵ ∣ ∣ A ∣ ∣ β = ∣ ∣ Q − 1 A Q ∣ ∣ 1 \epsilon,\tilde{J}=Q^{-1}AQ,Q=PD,\qquad ||Q^{-1}AQ||_1=||\tilde{J}||_1\leq \rho(A)+\epsilon\qquad ||A||_\beta=||Q^{-1}AQ||_1 ϵ,J~=Q1AQ,Q=PD,Q1AQ1=J~1ρ(A)+ϵAβ=Q1AQ1是一种矩阵范数 QED.

remark:上面两个定理说明 ρ ( A ) \rho(A) ρ(A)是A的范数的下确界。

thm:Banach Lemma

B ∈ C n × n , ρ ( B ) < 1 B\in C^{n\times n},\rho(B)<1 BCn×n,ρ(B)<1,则矩阵 I ± B I\pm B I±B都是非奇异的,而且对任何 ∣ ∣ I ∣ ∣ = 1 ||I||=1 I=1的矩阵范数 ∣ ∣ ⋅ ∣ ∣ ||\cdot|| ,若有 ∣ ∣ B ∣ ∣ < 1 ||B||<1 B<1,则
∣ ∣ ( I ± B − 1 ) ∣ ∣ ≤ 1 1 − ∣ ∣ B ∣ ∣ ||(I\pm B^{-1})||\leq \frac{1}{1-||B||} (I±B1)1B1
pf:因为 ρ ( B ) < 1 , I ± B \rho(B)<1,I\pm B ρ(B)<1,I±B的特征值的模非0(做jordan分解)。

​ 又 ( I + B ) ( I + B ) − 1 = I , ( I + B ) − 1 = I − B ( I + B ) − 1 (I+B)(I+B)^{-1}=I,(I+B)^{-1}=I-B(I+B)^{-1} (I+B)(I+B)1=I,(I+B)1=IB(I+B)1
∣ ∣ ( I + B ) − 1 ∣ ∣ ≤ ∣ ∣ I ∣ ∣ + ∣ ∣ B ∣ ∣ ∣ ∣ ( I + B ) − 1 ∣ ∣ → ( 1 − ∣ ∣ B ∣ ∣ ) ∣ ∣ ( I + B ) − 1 ∣ ∣ ≤ ∣ ∣ 1 ∣ ∣ ||(I+B)^{-1}||\leq ||I||+||B|| ||(I+B)^{-1} ||\rightarrow\quad (1-||B||)||(I+B)^{-1}|| \leq ||1|| (I+B)1I+B(I+B)1(1B)(I+B)11
QED

(三)、向量列与矩阵列的收敛

def:向量列的收敛:各分量收敛

def:矩阵列的收敛:各元素收敛

矩阵级数收敛:部分和收敛

thm: C n × n C^{n \times n} Cn×n空间中的矩阵序列 A 1 , . . . A_1,... A1,...收敛于A的充要条件是存在一种矩阵范数 ∣ ∣ ⋅ ∣ ∣ , s . t . l i m k → ∞ ∣ ∣ A k − A ∣ ∣ = 0 ||\cdot||,s.t.lim_{k\rightarrow \infty}{||A_k-A||=0} ,s.t.limkAkA=0

pf:(1)对于向量范数有,从而进行类比$lim |B|=lim |C|\leftarrow lim B=limC 当 且 仅 当 当且仅当 lim |C|=0 从 左 到 右 可 推 , 从 而 考 虑 从左到右可推,从而考虑 lim|A_k-A|\rightarrow 0$

​ (2)证明有限维空间上任何范数等价。所以只对 ∣ A ∣ M = n m a x ∣ a i j ∣ |A|_M=nmax|a_{ij}| AM=nmaxaij, l i m ∣ ∣ A K − A ∣ ∣ M = l i m   n   m a x ∣ ∣ a i j − a j ∣ ∣ lim ||A_K-A||_M=lim\, n\,max||a_{ij}-a_j|| limAKAM=limnmaxaijaj这样各元素收敛等价于M范数收敛。

thm: C n C^{n } Cn空间中的数列 a 1 , . . . a_1,... a1,...收敛于a的充要条件是存在一种矩阵范数 ∣ ∣ ⋅ ∣ ∣ , s . t . l i m k → ∞ ∣ ∣ a k − a ∣ ∣ = 0 ||\cdot||,s.t.lim_{k\rightarrow \infty}{||a_k-a||=0} ,s.t.limkaka=0

thm:设 A ∈ C n × n , l i m k → ∞ A k = 0 ⇔ ρ ( A ) < 1 A\in C^{n\times n},lim_{k\rightarrow \infty}A^k=0\Leftrightarrow \rho(A)<1 ACn×n,limkAk=0ρ(A)<1

pf: ⇒ \Rightarrow 反设 ρ ( A ) ≥ 1 , ρ ( A k ) ≥ 1 → ∣ ∣ A K ∣ ∣ ≥ 1 \rho(A)\geq 1,\rho(A^k)\geq 1\rightarrow||A^K||\geq 1 ρ(A)1,ρ(Ak)1AK1,从而 l i m ∣ ∣ A k ∣ ∣ ≠ 0 → A ≠ 0 lim ||A^k||\neq 0\rightarrow A\neq 0 limAk=0A=0

⇐ \Leftarrow ρ ( A ) < 1 , ϵ 0 = 1 − ρ ( A ) 2 > 0 \rho(A)<1,\epsilon_0=\frac{1-\rho(A)}{2}>0 ρ(A)<1,ϵ0=21ρ(A)>0存在矩阵范数

∣ ∣ ⋅ ∣ ∣ β , s . t . ∣ ∣ A ∣ ∣ β ≤ ρ ( A ) + ϵ 0 < 1 → ∣ ∣ A k ∣ ∣ β ≤ ∣ ∣ A ∣ ∣ β k ≤ q k , q < 1 , ∣ ∣ A k ∣ ∣ → 0 , A k → 0 ||\cdot||_\beta,s.t.||A||_\beta\leq \rho(A)+\epsilon_0<1\rightarrow ||A^k||_\beta\leq ||A||_\beta^k\leq q^k,q<1,||A^k||\rightarrow 0,A^k\rightarrow 0 β,s.t.Aβρ(A)+ϵ0<1AkβAβkqk,q<1,Ak0,Ak0

thm: A ∈ C n × n , ∑ k = 0 ∞ A k A\in C^{n\times n},\sum_{k=0}^\infty A^k ACn×n,k=0Ak收敛$\Leftrightarrow $ ρ ( A ) < 1 \rho(A)<1 ρ(A)<1, 且若 ρ ( A ) < 1 \rho(A)<1 ρ(A)<1,则 ( I − A ) − 1 (I-A)^{-1} (IA)1存在 , ∑ k = 0 ∞ A k = ( 1 − A ) − 1 \sum_{k=0}^\infty A^k=(1-A)^{-1} k=0Ak=(1A)1

pf: ⇒ \Rightarrow S n = ∑ k = 0 m A k S_n=\sum_{k=0}^m A^k Sn=k=0mAk,则由矩阵幂级数收敛知 l i m m → ∞ S m = S lim_{m\rightarrow \infty}{S_m}=S limmSm=S, l i m A k = l i m ( S k − S k − 1 ) = 0 lim A^k=lim (S_k-S_{k-1})=0 limAk=lim(SkSk1)=0由上述定理知 ρ ( A ) < 1 \rho(A)<1 ρ(A)<1

⇐ \Leftarrow ρ ( A ) < 1 \rho(A)<1 ρ(A)<1, ( I − A ) − 1 (I-A)^{-1} (IA)1存在

( I − A ) S k = ( I − A ) ( 1 + A + A 2 + . . . + A k ) = I − A k + 1 (I-A)S_k=(I-A)(1+A+A^2+...+A^k)=I-A^{k+1} (IA)Sk=(IA)(1+A+A2+...+Ak)=IAk+1

S k = ( I − A ) − 1 ( I − A k + 1 ) S_k=(I-A)^{-1}(I-A^{k+1}) Sk=(IA)1(IAk+1)

= ( I − A ) − 1 − ( I − A ) − 1 A k + 1 =(I-A)^{-1}-(I-A)^{-1}A^{k+1} =(IA)1(IA)1Ak+1

从而 ∣ ∣ S k − ( I − A ) − 1 ∣ ∣ ≤ ∣ ∣ ( I − A ) − 1 ∣ ∣ ∣ ∣ A k + 1 ∣ ∣ ||S_k-(I-A)^{-1}||\leq ||(I-A)^{-1}||||A^{k+1}|| Sk(IA)1(IA)1Ak+1 ρ ( A ) < 1 → l i m k → ∞ ∣ ∣ A k + 1 ∣ ∣ = 0 \rho(A)<1\rightarrow lim_{k\rightarrow \infty} ||A^{k+1}||=0 ρ(A)<1limkAk+1=0从而 S n → ( I − A ) − 1 S_n\rightarrow (I-A)^{-1} Sn(IA)1

thm:设 A ∈ C n × n A\in C^{n\times n} ACn×n,若对 C n × n C^{n\times n} Cn×n中的某种范数 ∣ ∣ ⋅ ∣ ∣ ||\cdot|| ∣ ∣ A ∣ ∣ < 1 ||A||<1 A<1,则有
∣ ∣ ( 1 − A ) − 1 − ( I + A 2 + . . . + A k ) ∣ ∣ ≤ ∣ ∣ A ∣ ∣ k + 1 1 − ∣ ∣ A ∣ ∣ ||(1-A)^{-1}-(I+A^2+...+A^k)||\leq \frac{||A||^{k+1}}{1-||A||} (1A)1(I+A2+...+Ak)1AAk+1
pf: L H S = ∣ ∣ A k + 1 + A k + 2 + . . . ∣ ∣ ≤ ∣ ∣ A k + 1 ∣ ∣ ∣ ∣ 1 + A + A 2 + . . . ∣ ∣ ≤ ∣ ∣ A k + 1 ∣ ∣ ∣ ∣ ( 1 − A ) − 1 ∣ ∣ ≤ B a n a c h L e m m a ∣ ∣ A k + 1 ∣ ∣ 1 − ∣ ∣ A ∣ ∣ = R H S LHS=||A^{k+1}+A^{k+2}+...||\leq ||A^{k+1}||||1+A+A^2+...||\leq||A^{k+1}||||(1-A)^{-1}||\overset{Banach Lemma}\leq \frac{||A^{k+1}||}{1-||A||}=RHS LHS=Ak+1+Ak+2+...Ak+11+A+A2+...Ak+1(1A)1BanachLemma1AAk+1=RHS

(banach引理需要加上条件 ∣ ∣ I ∣ ∣ = 1 ||I||=1 I=1)

如果没有 ∣ ∣ I ∣ ∣ = 1 : ∣ ∣ ( I − A ) − 1 − ( I + A + A 2 + . . . + A k ) ∣ ∣ ||I||=1:||(I-A)^{-1}-(I+A+A^2+...+A^k)|| I=1:(IA)1(I+A+A2+...+Ak)

≤ ∣ ∣ A ∣ ∣ k + 1 + . . . + ∣ ∣ A ∣ ∣ k + m + ∣ ∣ A ∣ ∣ k + m + 1 ( I − A ) − 1 , ( m → ∞ ) \leq ||A||^{k+1}+...+||A||^{k+m}+||A||^{k+m+1}(I-A)^{-1},\qquad (m\rightarrow \infty) Ak+1+...+Ak+m+Ak+m+1(IA)1,(m)

≤ ∑ i = k + 1 ∞ ∣ ∣ A ∣ ∣ i = R H S \leq \sum_{i=k+1}^\infty ||A||^i=RHS i=k+1Ai=RHS

thm:酉矩阵的保范性质

A ∈ C n × n , Q Q H = I , ⇒ ∣ ∣ Q A ∣ ∣ 2 = ∣ ∣ A Q ∣ ∣ 2 = ∣ ∣ A ∣ ∣ 2 A\in C^{n\times n},QQ^H=I,\Rightarrow ||QA||_2=||AQ||_2=||A||_2 ACn×nQQH=I,QA2=AQ2=A2

pf: ∣ ∣ Q H ∣ ∣ 2 = ∣ ∣ Q ∣ ∣ 2 = 1 ||Q^H||_2=||Q||_2=1 QH2=Q2=1

∣ ∣ Q A ∣ ∣ 2 ≤ ∥ ∣ Q ∣ ∣ 2 ∣ ∣ A ∣ ∣ 2 = ∣ ∣ A ∣ ∣ , ∣ ∣ A ∣ ∣ 2 = ∣ ∣ Q H Q A ∣ ∣ 2 ≤ ∣ ∣ Q H ∣ ∣ 2 ∣ ∣ Q A ∣ ∣ 2 = ∣ ∣ Q A ∣ ∣ 2 ||QA||_2\leq \||Q||_2||A||_2=||A||,||A||_2=||Q^HQA||_2\leq ||Q^H||_2||QA||_2=||QA||_2 QA2Q2A2=A,A2=QHQA2QH2QA2=QA2QED

误差分析

条件数 C o n d ( A ) = ∣ ∣ A ∣ ∣ ∣ ∣ A − 1 ∣ ∣ Cond(A)=||A||||A^{-1}|| Cond(A)=AA1

谱条件数 K ( A ) = C o n d ( A ) 2 = ∣ ∣ A ∣ ∣ 2 ∣ ∣ A − 1 ∣ ∣ 2 K(A)=Cond(A)_2=||A||_2||A^{-1}||_2 K(A)=Cond(A)2=A2A12

条件数大:坏条件的,病态方程组

摄动问题
1.左右同时摄动

thm:设 A ∈ R n × n A\in R^{n\times n} ARn×n非奇异, ∣ ∣ ⋅ ∣ ∣ ||\cdot|| 是任一从属矩阵范数且假设误差 δ A ∈ R n × n , ∣ ∣ A − 1 ∣ ∣ ∣ ∣ δ A ∣ ∣ < 1 \delta A\in R^{n\times n},||A^{-1}||||\delta A||<1 δARn×n,A1δA<1若X是 A x = b Ax=b Ax=b的解, x + δ x x+\delta x x+δx ( A + A δ ) y = b + b δ (A+A\delta)y=b+b\delta (A+Aδ)y=b+bδ的解,则(X(A)=Cond(A))
∣ ∣ δ x ∣ ∣ ∣ ∣ x ∣ ∣ ≤ X ( A ) 1 − X ( A ) ∣ ∣ δ A ∣ ∣ ∣ ∣ A ∣ ∣ ( ∣ ∣ δ b ∣ ∣ ∣ ∣ b ∣ ∣ + ∣ ∣ δ A ∣ ∣ ∣ ∣ A ∣ ∣ ) \frac{||\delta x||}{||x||}\leq \frac{X(A)}{1-X(A)\frac{||\delta A||}{||A||}}(\frac{||\delta b||}{||b||}+\frac{||\delta A||}{||A||}) xδx1X(A)AδAX(A)(bδb+AδA)
pf: ∣ ∣ A − 1 ∣ ∣ ∣ ∣ δ A ∣ ∣ < 1 , A + δ A = A ( I + A − 1 δ A ) ||A^{-1}||||\delta A||<1,A+\delta A=A(I+A^{-1}\delta A) A1δA<1,A+δA=A(I+A1δA)可逆

​ 且 ( δ A + A ) − 1 = ( I + A − 1 δ A ) − 1 A − 1 (\delta A+A)^{-1}=(I+A^{-1}\delta A)^{-1}A^{-1} (δA+A)1=(I+A1δA)1A1

( A + δ A ) ( x + δ x ) = b + b δ (A+\delta A)(x+\delta x)=b+b\delta (A+δA)(x+δx)=b+bδ

δ x \delta x δx

$ =(A+\delta A)^{-1}(b+\delta b)-x$

= ( A + A δ ) − 1 [ b + δ b − ( A + δ A ) x ] =(A+A\delta)^{-1}[b+\delta b-(A+\delta A)x] =(A+Aδ)1[b+δb(A+δA)x]

= ( I + A − 1 δ A ) − 1 A − 1 ( δ b − δ A x ) =(I+A^{-1}\delta A)^{-1}A^{-1}(\delta b-\delta Ax) =(I+A1δA)1A1(δbδAx)

取范数可得上述不等式

remark:条件数对应的摄动问题实质上表现的是矩阵在各维度的拉伸比例,因为比例不均匀而带来误差。

2.舍入误差

避免大数吞小数一类的误差

def:数值稳定

列主元Gauss消去法不是数值稳定的

thm:用Gauss列主元消去法解n阶线性方程得到的计算解x是系数矩阵 A A A有摄动 δ A \delta A δA的摄动方程组 ( A + δ A ) x = b (A+\delta A)x=b (A+δA)x=b的准确解,这里摄动矩阵(或称误差矩阵 δ A \delta A δA)满足估计式:
∣ ∣ δ A ∣ ∣ ∞ ≤ 1.01 ( n 3 + 3 n 2 ) ρ ∣ ∣ A ∣ ∣ ∞ e p s ||\delta A||_\infty\leq 1.01(n^3+3n^2)\rho||A||_\infty eps δA1.01(n3+3n2)ρAeps
ρ = m a x i , j , k ∣ a i j ( k ) ∣ ∣ ∣ A ∣ ∣ ∞ , e p s \rho=\frac{max_{i,j,k}|a_{ij}^{(k)}|}{||A||_\infty},eps ρ=Amaxi,j,kaij(k),eps按进制估计舍入误差

mindmap2.1

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KIYdoZ8s-1615550215966)(C:\Users\10539\Desktop\课程\数值分析\2.2矩阵和向量范数.jpg)]

Chap 3:解线性方程的迭代法

迭代法的基本理论

迭代法基本概念

解方程组 A x = b Ax=b Ax=b

x 0 , . . . , x k , . . . x_0,...,x_k,... x0,...,xk,...称为迭代序列

一阶线性定常迭代法: x k = G x k − 1 + g x_k=Gx_{k-1}+g xk=Gxk1+g:迭代公式; G : G: G:迭代矩阵

迭代法收敛&发散

e ( k ) = x ∗ − x k e^{(k)}=x^*-x_k e(k)=xxk为第k步的误差向量,若迭代法收敛,则当k充分大时可以把 x m x_m xm当作解 x ∗ x^* x的 近似向量,即方程的近似解。

x ∗ x^* x是方程 x = G x + g x=Gx+g x=Gx+g的解。若 x = G x + g x=Gx+g x=Gx+g A x = b Ax=b Ax=b同解则称迭代法与方程组是完全相容的。

构造迭代矩阵: A = Q − R A=Q-R A=QR,Q非奇异,称Q为分裂矩阵,从而 A x = b ⇒ ( Q − R ) x = b Ax=b\Rightarrow (Q-R)x=b Ax=b(QR)x=b

⇒ x = Q − 1 R x + Q − 1 b ⇒ G = 1 − Q − 1 A ; b = Q − 1 b \Rightarrow x=Q^{-1}Rx+Q^{-1}b\Rightarrow G=1-Q^{-1}A;b=Q^{-1}b x=Q1Rx+Q1bG=1Q1A;b=Q1b

迭代法收敛条件

thm:上述迭代收敛的充要条件: l i m k → ∞ G k = O lim_{k\rightarrow \infty}G^k=O limkGk=O

​ pf: e k = x ∗ − x k = G x ∗ + g − ( G x k − 1 + g ) = G ( x ∗ − x k − 1 ) = G k ( x ∗ − x 0 ) e^{k}=x^*-x_k=Gx^*+g-(G x_{k-1}+g)=G(x^{*}-x_{k-1})=G^k(x^*-x_0) ek=xxk=Gx+g(Gxk1+g)=G(xxk1)=Gk(xx0)

e k → 0 e^k\rightarrow 0 ek0等价于题目条件。

thm:上述迭代收敛等价于G的谱半径小于1,即 ρ ( G ) < 1 \rho(G)<1 ρ(G)<1 等价于存在范数使得 ∣ ∣ G ∣ ∣ < 1 ||G||<1 G<1

误差估计

对近似解 x k x^k xk有误差估计式: ∣ ∣ x k − x ∗ ∣ ∣ ≤ ∣ ∣ G k ∣ ∣ ∣ ∣ x ∗ − x 0 ∣ ∣ ||x_k-x^*||\leq ||G^k||||x^*-x_0|| xkxGkxx0

以及 ∣ ∣ x k − x ∗ ∣ ∣ ≤ ∣ ∣ G ∣ ∣ k 1 − ∣ ∣ G ∣ ∣ ∣ ∣ x 1 − x 0 ∣ ∣ ||x_k-x^*||\leq \frac{||G||^k}{1-||G||}||x_1-x_0|| xkx1GGkx1x0

pf:第一个不等式容易由 x ∗ − x k = G k ( x ∗ − x 0 ) x^*-x_k=G^k(x^*-x_0) xxk=Gk(xx0)得出

​ 对第二个不等式: x k − x ∗ = ∑ i = k ∞ ( x i − x i + 1 ) = ∑ i = k ∞ G ( x i − 1 − x i ) = ∑ i = k ∞ G i ( x 0 − x 1 ) = ∑ i = 1 ∞ G i ( x 0 − x 1 ) x_k-x^*=\sum_{i=k}^\infty (x_i-x_{i+1})=\sum_{i=k}^\infty G(x_{i-1}-x_i)=\sum_{i=k}^\infty G^i(x_0-x_1)=\sum_{i=1}^\infty G^i(x_0-x_1) xkx=i=k(xixi+1)=i=kG(xi1xi)=i=kGi(x0x1)=i=1Gi(x0x1)

从而得到不等式

收敛速度

∣ ∣ x k − x ∗ ∣ ∣ ∼ [ ρ ( B ) ] k ∣ ∣ x 0 − x ∗ ∣ ∣ , ρ ( B ) ||x_k-x^*||\sim [\rho(B)]^k||x_0-x^*||,\rho(B) xkx[ρ(B)]kx0x,ρ(B)越小收敛速度越快。

确定迭代次数k使得 [ ρ ( G ) ] k ≤ 1 0 − t ⇒ k ≥ t   l n   10 − l n   ρ ( G ) [\rho(G)]^k\leq 10^{-t}\Rightarrow k\geq \frac{t\,ln\,10}{-ln\,\rho(G)} [ρ(G)]k10tklnρ(G)tln10

− l n   ρ ( G ) -ln\,\rho(G) lnρ(G)为相应的(渐进)收敛速度

Jacobi迭代法

原理

A x = b , A Ax=b,A Ax=bA非奇异,对角线无0元素,取对角线元素为Q, A = D − ( D − A ) , x = ( 1 − D − 1 A ) x + D − 1 b = B x + g A=D-(D-A),x=(1-D^{-1}A)x+D^{-1}b=Bx+g A=D(DA),x=(1D1A)x+D1b=Bx+g

矩阵B恰好是对角线为0,每行其它元素是原来元素除以该行对角线元素的相反数

收敛条件

Jacobi迭代法收敛的充分必要条件是: ρ ( B ) < 1 \rho(B)<1 ρ(B)<1

Jacobi迭代法收敛的充分条件是:存在范数使得 ∣ ∣ B ∣ ∣ < 1 ||B||<1 B<1,由矩阵范数的等价性,此条件等价于对于A矩阵矩阵行/列,对角占优。

Python代码:

输入A,b,TOL(误差容限),计算相应的B,g,进行迭代

这里D取A的对角值是为了方便计算取逆

import numpy as np
def Jacobi(A,b,tol):#A是n阶方阵array,b是n*1 array
    n=b.shape[0]
    x0=np.zeros((n,1))
    D=np.zeros((n,n))
    for i in range(n):
        D[i,i]=A[i,i]
    B=np.eye(n)-np.dot(np.linalg.pinv(D),A)
    g=np.dot(np.linalg.pinv(D),b)
    e=10
    num=0
    while e>tol:
        num+=1
        x=np.dot(B,x0)+g
        e=np.linalg.norm(x-x0)
        x0=x
        print("第",num,"次迭代结果为",'\n',x)
    return x    
b=np.array([[9],[7],[6]])
A=np.array([[10,-1,0],[-1,10,-2],[0,-4,10]])
Jacobi(A,b,0.001)
'''
第 1 次迭代结果为 
 [[0.9]
 [0.7]
 [0.6]]
第 2 次迭代结果为 
 [[0.97]
 [0.91]
 [0.88]]
第 3 次迭代结果为 
 [[0.991]
 [0.973]
 [0.964]]
第 4 次迭代结果为 
 [[0.9973]
 [0.9919]
 [0.9892]]
第 5 次迭代结果为 
 [[0.99919]
 [0.99757]
 [0.99676]]
第 6 次迭代结果为 
 [[0.999757]
 [0.999271]
 [0.999028]]
第 7 次迭代结果为 
 [[0.9999271]
 [0.9997813]
 [0.9997084]]
array([[0.9999271],
       [0.9997813],
       [0.9997084]])'''

Gauss-Seidel迭代法

原理

A x = b , A = D ( I − L ) − D U Ax=b,A=D(I-L)-DU Ax=b,A=D(IL)DU即对Jacobi迭代法中的B做LU分解,目的是这样在每次迭代计算 x i k x_{i}^k xik时能利用 x j k , j < i x_{j}^k,\quad j<i xjk,j<i的数据。

从而有 D ( I − L ) x − D U x = b ⇒ x = ( I − L ) − 1 U x + ( I − L ) − 1 D − 1 b   o r   x k = L x k + U x k − 1 + D − 1 b D(I-L)x-DUx=b\Rightarrow x=(I-L)^{-1}Ux+(I-L)^{-1}D^{-1}b\,or\,x_k=Lx_k+Ux_{k-1}+D^{-1}b D(IL)xDUx=bx=(IL)1Ux+(IL)1D1borxk=Lxk+Uxk1+D1b

由于 L − 1 L^{-1} L1是对角线为0的下三角矩阵,从而 L x k Lx_k Lxk在计算x的第i个分量时只需要 x j k , j < i x_j^k,\quad j<i xjk,j<i

收敛条件

thm:Gauss-Seidel迭代法收敛的充要条件是迭代矩阵的谱半径小于1,即
ρ ( ( I − L ) − 1 U ) < 1 \rho((I-L)^{-1}U)<1 ρ((IL)1U)<1
thm:充分条件: ∣ ∣ B ∣ ∣ ∞ = m a x 1 ≤ i ≤ n ∑ j = 1 , j ≠ i n ∣ a i j a i i ∣ < 1 ||B||_\infty=max_{1\leq i\leq n}\sum_{j=1,j\neq i}^n |\frac{a_{ij}}{a_{ii}}|<1 B=max1inj=1,j=inaiiaij<1

​ 且若记 μ = m a x 1 ≤ i ≤ n { ( ∑ j = i + 1 n ∣ a i j a i i ∣ ) / ( I − ∑ j = 1 i − 1 ∣ a i j a i i ∣ ) } \mu=max_{1\leq i\leq n}\lbrace(\sum_{j=i+1}^n|\frac{a_{ij}}{a_{ii}}|)/(I-\sum_{j=1}^{i-1}|\frac{a_{ij}}{a_{ii}}|) \rbrace μ=max1in{(j=i+1naiiaij)/(Ij=1i1aiiaij)} U的每行和除以1-L的每行和的最大值小于1

​ 则 μ ≤ ∣ ∣ B ∣ ∣ ∞ < 1 \mu\leq ||B||_\infty<1 μB<1 (易得)

∣ ∣ e ( k ) ∣ ∣ ∞ = ∣ ∣ x k − x ∗ ∣ ∣ ∞ ≤ μ k 1 − μ ∣ ∣ x 1 − x 0 ∣ ∣ ∞ ||e^{(k)}||_\infty=||x_k-x^*||_\infty\leq \frac{\mu^k}{1-\mu}||x_1-x_0||_\infty e(k)=xkx1μμkx1x0

​ 此外同样可证若 ∣ ∣ B ∣ ∣ 1 < 1 ||B||_1<1 B1<1,则Gauss-Seidel迭代法收敛

​ ( 这里 μ \mu μ近似地看作 ( I − L ) − 1 U (I-L)^{-1}U (IL)1U的无穷范数,但是对此待证)

python代码

实际计算中为了减小计算量实际上(***)通过向量中元素相乘求和得到的而不是向量的乘法得到的

import numpy as np
def G_S(A,b,tol):#A是n阶方阵array,b是n*1 array
    n=b.shape[0]
    x0=np.zeros((n,1))
    D=np.zeros((n,n))
    for i in range(n):
        D[i,i]=A[i,i]
    B=np.eye(n)-np.dot(np.linalg.pinv(D),A)
    g=np.dot(np.linalg.pinv(D),b)
    L=np.tril(B)
    U=np.triu(B)
    e=10
    num=0
    while e>tol:
        num+=1
        x=np.zeros((n,1))
        for i in range(n):
            x_i=np.dot(L[i],x)+np.dot(U[i],x0)+g[i]##     (***)
            x[i]=x_i
        e=np.linalg.norm(x-x0)
        x0=x
        print("第",num,"次迭代结果为",'\n',x)
    return x    
b=np.array([[9],[7],[6]])
A=np.array([[10,-1,0],[-1,10,-2],[0,-4,10]])
G_S(A,b,0.001)
'''
第 1 次迭代结果为 
 [[0.9  ]
 [0.79 ]
 [0.916]]
第 2 次迭代结果为 
 [[0.979  ]
 [0.9811 ]
 [0.99244]]
第 3 次迭代结果为 
 [[0.99811  ]
 [0.998299 ]
 [0.9993196]]
第 4 次迭代结果为 
 [[0.9998299 ]
 [0.99984691]
 [0.99993876]]
第 5 次迭代结果为 
 [[0.99998469]
 [0.99998622]
 [0.99999449]]
array([[0.99998469],
       [0.99998622],
       [0.99999449]])
'''
Jacobi迭代法和Gauss-Seidel迭代法的比较
(1)收敛速度比较

∣ ∣ B ∣ ∣ ∞ < 1 ||B||_\infty<1 B<1,则Jacobi迭代法和Gauss-Seidel迭代法都收敛,根据误差比较式看出G-S算法比Jacobi收敛速度更快。这一点从上面的例子也可以看出。

(2)收敛相关关系

两者收敛之间没有包含关系

(3)严格对角占优均收敛

point1:广义对角占优矩阵非奇异:反证存在x使得 A x = 0 Ax=0 Ax=0 a k k x k = − ∑ j ≠ k , j = 1 n a k j x j a_{kk}x_k=-\sum_{j\neq k,j=1}^n a_{kj}x_j akkxk=j=k,j=1nakjxj取绝对值利用绝对值不等式得证

point2:迭代收敛则对于Jacobi算法:A对角占优则 ∣ ∣ B ∣ ∣ ∞ < 1 ||B||_\infty<1 B<1,收敛;对于Gauss-Seidel算法:证明:

​ pf: G = ( I − L ) − 1 U G=(I-L)^{-1}U G=(IL)1U,对于G的特征值 λ \lambda λ

d e t ( λ I − ( I − L ) − 1 U ) = 0 = ∣ ( I − L ) − 1 ∣ ∣ λ I − λ L − U ∣ = ∣ λ ( I − L ) − U ∣ det(\lambda I-(I-L)^{-1}U)=0=|(I-L)^{-1}||\lambda I-\lambda L-U|=|\lambda(I-L)-U| det(λI(IL)1U)=0=(IL)1λIλLU=λ(IL)U
[ λ a 12 a 11 a 12 a 11 . . . λ a 21 a 22 λ a 23 a 11 . . . λ a 31 a 11 λ a 32 a 11 λ . . . . . . . . . . . . . . . ] \begin{bmatrix} \lambda&\frac{a_{12}}{a_{11}} &\frac{a_{12}}{a_{11}} &... \\ \lambda \frac{a_{21}}{a_{22}} & \lambda&\frac{a_{23}}{a_{11}} &...\\ \lambda \frac{a_{31}}{a_{11}} &\lambda \frac{a_{32}}{a_{11}} &\lambda &...\\ ...&... &... &...\\ \end{bmatrix} λλa22a21λa11a31...a11a12λλa11a32...a11a12a11a23λ...............
​ 从而只需证明 λ < 1 \lambda<1 λ<1。现在反证:假设 λ ≥ 1 \lambda\geq 1 λ1,则由于A对角占优,则 ∣ a i i ∣ ≥ ∑ j ≠ i ∣ a i j ∣ |a_{ii}|\geq \sum_{j\neq i}|a_{ij}| aiij=iaij ,从而 $ \lambda>\lambda(\sum_{j \neq i}\frac{|a_{ij}|}{|a_{ii}|})\geq \lambda(\sum_{j=1}{n-1}\frac{|a_{ij}|}{|a_{ii}|})+\sum_{j=i+1}n\frac{|a_{ij}|}{|a_{ii}|}$

​ 即 ( λ ( I − L ) − U ) (\lambda(I-L)-U) (λ(IL)U)对角占优, ∣ λ ( I − L ) − U ∣ ≠ 0 |\lambda(I-L)-U|\neq 0 λ(IL)U=0从而 λ < 1 \lambda<1 λ<1 QED

逐次超松弛迭代法(SOR方法)

原理
A x = b Ax=b Ax=b,首先用Gauss-Seidel迭代法定义中间量 x ~ i ( k ) \tilde{x}_i^{(k)} x~i(k):

x ~ i = 1 a i i ( b i − ∑ j = 1 i − 1 a i j x j k − ∑ j = i + 1 n a i j x j ( k − 1 ) ) , i = 1 , 2 , . . . , n . \tilde{x}_i=\frac{1}{a_{ii}}(b_i-\sum_{j=1}^{i-1}a_{ij}x_j^{k}-\sum_{j=i+1}^n a_{ij}x_{j}^{(k-1)}),\qquad i=1,2,...,n. x~i=aii1(bij=1i1aijxjkj=i+1naijxj(k1)),i=1,2,...,n.

此时引入一个加速收敛的参数 ω ∈ R \omega\in R ωR,称为松弛因子。然后我们取 x i ( k ) x_i^{(k)} xi(k) x i ( k − 1 ) x_i^{(k-1)} xi(k1) x ~ i ( k ) \tilde{x}_i^{(k)} x~i(k)的加权平均:
x i ( k ) = x i ( k − 1 ) + ω ( x ~ i k − x i ( k − 1 ) ) = ( 1 − ω ) x i ( k − 1 ) + ω x ~ i k x_i^{(k)}=x_i^{(k-1)}+\omega(\tilde{x}_i^{k}-x_i^{(k-1)})=(1-\omega)x_i^{(k-1)}+\omega \tilde{x}_i^{k} xi(k)=xi(k1)+ω(x~ikxi(k1))=(1ω)xi(k1)+ωx~ik
def: ω = 1 \omega=1 ω=1时为Gauss-Sediel迭代法

def: ω < 1 \omega<1 ω<1逐次低松弛迭代法

def: ω > 1 \omega>1 ω>1逐次高松弛迭代法

从而有 x k = ω ( L x k + U x k − 1 + D − 1 b ) + ( 1 − ω ) x k − 1 ⇒ x k = T ω x k − 1 + ω ( I − ω L ) − 1 D − 1 b x_k=\omega(Lx_k+Ux_{k-1}+D^{-1}b)+(1-\omega)x_{k-1}\Rightarrow x_k=T_\omega x_{k-1}+\omega(I-\omega L)^{-1}D^{-1}b xk=ω(Lxk+Uxk1+D1b)+(1ω)xk1xk=Tωxk1+ω(IωL)1D1b

T ω = ( I − ω L ) − 1 ( ( 1 − ω ) I + ω U ) T_\omega=(I-\omega L)^{-1}((1-\omega)I+\omega U) Tω=(IωL)1((1ω)I+ωU)

收敛条件

前提: ∀ i , a i i ≠ 0 \forall i,a_{ii}\neq 0 i,aii=0

thm:充要条件: ρ ( T ω ) < 1 \rho(T_\omega)<1 ρ(Tω)<1

thm:必要条件: 0 < ω < 2 0<\omega<2 0<ω<2

pf: d e t ( T ω ) = d e t ( ( I − ω ) I + ω U ) = ( 1 − ω ) n det(T_\omega)=det((I-\omega)I+\omega U)=(1-\omega)^n det(Tω)=det((Iω)I+ωU)=(1ω)n

ρ ( T ω ) n > ( 1 − ω ) n → ρ ( T ω ) > ∣ 1 − ω ∣ \rho(T_\omega)^n>(1-\omega)^n\rightarrow \rho(T_\omega)>|1-\omega| ρ(Tω)n>(1ω)nρ(Tω)>1ω

thm:若A是对称正定矩阵,则当 0 < ω < 2 0<\omega<2 0<ω<2时,解方程组 A x = b Ax=b Ax=b的SOR方法收敛

pf: λ \lambda λ是迭代矩阵 T ω = ( I − ω L ) − 1 ( ( 1 − ω ) I + ω U ) T_\omega=(I-\omega L)^{-1}((1-\omega)I+\omega U) Tω=(IωL)1((1ω)I+ωU)的任一特征值,从而有: ( I − ω L ) − 1 ( ( 1 − ω ) I + ω U ) x = λ x (I-\omega L)^{-1}((1-\omega)I+\omega U)x=\lambda x (IωL)1((1ω)I+ωU)x=λx

​ 从而 ( ( 1 − ω ) I + ω U ) x = λ ( I − ω L ) x ((1-\omega)I+\omega U)x=\lambda(I-\omega L)x ((1ω)I+ωU)x=λ(IωL)x

​ 左右乘 x H D x^H D xHD,记 x H D x = q , x H D L x = α + i β x^H D x=q,x^H DLx=\alpha+i\beta xHDx=q,xHDLx=α+iβ又因为 A = D − D L − D U A=D-DL-DU A=DDLDU又因为A对称正定,从而

D U = ( D L ) T , x H D U x = x H ( D L ) H x = ( x H D L x ) H = α − i β DU=(DL)^T,x^H DU x=x^H (DL)^H x=(x^H DL x)^H=\alpha-i\beta DU=(DL)T,xHDUx=xH(DL)Hx=(xHDLx)H=αiβ

​ 从而有 x H A x = x H ( D − D L − D U ) x = q − 2 a x^H A x=x^H (D-DL-DU)x=q-2a xHAx=xH(DDLDU)x=q2a

​ 从而 λ = 1 − ω q + ω α − i ω β q − ω α − i ω β \lambda=\frac{1-\omega q +\omega \alpha -i\omega \beta}{q-\omega\alpha-i\omega\beta} λ=qωαiωβ1ωq+ωαiωβ

0 < ω < 2 0<\omega <2 0<ω<2 ∣ λ ∣ 2 < 1 |\lambda|^2 <1 λ2<1,从而 ρ ( T ω ) < 1 \rho(T_\omega)<1 ρ(Tω)<1

remark:若A是对称正定矩阵Gauss-Sediel算法收敛。

最佳松弛因子

ρ ω 0 ( T ω ) = m i n ω ∈ R ρ ( T ω ) \rho_{\omega_0}(T_\omega)=min_{\omega\in R}\rho(T_\omega) ρω0(Tω)=minωRρ(Tω)

python代码
import numpy as np
def SOR(A,b,w,tol,m):#A是n阶方阵array,b是n*1 array,w是松弛因子(0-2),tol误差容限,m是最大迭代次数,防止迭代不收敛
    n=b.shape[0]
    x0=np.zeros((n,1))
    D=np.zeros((n,n))
    for i in range(n):
        D[i,i]=A[i,i]
    B=np.eye(n)-np.dot(np.linalg.pinv(D),A)
    g=np.dot(np.linalg.pinv(D),b)
    L=np.tril(B)
    U=np.triu(B)
    e=10
    num=0
    while (e>tol)& (num<m):
        num+=1
        x=np.zeros((n,1))
        for i in range(n):
            x_i=w*(np.dot(L[i],x)+np.dot(U[i],x0)+g[i])+(1-w)*x0[i]
            x[i]=x_i
        e=np.linalg.norm(x-x0)
        x0=x
        print("第",num,"次迭代结果为",'\n',x)
    return x    
b=np.array([[9],[7],[6]])
A=np.array([[10,-1,0],[-1,10,-2],[0,-4,10]])
SOR(A,b,1.2,0.001,15)
'''
第 1 次迭代结果为 
 [[1.08    ]
 [0.9696  ]
 [1.185408]]
第 2 次迭代结果为 
 [[0.980352  ]
 [1.04822016]
 [0.98606408]]
第 3 次迭代结果为 
 [[1.00971602]
 [0.98817727]
 [0.99711227]]
第 4 次迭代结果为 
 [[0.99663807]
 [1.00126806]
 [1.00118621]]
第 5 次迭代结果为 
 [[1.00082455]
 [1.00013003]
 [0.99982517]]
第 6 次迭代结果为 
 [[0.99985069]
 [0.99991412]
 [0.99999374]]
第 7 次迭代结果为 
 [[1.00001956]
 [1.00001802]
 [1.0000099 ]]
array([[1.00001956],
       [1.00001802],
       [1.0000099 ]])
'''

共轭斜量法

原理

对实对称正定的矩阵A,解方程 A x = b Ax=b Ax=b可以转化为求二次函数 f ( x ) = 1 2 x T A x − b T x f(x)=\frac{1}{2}x^T A x-b^T x f(x)=21xTAxbTx的极小值点的问题

thm: u ∈ R n u\in R^n uRn是方程组的解的 充要条件是u是二次函数 f ( x ) = 1 2 x T A x − b T x f(x)=\frac{1}{2}x^T A x-b^T x f(x)=21xTAxbTx f ( x ) = 1 2 x T A x − b T x f(x)=\frac{1}{2}x^T A x-b^T x f(x)=21xTAxbTx的极小值点。

pf:KaTeX parse error: Undefined control sequence: \part at position 27: …wn f(x)=[\frac{\̲p̲a̲r̲t̲ ̲f}{\part x_1},.…

​ 而且 ∀ p ∈ R n , p ≠ 0 \forall p\in R^n ,p\neq 0 pRn,p=0有: f ( x + t p ) − f ( x ) = t g ( x ) T p + 1 2 t 2 p T A p f(x+tp)-f(x)=tg(x)^Tp+\frac{1}{2}t^2p^TAp f(x+tp)f(x)=tg(x)Tp+21t2pTAp, g ( u ) = 0 , 令 g(u)=0,令 g(u)=0, x = u x=u x=u可知u是f(x)的极小点

即用函数的最值来代替方程的解

共轭斜量法算法

找到初值点 x 0 x_0 x0

下一步 x = x 0 + t p 0 x=x_0+tp_0 x=x0+tp0

之后 x = x k + t p k x=x_k+tp_k x=xk+tpk,其中 p k p_k pk为寻查方向

φ k ( t ) = f ( x k + t p k ) = 1 2 ( x k + t p k ) T A ( x k + t p k ) − b T ( x k + t p k ) \varphi_k(t)=f(x_k+tp_k)=\frac{1}{2}(x_k+tp_k)^TA(x_k+tp_k)-b^T(x_k+tp_k) φk(t)=f(xk+tpk)=21(xk+tpk)TA(xk+tpk)bT(xk+tpk),要使得固定 p k p_k pk φ k \varphi_k φk最小,对t求导得

remark:其中scalar、vector、matrix之间的求导有两种形式,具体见:

φ k ′ ( t ) = t p k T A p k + p k T ( A x k − b ) \varphi_k'(t)=tp_k^TAp_k+p_k^T(Ax_k-b) φk(t)=tpkTApk+pkT(Axkb)从而 φ k ′ ( t ) = 0 ⇒ t = α k = − p k T ( A x K − b ) p k T A p k \varphi_k'(t)=0\Rightarrow t=\alpha_k=-\frac{p_k^T(Ax_K-b)}{p_k^TAp_k} φk(t)=0t=αk=pkTApkpkT(AxKb)由于 φ k ′ ′ ( t ) > 0 \varphi_k''(t)>0 φk(t)>0

从而得到对应的t的值。

这样得到的 x k + 1 x_{k+1} xk+1就是直线 x = x k + t p k x=x_k+tp_k x=xk+tpk上的极小值点。

剩余向量 r k = A x k − b r_k=Ax_k-b rk=Axkb,有 p k T A p k p_kTAp_k pkTApk r k = g r a d ( f ( x k ) ) r_k=grad(f(x_k)) rk=grad(f(xk))从而 t = α k = − r k T p k p k T A p k t=\alpha_k=-\frac{r_k^Tp_k}{p_kTAp_k} t=αk=pkTApkrkTpk

显然 f ( x k + 1 ) ≤ f ( x k ) f(x_{k+1})\leq f(x_k) f(xk+1)f(xk)

为了保证等号不成立,选择寻查方向 p 0 , p 1 , . . . , p n − 1 p_0,p_1,...,p_{n-1} p0,p1,...,pn1 R n R^n Rn中A共轭向量系,即:
p i T A p j = 0 , i ≠ j p_i^TAp_j= 0,\qquad i\neq j piTApj=0,i=j
即在内积 < L x , L y > = x T A y , A = L L T <Lx,Ly>=x^TAy,A=LL^T <Lx,Ly>=xTAy,A=LLT意义下正交,所以每次要做正交化: p 0 = − r 0 ; p 1 = − r 1 − β 0 r 0 , s . t . p 1 T A p 0 = 0 ⇒ β 0 = r 1 T A p 0 p 0 T A p 0 p_0=-r_0;p_1=-r_1-\beta_0r_0,s.t.p_1^TAp_0=0\Rightarrow \beta_0=\frac{r_1^TAp_0}{p_0^TAp_0} p0=r0;p1=r1β0r0,s.t.p1TAp0=0β0=p0TAp0r1TAp0

β k = r k + 1 T A p k p k T A p k \beta_k=\frac{r_{k+1}^T Ap_{k}}{p_k^TAp_{k}} βk=pkTApkrk+1TApk

且可以证明这样得到的 p 0 , . . . , p k , ( k ≤ n − 1 ) p_0,...,p_k,(k\leq n-1) p0,...,pk,(kn1)是共轭的。

remark:整个操作类似Schmidt正交化,但是需要注意的是,在求下一步共轭向量时只需要在对应x的梯度上减去 β \beta β乘以上一个向量。

thm:解n阶方程组的共轭方向法至多进行n步便可得到方程的解(共轭斜量法实际上是解线性方程组的直接方法)

thm:若矩阵A只有m个不同特征值,则共轭斜量法至多进行m步即可得到方程组的解

共轭斜量法计算误差估计

r = A x − b = A x − A x ∗ = A ( x − x ∗ ) , x − x ∗ = A − 1 r r=Ax-b=Ax-Ax^*=A(x-x^*),x-x^*=A^{-1}r r=Axb=AxAx=A(xx),xx=A1r

∣ ∣ x − x ∗ ∣ ∣ = ∣ ∣ A − 1 r ∣ ∣ ≤ ∣ ∣ A − 1 ∣ ∣ ∣ ∣ r ∣ ∣ , ∣ ∣ b ∣ ∣ ≤ ∣ ∣ A ∣ ∣ ∣ ∣ x ∗ ∣ ∣ ||x-x^*||=||A^{-1}r||\leq||A^{-1}||||r||,\quad ||b||\leq ||A||||x^*|| xx=A1rA1r,bAx

∣ ∣ x − x ∗ ∣ ∣ ∣ ∣ x ∗ ∣ ∣ ≤ ∣ ∣ A ∣ ∣ ∣ ∣ A − 1 ∣ ∣ ∣ ∣ r ∣ ∣ ∣ ∣ b ∣ ∣ = c o n d ( A ) ∣ ∣ r ∣ ∣ ∣ ∣ b ∣ ∣ \frac{||x-x^*||}{||x^*||}\leq ||A||||A^{-1}||\frac{||r||}{||b||}=cond(A)\frac{||r||}{||b||} xxxAA1br=cond(A)br

从而坏条件方程组剩余向量的大小不能说明近似解的精确程度。

最速下降算法

相比于共轭斜量法需要保证向量的共轭来达到把正交维度的向量抵消的目的,

最速下降法不用着眼于全局而只需要在目前的点处进行梯度下降。

直接取 p k = − r k = b − a x k p_k=-r_k=b-ax_k pk=rk=baxk

x k + 1 = x k + α k p k , r k = ▽ f ( x k ) x_{k+1}=x_k+\alpha_kp_k,\qquad r_k=\triangledown f(x_k) xk+1=xk+αkpk,rk=f(xk)

α k = − r k T p K p k T A p k = r k T r k r k T A r k \alpha_k=-\frac{r_k^T p_K}{p_k^T Ap_k}=\frac{r_k^T r_k}{r_k^T Ar_k} αk=pkTApkrkTpK=rkTArkrkTrk

thm:设 A ∈ R n × n A\in R^{n\times n} ARn×n对称正定且其特征值为 λ 1 ≥ λ 2 ≥ . . . ≥ λ n > 0 \lambda_1\geq \lambda_2\geq...\geq \lambda_n>0 λ1λ2...λn>0则对于任意初始向量 x 0 x_0 x0最速下降法都收敛,且 A x ∗ = b Ax^*=b Ax=b, ∣ ∣ x k − x ∗ ∣ ∣ A ≤ ∣ λ 1 − λ n λ 1 + λ n ∣ k ∣ ∣ x 0 − x ∗ ∣ ∣ A ||x_k-x^*||_A\leq |\frac{\lambda_1-\lambda_n}{\lambda_1+\lambda_n}|^k||x_0-x^*||_A xkxAλ1+λnλ1λnkx0xA

其中 ∣ ∣ x ∣ ∣ A = ( A x , x ) 1 2 ||x||_A=(Ax,x)^{\frac{1}{2}} xA=(Ax,x)21

最速下降算法python实现
import numpy as np
def RD(A,b,tol,m,x0):#A是n阶方阵array,b是n*1 array,w是松弛因子(0-2),tol误差容限,m是最大迭代次数,防止迭代不收敛
    e=10
    num=0
    x=x0
    while (e>tol)& (num<m):
        num+=1
        r=np.dot(A,x)-b
        a=(np.dot(r.T,r))/np.dot(np.dot(r.T,A),r)
        x=x0-a*r
        e=np.linalg.norm(x-x0)
        x0=x
        print("第",num,"次迭代结果为",'\n',x)
    return x 
b=np.array([[9],[7],[6]])
A=np.array([[10,-1,0],[-1,10,-2],[0,-4,10]])
x0=np.array([[0],[0],[0]])
RD(A,b,0.001,15,x0)
'''
第 1 次迭代结果为 
 [[1.16536661]
 [0.90639626]
 [0.77691108]]
第 2 次迭代结果为 
 [[0.97702454]
 [0.97702454]
 [0.97702454]]
第 3 次迭代结果为 
 [[1.00379937]
 [0.99784941]
 [0.99487443]]
第 4 次迭代结果为 
 [[0.99947213]
 [0.99947213]
 [0.99947213]]
第 5 次迭代结果为 
 [[1.00008729]
 [0.99995059]
 [0.99988224]]
array([[1.00008729],
       [0.99995059],
       [0.99988224]])
'''
共轭斜量法python实现
import numpy as np
def HG(A,b,tol,m,x0):#A是n阶方阵array,b是n*1 array,w是松弛因子(0-2),tol误差容限,m是最大迭代次数,防止迭代不收敛
    n=b.shape[0]
    e=10
    num=0
    x=x0
    r=np.dot(A,x)-b;p=-r
    while (e>tol)& (num<m):
        q=np.dot(A,p)#预先计算
        pAp=np.dot(p.T,q)#减少反复运算计算量
        a=-(np.dot(r.T,p))/pAp
        x=x0+a*p
        r=r+a*q#r改为迭代形式
        beta=np.dot(r.T,q)/pAp
        p=-r+beta*p
        
        e=np.linalg.norm(x-x0)
        x0=x 
        num+=1
        print("第",num,"次迭代结果为",'\n',x)
    return x 
b=np.array([[9],[7],[6]])
A=np.array([[10,-1,0],[-1,10,-2],[0,-4,10]])
x0=np.array([[0],[0],[0]])
HG(A,b,0.001,15,x0)
'''
第 1 次迭代结果为 
 [[1.16536661]
 [0.90639626]
 [0.77691108]]
第 2 次迭代结果为 
 [[1.01404056]
 [1.01092044]
 [1.00936037]]
第 3 次迭代结果为 
 [[0.99938234]
 [1.00042663]
 [1.00094877]]
第 4 次迭代结果为 
 [[0.99994017]
 [0.99995717]
 [0.99996567]]
第 5 次迭代结果为 
 [[1.00000228]
 [0.99999808]
 [0.99999599]]
array([[1.00000228],
       [0.99999808],
       [0.99999599]])
'''

Chap 4:插值法

overview

f ( x ) = ∑ k = 0 n f ( k ) ( x 0 ) k ! ( x − x 0 ) k + R n ( x ) = P n ( x ) + R n ( x ) , R n ( x ) = f ( n + 1 ) ( ξ ) ( n + 1 ) ! ( x − x 0 ) ( n + 1 ) f(x)=\sum_{k=0}^n \frac{f^{(k)}(x_0)}{k!}(x-x_0)^k+R_n(x)=P_n(x)+R_n(x),\qquad R_n(x)=\frac{f^{(n+1)(\xi)}}{(n+1)!}(x-x_0)^{(n+1)} f(x)=k=0nk!f(k)(x0)(xx0)k+Rn(x)=Pn(x)+Rn(x),Rn(x)=(n+1)!f(n+1)(ξ)(xx0)(n+1)

如果 P n ( x 0 ) = f ( x 0 ) , f n ′ ( x 0 ) = f ′ ( x 0 ) , . . . P_n(x_0)=f(x_0),f'_n(x_0)=f'(x_0),... Pn(x0)=f(x0),fn(x0)=f(x0),...则是Hermite插值

如果 x 0 , . . . , x n x_0,...,x_n x0,...,xn为n+1个互异点(插值基点/节点)找函数Z p n ( x ) ∈ P n ( x ) = R n + 1 [ x ] p_n(x)\in P_n(x)=R_{n+1}[x] pn(x)Pn(x)=Rn+1[x]

其中 P n ( x ) = { ∑ k = 0 n a k x k ∣ a k ∈ R } P_n(x)=\lbrace \sum_{k=0}^n a_kx^k|a_k\in R \rbrace Pn(x)={k=0nakxkakR},s.t. p n ( x i ) = f ( x i ) p_n(x_i)=f(x_i) pn(xi)=f(xi)则是Lagrange插值

[a,b]为插值区间 a = x 0 ≤ . . . ≤ x n = b , x ∈ [ a , b ] a=x_0\leq...\leq x_n=b,x\in [a,b] a=x0...xn=b,x[a,b]:内插, x ∉ [ a , b ] x\notin [a,b] x/[a,b]:外插

选择多项式为插值函数: g ( x ) g(x) g(x)为插值多项式,代数插值 g ( x ) ∈ s p a n { x 0 , x 1 , . . . , x n } g(x)\in span\lbrace x^0,x^1,...,x^n\rbrace g(x)span{x0,x1,...,xn}

γ n ( x ) = f ( x ) − p n ( x ) \gamma_n(x)=f(x)-p_n(x) γn(x)=f(x)pn(x):插值余项

代数插值的存在唯一性:

p n ( x i ) = f ( x i ) , i = 0 , 1 , 2 , . . . , n p_n(x_i)=f(x_i),\qquad i=0,1,2,...,n pn(xi)=f(xi),i=0,1,2,...,n

存在唯一性由范德蒙行列式的存在唯一性保证

Method1:Lagrange插值公式

构造Lagrange多项式

形式:

recite

p n = y 0 l 0 + y 1 l 1 + y 2 l 2 + . . . + y n l n y i = f ( x i ) , l i = Π j = 0 , j ≠ i n ( x − x j ) ( x i − x j ) p_n=y_0l_0+y_1l_1+y_2l_2+...+y_nl_n \qquad y_i=f(x_i),l_i=\Pi_{j=0,j\neq i}^n\frac{(x-x_j)}{(x_i-x_j)} pn=y0l0+y1l1+y2l2+...+ynlnyi=f(xi),li=Πj=0,j=in(xixj)(xxj)

或者: w n + 1 ( x ) = ( x − x 0 ) ( x − x 1 ) . . . ( x − x n ) , w_{n+1}(x)=(x-x_0)(x-x_1)...(x-x_n), wn+1(x)=(xx0)(xx1)...(xxn),

w n + 1 ′ ( x i ) w_{n+1}'(x_i) wn+1(xi)

= l i m x → x i w n + 1 ( x ) − w n + 1 ( x i ) x − x i =lim_{x\rightarrow x_i}\dfrac{w_{n+1}(x)-w_{n+1}(x_i)}{x-x_i} =limxxixxiwn+1(x)wn+1(xi)

= ( x i − x 0 ) ( x i − x 1 ) . . . ( x i − x i − 1 ) ( x i − x i + 1 ) . . . ( x i − x n ) =(x_i-x_0)(x_i-x_1)...(x_i-x_{i-1})(x_i-x_{i+1})...(x_i-x_n) =(xix0)(xix1)...(xixi1)(xixi+1)...(xixn)

l i = w n + 1 ( x ) ( x − x i ) w n + 1 ′ ( x i ) l_i=\frac{w_{n+1}(x)}{(x-x_i)w_{n+1}'(x_i)} li=(xxi)wn+1(xi)wn+1(x)

插值公式的余项

thm:f(x)包含n+1个互异基点 x 0 , x 1 , . . . , x n x_0,x_1,...,x_n x0,x1,...,xn在区间[a,b]之间且有n阶连续导数,在(a,b)有n+1阶有界导数,则 ∀ x ∈ [ a , b ] \forall x\in[a,b] x[a,b]存在 ξ ∈ ( a , b ) , s . t . \xi\in(a,b),s.t. ξ(a,b),s.t.
r n ( x ) = f n + 1 ( ξ ) ( n + 1 ) ! w n + 1 ( x ) r_n(x)=\frac{f^{n+1}(\xi)}{(n+1)!}w_{n+1}(x) rn(x)=(n+1)!fn+1(ξ)wn+1(x)
pf:引入辅助函数 g ( t ) = f ( t ) − f n ( t ) − K ( x ) w n + 1 ( t ) , r n ( x ) = K ( x ) w n + 1 ( x ) g(t)=f(t)-f_n(t)-K(x)w_{n+1}(t),\qquad r_n(x)=K(x)w_{n+1}(x) g(t)=f(t)fn(t)K(x)wn+1(t),rn(x)=K(x)wn+1(x)

​ 从而 t = x , x 0 , x 1 , . . . , x n t=x,x_0,x_1,...,x_n t=x,x0,x1,...,xn g ( t ) = 0 g(t)=0 g(t)=0反复使用Rolle定理得证。

remark:其中 w n + 1 ( x ) w_{n+1}(x) wn+1(x)还可以通过不等式进一步放缩。例如 r 1 ( x ) = 1 2 f ′ ′ ( ξ ) ( x − a ) ( x − b ) ≤ ( a − b ) 2 8 m a x { ∣ f ′ ′ ( x ) ∣ } r_1(x)=\frac{1}{2}f''(\xi)(x-a)(x-b)\leq \frac{(a-b)^2}{8}max\lbrace |f''(x)|\rbrace r1(x)=21f(ξ)(xa)(xb)8(ab)2max{f(x)}

n取的大不一定能保证插值公式的逼近效果好。

python实现插值求x处函数值
import numpy as np
def Lagrange(X,Y,x):
    l=[]
    k=len(X)
    for i in range(k):
        temp=1
        for j in range(k):
            if j!=i:
                temp=temp*(x-X[j])/(X[i]-X[j])
        l.append(temp)
    y=sum(list(map(lambda x,y:x*y,l,Y)) )
    return y
a=lambda x:x**3+3*x**2+38
X=[3,4,-2,1]
Y=list(map(a,X))
a(0)# =38
Lagrange(X,Y,0)
'''37.99999999999999'''

Method2:Newton插值公式

由于Lagrange插值公式需要一次性知道n+1个点的信息,这样在逐步得到点的信息并输入时会造成计算的复杂度的增加,从而采用Newton插值公式,这样增加一个点,插值多项式的次数+1

N n ( x ) = a 0 + a 1 ( x − x 0 ) + a 2 ( x − x 0 ) ( x − x 1 ) + . . . + a n ( x − x 0 ) ( x − x 1 ) . . . ( x − x n − 1 ) N_n(x)=a_0+a_1(x-x_0)+a_2(x-x_0)(x-x_1)+...+a_n(x-x_0)(x-x_1)...(x-x_{n-1}) Nn(x)=a0+a1(xx0)+a2(xx0)(xx1)+...+an(xx0)(xx1)...(xxn1)

均差

a 0 = f ( x 0 ) , a 1 = f ( x 1 ) − f ( x 0 ) x 1 − x 0 , a 2 = [ f ( x 2 ) − f ( x 1 ) x 2 − x 1 − f ( x 1 ) − f ( x 0 ) x 1 − x 0 ] 1 x 2 − x 0 . . . a_0=f(x_0),a_1=\frac{f(x_1)-f(x_0)}{x_1-x_0},a_2=[\frac{f(x_2)-f(x_1)}{x_2-x_1}-\frac{f(x_1)-f(x_0)}{x_1-x_0}]\frac{1}{x_2-x_0}... a0=f(x0),a1=x1x0f(x1)f(x0),a2=[x2x1f(x2)f(x1)x1x0f(x1)f(x0)]x2x01...

差商、一阶均差: f [ x i , x j ] = f ( x j ) − f ( x i ) x j − x i a 1 = f [ x 0 , x 1 ] f[x_i,x_j]=\frac{f(x_j)-f(x_i)}{x_j-x_i}\qquad a_1=f[x_0,x_1] f[xi,xj]=xjxif(xj)f(xi)a1=f[x0,x1]

二阶均差: f [ x i , x j , x k ] = f [ x i , x j ] − f [ x j , x k ] x i − x k a 2 = f [ x 0 , x 1 , x 2 ] f[x_i,x_j,x_k]=\frac{f[x_i,x_j]-f[x_j,x_k]}{x_i-x_k}\qquad a_2=f[x_0,x_1,x_2] f[xi,xj,xk]=xixkf[xi,xj]f[xj,xk]a2=f[x0,x1,x2]

零阶均差: f [ x i ] = f ( x i ) f[x_i]=f(x_i) f[xi]=f(xi)

可以表示为 f [ x 0 , . . . , x n ] = ∑ i = 0 n f ( x i ) Π j = 0 , i ≠ j n ( x i − x j ) f[x_0,...,x_n]=\sum_{i=0}^n \dfrac{f(x_i)}{\Pi_{j=0,i\neq j}^n (x_i-x_j)} f[x0,...,xn]=i=0nΠj=0,i=jn(xixj)f(xi)

info:1.均差有对称性

​ 2. x 1 , . . . x n x_1,...x_n x1,...xn是n次多项式的n个互异实根,从而 f [ x 1 , . . . , x k ] = 0 , ( 1 ≤ k ≤ n ) f[x_1,...,x_k]=0,(1\leq k\leq n) f[x1,...,xk]=0,(1kn)

​ 3. f [ x , x 0 , . . . , x k ] f[x,x_0,...,x_k] f[x,x0,...,xk]是x的m次多项式,则 f [ x , x 0 , . . . , x k , x k + 1 ] f[x,x_0,...,x_k,x_{k+1}] f[x,x0,...,xk,xk+1]是x的m-1次多项式

Newton均差插值多项式

(要求记忆)

f ( x ) = f ( x 0 ) + f [ x 0 , x 1 ] ( x − x 0 ) + f [ x 0 , x 1 , x 2 ] ( x − x 0 ) ( x − x 1 ) f(x)=f(x_0)+f[x_0,x_1](x-x_0)+f[x_0,x_1,x_2](x-x_0)(x-x_1) f(x)=f(x0)+f[x0,x1](xx0)+f[x0,x1,x2](xx0)(xx1)

+ . . . + f [ x 0 , . . . , x n ] ( x − x 0 ) . . . ( x − x n − 1 ) + f [ x , x 0 , . . . , x n ] ( x − x 0 ) . . . ( x − x n ) +...+f[x_0,...,x_n](x-x_0)...(x-x_{n-1})+f[x,x_0,...,x_n](x-x_0)...(x-x_n) +...+f[x0,...,xn](xx0)...(xxn1)+f[x,x0,...,xn](xx0)...(xxn)

= f [ x 0 ] + f [ x 0 , x 1 ] w 1 ( x ) + . . . + f [ x 0 , . . . , x n ] w n ( x ) + f [ x , x 0 , . . . , x n ] w n + 1 ( x ) =f[x_0]+f[x_0,x_1]w_1(x)+...+f[x_0,...,x_n]w_n(x)+f[x,x_0,...,x_n]w_{n+1}(x) =f[x0]+f[x0,x1]w1(x)+...+f[x0,...,xn]wn(x)+f[x,x0,...,xn]wn+1(x)

= N n ( x ) + f [ x , x 0 , . . . , x n ] w n + 1 ( x ) =N_n(x)+f[x,x_0,...,x_n]w_{n+1}(x) =Nn(x)+f[x,x0,...,xn]wn+1(x)

由代数插值的唯一性 f [ x , x 0 , . . . , x n ] = f n + 1 ( ξ ) ( n + 1 ) ! , ξ ∈ ( a , b ) f[x,x_0,...,x_n]=\frac{f^{n+1}(\xi)}{(n+1)!},\qquad \xi\in(a,b) f[x,x0,...,xn]=(n+1)!fn+1(ξ),ξ(a,b)

从而有 f [ x , x , x ] = f ( 2 ) ( x ) 2 ! f[x,x,x]=\frac{f^{(2)}(x)}{2!} f[x,x,x]=2!f(2)(x)

import numpy as np
def Newton(X,Y,x):
    l=[]
    k=len(X)
    Q=np.zeros((k,k))
    Q[:,0]=Y
    for i in range(k-1):
        for j in range(k-i-1):
            Q[j+i+1,i+1]=(Q[j+i,i]-Q[j+i+1,i])/(X[j]-X[j+i+1])
    y=0
    for i in range(k):
        y=Q[k-i-1,k-i-1]+y*(x-X[k-1-i])
    return y
Newton(X,Y,0)
'''38.0'''

Method2*:有限差

在Newton插值公式中因为 x 0 , x 1 , . . . , x n x_0,x_1,...,x_n x0,x1,...,xn之间的距离不同而需要多次对距离差做商,可以运用有限差使得样本x等距,这样分子上 w = ( x − x 0 ) ( x − x 1 ) , . . . w=(x-x_0)(x-x_1),... w=(xx0)(xx1),...能够与分母 h k h^k hk消元,用以减小计算量。

一阶向前差分 △ f ( x ) = f ( x + h ) − f ( x ) \triangle f(x)=f(x+h)-f(x) f(x)=f(x+h)f(x)

一阶向后差分 ▽ f ( x ) = f ( x ) − f ( x − h ) \triangledown f(x)=f(x)-f(x-h) f(x)=f(x)f(xh)

一阶中心差分 δ f ( x ) = f ( x + h 2 ) − f ( x − h 2 ) \delta f(x)=f(x+\frac{h}{2})-f(x-\frac{h}{2}) δf(x)=f(x+2h)f(x2h)

高阶情况: △ n f ( x ) = △ ( △ n − 1 f ( x ) ) \triangle^n f(x)=\triangle(\triangle^{n-1}f(x)) nf(x)=(n1f(x))

prop:

(1)有限差算子为线性算子

(2)用函数值表示高阶有限差 P134

(3)用有限差表示函数值 P134

均差与有限差的关系

x i − x i − 1 = h x_i-x_{i-1}=h xixi1=h

f [ x 0 , x 1 , . . . , x n ] = △ n f ( x 0 ) n ! h n = ▽ n f ( x n ) n ! h n f[x_0,x_1,...,x_n]=\frac{\triangle^n f(x_0)}{n!h^n}=\frac{\triangledown^n f(x_n)}{n!h^n} f[x0,x1,...,xn]=n!hnnf(x0)=n!hnnf(xn)

用归纳法证明

Newton前差和后差插值公式

计算 x = x 0 + s h x=x_0+sh x=x0+sh处的函数值(s不一定为整数)

利用Newton插值公式和均差与有限差之间的关系有:

(1)带余项的Newton前差插值公式

f ( x ) = f ( x 0 + s h ) = f ( x 0 ) + s △ f ( x 0 ) + s ( s − 1 ) 2 ! △ 2 f ( x 0 ) + . . . + s ( s − 1 ) . . . ( s − n + 1 ) n ! △ n f ( x 0 ) + s ( s − 1 ) . . . ( s − n ) ( n + 1 ) ! h n + 1 f ( n + 1 ) ( ξ ) f(x)=f(x_0+sh)=f(x_0)+s\triangle f(x_0)+\frac{s(s-1)}{2!}\triangle^2 f(x_0)+...+\frac{s(s-1)...(s-n+1)}{n!}\triangle^n f(x_0)+\frac{s(s-1)...(s-n)}{(n+1)!}h^{n+1}f^{(n+1)}(\xi) f(x)=f(x0+sh)=f(x0)+sf(x0)+2!s(s1)2f(x0)+...+n!s(s1)...(sn+1)nf(x0)+(n+1)!s(s1)...(sn)hn+1f(n+1)(ξ)

ξ ∈ ( x 0 , x n ) \xi\in(x_0,x_n) ξ(x0xn)

计算 x = x n + t h , t ≤ 0 x=x_n+th,\quad t\leq 0 x=xn+th,t0处的函数值(s不一定为整数)

利用Newton插值公式和均差与有限差之间的关系有:

(2)带余项的Newton后差插值公式

f ( x ) = f ( x n + t h ) = f ( x n ) + t ▽ f ( x n ) + t ( t + 1 ) 2 ! ▽ 2 f ( x n ) + . . . + t ( t + 1 ) . . . ( t + n + 1 ) n ! ▽ n f ( x n ) + t ( t + 1 ) . . . ( t + n ) ( n + 1 ) ! h n + 1 f ( n + 1 ) ( ξ ) f(x)=f(x_n+th)=f(x_n)+t\triangledown f(x_n)+\frac{t(t+1)}{2!}\triangledown^2 f(x_n)+...+\frac{t(t+1)...(t+n+1)}{n!}\triangledown^n f(x_n)+\frac{t(t+1)...(t+n)}{(n+1)!}h^{n+1}f^{(n+1)}(\xi) f(x)=f(xn+th)=f(xn)+tf(xn)+2!t(t+1)2f(xn)+...+n!t(t+1)...(t+n+1)nf(xn)+(n+1)!t(t+1)...(t+n)hn+1f(n+1)(ξ)

ξ ∈ ( x 0 , x n ) \xi\in(x_0,x_n) ξ(x0xn)

Python计算前差插值公式求解x处近似值
import numpy as np
def Newton_forward(h,X,Y,x):
    s=(x-X[0])/h
    k=len(X)#k=n+1
    Q=np.zeros((k,k))
    Q[:,0]=Y
    for i in range(k-1):
        for j in range(k-i-1):
            Q[j+i+1,i+1]=(-Q[j+i,i]+Q[j+i+1,i])
    print(Q)
    y=0
    for i in range(k):
        y=Q[k-i-1,k-i-1]+y*(s-k+i+1)/(k-i)
    return y
a=lambda x:x**3+3*x**2+38
X=[-0.3,0.2,0.7,1.2]
Y=list(map(a,X))
a(0.5) #a(0.5)=38.875

Newton_forward(0.5,X,Y,0.5)
'''
[[38.243  0.     0.     0.   ]
 [38.128 -0.115  0.     0.   ]
 [39.813  1.685  1.8    0.   ]
 [44.048  4.235  2.55   0.75 ]]
38.875
'''
Python计算后差插值公式求解x处近似值
import numpy as np
def Newton_backward(h,X,Y,x):
    t=(x-X[-1])/h
    k=len(X)#k=n+1
    Q=np.zeros((k,k))
    Q[:,0]=Y
    for i in range(k-1):
        for j in range(k-i-1):
            Q[j+i+1,i+1]=(-Q[j+i,i]+Q[j+i+1,i])
    y=0
    for i in range(k):
        y=Q[-1,k-i-1]+y*(t-(-k+i+1))/(k-i)
    return y
   
Newton_backward(0.5,X,Y,0.5)
'''
38.875
'''

Method3:Hermite插值公式

原理

已知某点函数值和若干阶导数情况下的插值

下面只考虑:
已知 x 0 , . . . , x n x_0,...,x_n x0,...,xn处的函数值和一阶导数值时的插值,此时用2n+1阶多项式 H 2 n + 1 H_{2n+1} H2n+1进行逼近

使得 H 2 n + 1 H_{2n+1} H2n+1满足:
{ H 2 n + 1 ( x j ) = f ( x j ) H 2 n + 1 ′ = f ′ ( x j ) \left\{\begin{matrix} H_{2n+1}(x_j)=f(x_j) \\ H'_{2n+1}=f'(x_j) \end{matrix}\right. {H2n+1(xj)=f(xj)H2n+1=f(xj)
构造: H 2 n + 1 ( x ) = ∑ i = 0 n f ( x i ) A i ( x ) + ∑ i = 0 n f ′ ( x i ) B i ( x ) H_{2n+1}(x)=\sum_{i=0}^nf(x_i)A_i(x)+\sum_{i=0}^n f'(x_i)B_i(x) H2n+1(x)=i=0nf(xi)Ai(x)+i=0nf(xi)Bi(x)

使得 A i ( x j ) = δ i j , A ′ ( x j ) = 0 A_i(x_j)=\delta_{ij},\quad A'(x_j)=0 Ai(xj)=δij,A(xj)=0

B i ( x j ) = 0 , B i ′ ( x j ) = δ i j B_i(x_j)=0,\quad B_i'(x_j)=\delta_{ij} Bi(xj)=0,Bi(xj)=δij

从而 B i ( x ) = β i ( x − x i ) ( x − x 0 ) 2 . . . ( x − x n ) 2 → B i ( x ) = ( x − x i ) l i 2 ( x ) B_i(x)=\beta_i (x-x_i)(x-x_0)^2...(x-x_n)^2\rightarrow B_i(x)=(x-x_i)l_i^2(x) Bi(x)=βi(xxi)(xx0)2...(xxn)2Bi(x)=(xxi)li2(x)

从而 A i ( x ) = α i ( a x + b ) ( x − x 0 ) 2 . . . ( x − x i − 1 ) 2 ( x − x i + 1 2 ) . . . ( x − x n ) 2 A_i(x)=\alpha_i(ax+b)(x-x_0)^2...(x-x_{i-1})^2(x-x_{i+1}^2)...(x-x_n)^2 Ai(x)=αi(ax+b)(xx0)2...(xxi1)2(xxi+12)...(xxn)2

→ A i ( x ) = [ 1 − 2 ( x − x i ) ∑ j = 0 , j ≠ i n 1 x i − x j ] l i 2 ( x ) \rightarrow A_i(x)=[1-2(x-x_i)\sum_{j=0,j\ne i}^n\frac{1}{x_i-x_j}]l_i^2(x) Ai(x)=[12(xxi)j=0,j=inxixj1]li2(x)

从而得到Hermite插值公式(不需要记)

余项

假设 f f f [ a , b ] [a,b] [a,b]上有2n+1阶连续导数,在 ( a , b ) (a,b) (a,b)上存在 2 n + 1 2n+1 2n+1阶导数,则 f o r   x ∈ [ a , b ] , ∃ ξ ∈ ( a , b ) , s . t . for\,x\in[a,b],\exist \xi\in(a,b),s.t. forx[a,b],ξ(a,b),s.t.
f ( x ) − H 2 n + 1 ( x ) = w 2 n + 1 2 ( x ) ( 2 n + 2 ) ! f ( 2 n + 2 ) ( ξ ) f(x)-H_{2n+1}(x)=\frac{w_{2n+1}^2(x)}{(2n+2)!}f^{(2n+2)}(\xi) f(x)H2n+1(x)=(2n+2)!w2n+12(x)f(2n+2)(ξ)
有n+1个二重零点,引入辅助函数 F ( t ) = f ( t ) − H 2 n + 1 ( t ) − K ( x ) w 2 n + 1 2 ( t ) F(t)=f(t)-H_{2n+1}(t)-K(x)w_{2n+1}^2(t) F(t)=f(t)H2n+1(t)K(x)w2n+12(t)

已知一些点的值&一些点的导数,求多项式逼近

n个点的值知道n-1次多项式,加一个值的导数+一次

一般先以 L a g r a n g e Lagrange Lagrange作为基础,用待定系数法求。

Method4:样条插值

了解概念、构造方法

分段插值

一次: g 1 , i ( x ) = f ( x i ) + f [ x i , x i + 1 ] ( x − x i ) g_{1,i}(x)=f(x_i)+f[x_i,x_{i+1}](x-x_i) g1,i(x)=f(xi)+f[xi,xi+1](xxi)

分段抛物线插值: g 2 , i ( x ) = f ( x i ) + f [ x i , x i + 1 ] ( x − x i ) + f [ x i , x i + 1 , x i + 2 ] ( x − x i ) ( x − x i + 1 ) g_{2,i}(x)=f(x_i)+f[x_i,x_{i+1}](x-x_i)+f[x_i,x_{i+1},x_{i+2}](x-x_i)(x-x_{i+1}) g2,i(x)=f(xi)+f[xi,xi+1](xxi)+f[xi,xi+1,xi+2](xxi)(xxi+1)

求对应的误差限(利用Taylor展开,详见P143)

三次样条插值

P142 分段插值,且每段是不超过三次的多项式。

满足 ( 1 ) S ( x j ) = f ( x j ) , ( 2 ) (1)S(x_j)=f(x_j),\qquad (2) (1)S(xj)=f(xj),(2) 连接点处光滑 S i − 1 ′ ( x i − 0 ) = S i ′ ( x i + 0 ) S'_{i-1}(x_i-0)=S_i'(x_i+0) Si1(xi0)=Si(xi+0)

( 3 ) (3) (3)边界条件/端点条件

先由 S ′ ′ ( x ) = m i x i + 1 − x h i + m i + 1 x − x i h i , x ∈ [ x i , x i + 1 ] S''(x)=m_i\frac{x_{i+1}-x}{h_i}+m_{i+1}\frac{x-x_i}{h_i},\qquad x\in[x_i,x_{i+1}] S(x)=mihixi+1x+mi+1hixxi,x[xi,xi+1]

积分由 ( 1 ) (1) (1)得到两次积分常数C的值,由 ( 2 ) (2) (2)在n-1个连接处得到 m 1 , . . . , m n + 1 m_1,...,m_{n+1} m1,...,mn+1的n-1个方程

加上 ( 3 ) (3) (3)求解三对角矩阵

(1)已知边界点的二阶导数

f ′ ′ ( a ) = m 1 , f ′ ′ ( b ) = m n + 1 f''(a)=m_1,f''(b)=m_{n+1} f(a)=m1,f(b)=mn+1

如果 S ′ ′ ( x 1 ) = S ′ ′ ( x n + 1 ) = 0 S''(x_1)=S''(x_{n+1})=0 S(x1)=S(xn+1)=0则为自然三次样条插值

(2)已知边界点的导数

f ′ ( a ) = S ′ ( a ) , f ′ ( b ) = S ′ ( b ) f'(a)=S'(a),f'(b)=S'(b) f(a)=S(a),f(b)=S(b)

这样解 m 1 , . . . , m n + 1 m_1,...,m_{n+1} m1,...,mn+1的方程是对角占优的,从而有唯一解,这样的插值函数称为完备三次样条插值

(3)对Newton插值多项式

x 1 , . . . , x 4 x_1,...,x_4 x1,...,x4做牛顿插值 N a ( x ) N_a(x) Na(x)

x n + 1 , x n , . . . , x n − 2 x_{n+1},x_n,...,x_{n-2} xn+1,xn,...,xn2做牛顿插值 N b ( x ) N_b(x) Nb(x)

S ′ ( a ) = N ′ ( a ) , S ′ ( b ) = N ′ ( b ) S'(a)=N'(a),\qquad S'(b)=N'(b) S(a)=N(a),S(b)=N(b)

这样的插值叫做Lagrange三次样条插值

Chap 5:函数逼近

5.1 基本概念

def:广义多项式,最小多项式

def: C [ a , b ] C[a,b] C[a,b]上的函数范数

(1)非负性 (2)齐次性 (3)三角不等式

def:距离 ∣ ∣ f ( x ) − g ( x ) ∣ ∣ ||f(x)-g(x)|| f(x)g(x)

权函数

W ( x ) ∈ C [ a , b ] W(x)\in C[a,b] W(x)C[a,b]:

(1) W ( x ) ≥ 0 , ∀ x ∈ [ a , b ] W(x)\geq 0,\forall x\in [a,b] W(x)0,x[a,b]且最多有有限个零点

(2) ∫ a b x n W ( x ) d x , n = 0 , 1 , . . . \int_a^b x^nW(x)dx,n=0,1,... abxnW(x)dx,n=0,1,...存在

则称 W ( x ) W(x) W(x)是关于区间 [ a , b ] [a,b] [a,b]的权函数

remark:对应Euclid范数: ∣ ∣ f ( x ) ∣ ∣ 2 = ( ∫ a b f 2 ( x ) W ( x ) d x ) 1 2 ||f(x)||_2=(\int_a^b f^2(x)W(x) dx)^{\frac{1}{2}} f(x)2=(abf2(x)W(x)dx)21

逼近

φ ∈ s p a n ( φ 0 , . . . , φ n ) ⊂ C [ a , b ] \varphi\in span(\varphi_0,...,\varphi_n)\subset C[a,b] φspan(φ0,...,φn)C[a,b]

(1)一致逼近: l i m n → ∞ ∣ ∣ f ( x ) − φ ( x ) ∣ ∣ ∞ = 0 lim_{n\rightarrow \infty}||f(x)-\varphi_(x)||_{\infty}=0 limnf(x)φ(x)=0

(2)平方逼近: l i m n → ∞ ∣ ∣ f ( x ) − φ ( x ) ∣ ∣ 2 = 0 lim_{n\rightarrow \infty}||f(x)-\varphi_(x)||_2=0 limnf(x)φ(x)2=0

​ 即 l i m n → ∞ ∫ a b [ f ( x ) − g ( x ) ] 2 W ( x ) d x = 0 lim_{n\rightarrow \infty}\int_{a}^b [f(x)-g(x)]^2 W(x)dx=0 limnab[f(x)g(x)]2W(x)dx=0

​ 带权 W ( x ) W(x) W(x)的平方逼近

5.2最佳一致逼近

Bernstein 多项式,但是收敛慢。

Chebyshev:在不超过n的多项式中找最佳逼近

remark: H n = s p a n { 1 , x , x 2 , . . . , x n } H_n=span\lbrace 1,x,x^2,...,x^n\rbrace Hn=span{1,x,x2,...,xn}

def:

bias: ∣ ∣ f ( x ) − p n ( x ) ∣ ∣ ∞ = m a x a ≤ x ≤ b ∣ f ( x ) − p n ( x ) ∣ ||f(x)-p_n(x)||_\infty=max_{a\leq x\leq b}|f(x)-p_n(x)| f(x)pn(x)=maxaxbf(x)pn(x)

n次最佳逼近/最小偏差: E n = m i n p n ∈ H n m a x a ≤ x ≤ b ∣ f ( x ) − p n ( x ) ∣ E_n=min_{p_n\in H_n}max_{a\leq x\leq b}|f(x)-p_n(x)| En=minpnHnmaxaxbf(x)pn(x)

​ 其中使得bias取得 E n E_n En的多项式 p n ( x ) p_n(x) pn(x)称为 [ a , b ] [a,b] [a,b]上的n次最佳一致逼近多项式(简称最佳逼近多项式)

​ remark:由Bernstein定理知 n → ∞ , E n → 0 n\rightarrow \infty,E_n\rightarrow 0 n,En0

交错点组: g ( x ) ∈ C [ a , b ] , a ≤ x 1 < x 2 < . . . < x n ≤ b , ∣ g ( x i ) ∣ = m a x a ≤ x i ≤ b ∣ g ( x ) ∣ g(x)\in C[a,b],a\leq x_1<x_2<...<x_n\leq b,|g(x_i)|=max_{a\leq x_i\leq b}|g(x)| g(x)C[a,b],ax1<x2<...<xnb,g(xi)=maxaxibg(x) x 1 , . . . , x n x_1,...,x_n x1,...,xn为[a,b]上的交错点组。

thm:

(1)Chebyshev定理:设 f ∈ C [ a , b ] , p ( x ) ∈ H n f\in C[a,b],p(x)\in H_n fC[a,b],p(x)Hn,则 p ( x ) p(x) p(x) f ( x ) f(x) f(x)的最佳一致逼近多项式的充要条件是 f ( x ) − p ( x ) f(x)-p(x) f(x)p(x) [ s , b ] [s,b] [s,b]上至少有n+2个点组成的交错点组

(2) f ( x ) ∈ C [ a , b ] f(x)\in C[a,b] f(x)C[a,b],则在 H n H_n Hn中, f ( x ) f(x) f(x)有唯一的一个最佳一致逼近多项式 p ( x ) p(x) p(x)

(3) f ∈ C [ a , b ] f\in C[a,b] fC[a,b]有n+1阶导数,且 f ( n + 1 ) ( x ) f^{(n+1)}(x) f(n+1)(x) ( a , b ) (a,b) (a,b)内保持定号, p ( x ) ∈ H n p(x)\in H_n p(x)Hn f ( x ) f(x) f(x)的最佳一致逼近多项式,则区间 [ a , b ] [a,b] [a,b]的端点属于 f ( x ) − p ( x ) f(x)-p(x) f(x)p(x)的交错点组 (这一点可以由Rolle定理证明)

apply:

最佳一致逼近的计算:利用上面定理。方程依据:

(1)交错点组上的点是区间内的极值点。

​ 从而如果高一阶导数定号,则已确定两点,其它内点为极值点 g ′ ( x i ) = 0 g'(x_i)=0 g(xi)=0

​ 如果高一阶导数不定号再做讨论

(2)n+2个点的函数值相同,从而可以列出n-2个等式

5.3 最佳平方逼近

原理

关于权函数 W ( x ) W(x) W(x)的最佳平方逼近/最小二乘逼近 φ ( x ) : a r g φ ( x ) m i n ∫ a b [ f ( x ) − φ ( x ) ] 2 W ( x ) d x \varphi(x):arg_{\varphi(x)}min\int_a^b [f(x)-\varphi(x)]^2 W(x) dx φ(x):argφ(x)minab[f(x)φ(x)]2W(x)dx

其中 φ ( x ) = ∑ j = 0 n a j φ j ( x ) \varphi(x)=\sum_{j=0}^n a_j\varphi_j(x) φ(x)=j=0najφj(x)

T = ∫ a b [ f ( x ) − φ ( x ) ] 2 W ( x ) d x T=\int_a^b [f(x)-\varphi(x)]^2W(x)dx T=ab[f(x)φ(x)]2W(x)dx a i a_i ai求偏导等于0,从而 f ( x ) − φ ( x ) f(x)-\varphi(x) f(x)φ(x) φ k ( x ) \varphi_k(x) φk(x) W ( x ) W(x) W(x)二范数意义下正交。

f ( x ) − φ ( x ) f(x)-\varphi(x) f(x)φ(x)与其它所有 s p a n { φ 1 , . . . φ n } span\lbrace \varphi_1,...\varphi_n\rbrace span{φ1,...φn}上的函数逼近正交

从而 ( φ i , φ 0 ) a 0 + ( φ i , φ 1 ) a 1 + . . . + ( φ i , φ n ) a n = ( φ i , f ) (\varphi_i,\varphi_0)a_0+(\varphi_i,\varphi_1)a_1+...+(\varphi_i,\varphi_n)a_n=(\varphi_i,f) (φi,φ0)a0+(φi,φ1)a1+...+(φi,φn)an=(φi,f)

得到Gram矩阵

矩阵的解就是最佳平方逼近(相关证明可由函数内积给出),Gram矩阵形成的 方程称为法方程。P162

具体计算细节

为了方便解法方程,取正交函数系,从而 a j = ( φ j , f ) ∣ ∣ φ j ∣ ∣ a_j=\frac{(\varphi_j,f)}{||\varphi_j||} aj=φj(φj,f)

a j a_j aj f ( x ) f(x) f(x)关于正交函数系的Fourier系数,级数 ∑ j = 0 ∞ a j φ j ( x ) \sum_{j=0}^\infty a_j\varphi_j(x) j=0ajφj(x)称为f(x)的广义Fourier级数

5.4 直交多项式

def:直交多项式系 p 1 , . . . , p n p_1,...,p_n p1,...,pn,在范数 < p 1 , p 2 > = ∫ p 1 p 2 W ( x ) d x <p_1,p_2>=\int p_1p_2 W(x)dx <p1,p2>=p1p2W(x)dx下直交

首一直交多项式系算法

q 0 = 1 , q k + 1 = ( x − α k ) q k − β k q k − 1 q_0=1,q_{k+1}=(x-\alpha_k)q_k-\beta_kq_{k-1} q0=1,qk+1=(xαk)qkβkqk1

α k = ∫ x [ q k ( x ) ] 2 W ( x ) d x ∫ [ q k ( x ) ] 2 W ( x ) d x \alpha_k=\frac{\int x[q_k(x)]^2 W(x)dx}{\int[q_k(x)]^2 W(x)dx} αk=[qk(x)]2W(x)dxx[qk(x)]2W(x)dx

β = ∫ [ q k ( x ) ] 2 W ( x ) d x ∫ [ q k − 1 ( x ) ] 2 W ( x ) d x , k ≥ 1 \beta=\frac{\int[q_k(x)]^2W(x)dx}{\int[q_{k-1}(x)]^2 W(x)dx},k\geq 1 β=[qk1(x)]2W(x)dx[qk(x)]2W(x)dx,k1

证明: q k + 1 = ( x − c k ) q k + c k − 1 q k − 1 + . . . + c 0 q 0 q_{k+1}=(x-c_k)q_k+c_{k-1}q_{k-1}+...+c_0q_0 qk+1=(xck)qk+ck1qk1+...+c0q0

PS:其中 q k q_{k} qk与任何次数低于k的多项式都直交

直交多项式 P n P_n Pn在区间有n个互异的根

因为和常数 p 0 p_0 p0积分为0,如果r<n,从而在 ( a , b ) (a,b) (a,b)有奇数重实根 x 1 , . . . , x r , g = ( x − x 1 ) . . . ( x − x r ) x_1,...,x_r,g=(x-x_1)...(x-x_r) x1,...,xr,g=(xx1)...(xxr)从而 p n ( x ) g r ( x ) W ( x ) ≥ 0 , ∫ p n ( x ) g r ( x ) W ( x ) d x > 0 p_n(x)g_r(x)W(x)\geq 0,\int p_n(x)g_r(x)W(x)dx>0 pn(x)gr(x)W(x)0,pn(x)gr(x)W(x)dx>0,从而矛盾,所以$r=n$4

5.4* Chebyshev多项式

= = T n ( x ) = 1 2 [ ( x + x 2 − 1 ) n + ( x − x 2 − 1 ) n ] = c o s ( n   a r c c o s   x ) ( x = c o s θ 可 证 ) ==T_n(x)=\frac{1}{2}[(x+\sqrt{x^2-1})^n+(x-\sqrt{x^2-1})^n]=cos(n\,arccos\,x)\quad (x=cos\theta可证) ==Tn(x)=21[(x+x21 )n+(xx21 )n]=cos(narccosx)(x=cosθ)==

递推关系

T n + 1 = 2 x T n − T n − 1 , T 0 = 1 , T 1 = x T_{n+1}=2xT_{n}-T_{n-1},T_0=1,T_1=x Tn+1=2xTnTn1,T0=1,T1=x

prop:

  • 首项系数 2 n − 1 2^{n-1} 2n1
  • 奇偶性:n为奇数是奇函数,n为偶数是偶函数
  • ∣ x ∣ ≤ 1 , ∣ T n ( x ) ∣ ≤ 1 ; ∣ x ∣ > 1 , ∣ T n ( x ) > 1 ∣ ; x ∈ [ − 1 , 1 ] , m a x ∣ T ∣ = 1 |x|\leq 1,|T_n(x)|\leq 1;|x|>1,|T_n(x)>1|;x\in[-1,1],max|T|=1 x1,Tn(x)1;x>1,Tn(x)>1;x[1,1],maxT=1
  • 存在n+1个点 x k = c o s ( k π n ) , T n ( x n ) = ( − 1 ) k x_k=cos(\frac{k\pi}{n}),T_n(x_n)=(-1)^k xk=cos(nkπ),Tn(xn)=(1)k交错点组
  • 存在n个根 x k n = c o s ( 2 k − 1 ) π 2 n , k = 1 , . . . , n x_k^n=cos\frac{(2k-1)\pi}{2n},k=1,...,n xkn=cos2n(2k1)π,k=1,...,n
  • { T k ( x ) } \lbrace T_k(x)\rbrace {Tk(x)} W ( x ) = ( 1 − x 2 ) − 1 2 W(x)=(1-x^2)^{-\frac{1}{2}} W(x)=(1x2)21的直交多项式
对应最佳一致逼近

对所有次数不超过n q n ( z ) = 1 , m a x x ∈ [ − 1 , 1 ] ∣ q n ( z ) ∣ q_n(z)=1,max_{x\in[-1,1]}|q_n(z)| qn(z)=1maxx[1,1]qn(z)最小时 T ˉ n ( x ) = T n ( x ) T n ( z ) \bar{T}_n(x)=\frac{T_n(x)}{T_n(z)} Tˉn(x)=Tn(z)Tn(x)

从而对于首一多项式 m a x x ∈ [ − 1 , 1 ] ∣ p n ( x ) ∣ max_{x\in[-1,1]}|p_n(x)| maxx[1,1]pn(x)最小时对应多项式为 T n ( x ) 2 n − 1 \frac{T_n(x)}{2^{n-1}} 2n1Tn(x)偏差为 1 2 n − 1 \frac{1}{2^{n-1}} 2n11

求1/2/3次最佳一致逼近多项式

5.4**Legendre多项式

P n ( x ) = d n ( x 2 − 1 ) n 2 n n ! d x n P_n(x)=\frac{d^n(x^2-1)^n}{2^n n!dx^n} Pn(x)=2nn!dxndn(x21)n

prop:

  • 首项系数 ( 2 n ) ! 2 n ( n ! ) 2 \frac{(2n)!}{2^n (n!)^2} 2n(n!)2(2n)!
  • ∫ − 1 1 P m ( x ) P n ( x ) d x = 0 ( m ≠ n ) , 2 2 m + 1 ( m = n ) \int_{-1}^1 P_m(x)P_n(x)dx=0(m\ne n),\frac{2}{2m+1}(m=n) 11Pm(x)Pn(x)dx=0(m=n),2m+12(m=n)积分过程见P175 ps: ∫ 0 π 2 c o s 2 m + 1 θ d θ = ( 2 m ) ! ! ( 2 m + 1 ) ! ! \int_{0}^{\frac{\pi}{2}}cos^{2m+1}\theta d\theta=\frac{(2m)!!}{(2m+1)!!} 02πcos2m+1θdθ=(2m+1)!!(2m)!!
  • P n ( − x ) = ( − 1 ) n P n ( x ) P_n(-x)=(-1)^n P_n(x) Pn(x)=(1)nPn(x)
递推关系

P n + 1 = 2 n + 1 n + 1 x P n ( x ) − n n + 1 P n − 1 ( x ) , P 0 = 1 , P 1 = x P_{n+1}=\frac{2n+1}{n+1}xP_n(x)-\frac{n}{n+1}P_{n-1}(x),P_0=1,P_1=x Pn+1=n+12n+1xPn(x)n+1nPn1(x),P0=1,P1=x

最佳平方逼近

在首一的n次实系数多项式中首一Legendre多项式 P ~ n ( x ) = 2 n ( n ! ) 2 ( 2 n ) ! P n ( x ) \tilde{P}_n(x)=\frac{2^n(n!)^2}{(2n)!}P_n(x) P~n(x)=(2n)!2n(n!)2Pn(x)在[-1,1]上和0的平方误差最小,即内积最小

5.4***其它

对权函数 W ( x ) = e − x W(x)=e^{-x} W(x)=ex对应直交多项式:Laguerre多项式

对权函数 W ( x ) = e − x 2 W(x)=e^{-x^2} W(x)=ex2对应直交多项式:Hermite多项式

5.5近似最佳一致逼近

Lagrange插值多项式

r n ( x ) = f ( x ) − p n ( x ) = f ( n + 1 ) ( ξ ) ( n + 1 ) ! w n + 1 ( x ) r_n(x)=f(x)-p_n(x)=\frac{f^{(n+1)}(\xi)}{(n+1)!}w_{n+1}(x) rn(x)=f(x)pn(x)=(n+1)!f(n+1)(ξ)wn+1(x)

w n + 1 ( x ) = ( x − x 0 ) ( x − x 1 ) . . . ( x − x n ) w_{n+1}(x)=(x-x_0)(x-x_1)...(x-x_n) wn+1(x)=(xx0)(xx1)...(xxn)

选取Cheyshev多项式零点作为插值基点减小 w n + 1 ( x ) w_{n+1}(x) wn+1(x)

插值区间的转换&余项的求法P180

幂级数项数缩短

S n = b 0 T 0 + b 1 T 1 + . . . + b n T n S_n=b_0T_0+b_1T_1+...+b_nT_n Sn=b0T0+b1T1+...+bnTn

5.6 函数按照直交多项式展开

chebyshev级数 1 2 a 0 + ∑ j = 1 ∞ a j T j ( x ) , a j = ( T j , f ) ( T j , T j ) = 2 π ∫ 0 π f ( c o s θ ) c o s j θ   d θ \frac{1}{2}a_0+\sum_{j=1}^\infty a_jT_j(x),\qquad a_j=\frac{(T_j,f)}{(T_j,T_j)}=\frac{2}{\pi}\int_0^\pi f(cos\theta)cosj\theta \,d\theta 21a0+j=1ajTj(x),aj=(Tj,Tj)(Tj,f)=π20πf(cosθ)cosjθdθ

类似在权函数为1时用Legendre做展开但是 P ( x ) = a 0 P 0 ( x ) + a 1 P 1 ( x ) + . . . P(x)=a_0P_0(x)+a_1P_1(x)+... P(x)=a0P0(x)+a1P1(x)+...

Chap 6:最小二乘拟合

离散的最佳二次逼近

Chebyshev多项式作为拟合基函数

Chap 7 数值积分

利用 x 1 , x 2 , . . . , x n + 1 x_1,x_2,...,x_{n+1} x1,x2,...,xn+1作为求积基点(节点), A 1 , . . . , A n + 1 A_1,...,A_{n+1} A1,...,An+1作为求积系数, I ( f ) ≃ I n ( f ) = ∑ i A i f ( x i ) I(f)\simeq I_n(f)=\sum_i A_if(x_i) I(f)In(f)=iAif(xi)

余项/离散误差 E n ( f ) = I ( f ) − I n ( f ) E_n(f)=I(f)-I_n(f) En(f)=I(f)In(f)

7.1 Newton-Cotes

插值求积公式

用Lagrange插值多项式 f n ( x ) f_n(x) fn(x)逼近 f ( x ) f(x) f(x),对 f n ( x ) f_n(x) fn(x)积分代替 ∫ f ( x ) d x \int f(x)dx f(x)dx

求法&误差

Newton-Cotes求积公式

等步长求积

求法+误差

梯形公式和Simpson公式
梯形公式

一次函数拟合

Simpson公式

二次函数拟合

误差分析
  • 离散误差
  • 计算误差( f ( x i ) f(x_i) f(xi)理论值与实际值的误差)

7.2 复合求积公式

把区间分段,每段分别求积分

复合梯形公式

误差

变步长梯形公式

误差,公式,精度

复合Simpson公式

7.5 Gauss 型数值求积公式

代数精确度

∀ j : I n ( x j k ) = I ( x j k ) , k ≤ n \forall j:I_n(x_j^k)=I(x_j^k),k\leq n j:In(xjk)=I(xjk),kn求满足一定代数精确度的积分的系数与基点

最小是n,最大是2n+1(证明上界:取 f ( x ) = w n + 1 2 ( x ) f(x)=w_{n+1}^2(x) f(x)=wn+12(x)

Gauss型求积公式

先做插值展开,选择基点为Legendre多项式零点

误差P239

Gauss-Legendre求积公式

W=1 计算积分

Gauss-Chebyshev求积公式

代数精确度2n-1

n[-1,1]}|q_n(z)| 最 小 时 最小时 \bar{T}_n(x)=\frac{T_n(x)}{T_n(z)}$

从而对于首一多项式 m a x x ∈ [ − 1 , 1 ] ∣ p n ( x ) ∣ max_{x\in[-1,1]}|p_n(x)| maxx[1,1]pn(x)最小时对应多项式为 T n ( x ) 2 n − 1 \frac{T_n(x)}{2^{n-1}} 2n1Tn(x)偏差为 1 2 n − 1 \frac{1}{2^{n-1}} 2n11

求1/2/3次最佳一致逼近多项式

5.4**Legendre多项式

P n ( x ) = d n ( x 2 − 1 ) n 2 n n ! d x n P_n(x)=\frac{d^n(x^2-1)^n}{2^n n!dx^n} Pn(x)=2nn!dxndn(x21)n

prop:

  • 首项系数 ( 2 n ) ! 2 n ( n ! ) 2 \frac{(2n)!}{2^n (n!)^2} 2n(n!)2(2n)!
  • ∫ − 1 1 P m ( x ) P n ( x ) d x = 0 ( m ≠ n ) , 2 2 m + 1 ( m = n ) \int_{-1}^1 P_m(x)P_n(x)dx=0(m\ne n),\frac{2}{2m+1}(m=n) 11Pm(x)Pn(x)dx=0(m=n),2m+12(m=n)积分过程见P175 ps: ∫ 0 π 2 c o s 2 m + 1 θ d θ = ( 2 m ) ! ! ( 2 m + 1 ) ! ! \int_{0}^{\frac{\pi}{2}}cos^{2m+1}\theta d\theta=\frac{(2m)!!}{(2m+1)!!} 02πcos2m+1θdθ=(2m+1)!!(2m)!!
  • P n ( − x ) = ( − 1 ) n P n ( x ) P_n(-x)=(-1)^n P_n(x) Pn(x)=(1)nPn(x)
递推关系

P n + 1 = 2 n + 1 n + 1 x P n ( x ) − n n + 1 P n − 1 ( x ) , P 0 = 1 , P 1 = x P_{n+1}=\frac{2n+1}{n+1}xP_n(x)-\frac{n}{n+1}P_{n-1}(x),P_0=1,P_1=x Pn+1=n+12n+1xPn(x)n+1nPn1(x),P0=1,P1=x

最佳平方逼近

在首一的n次实系数多项式中首一Legendre多项式 P ~ n ( x ) = 2 n ( n ! ) 2 ( 2 n ) ! P n ( x ) \tilde{P}_n(x)=\frac{2^n(n!)^2}{(2n)!}P_n(x) P~n(x)=(2n)!2n(n!)2Pn(x)在[-1,1]上和0的平方误差最小,即内积最小

5.4***其它

对权函数 W ( x ) = e − x W(x)=e^{-x} W(x)=ex对应直交多项式:Laguerre多项式

对权函数 W ( x ) = e − x 2 W(x)=e^{-x^2} W(x)=ex2对应直交多项式:Hermite多项式

5.5近似最佳一致逼近

Lagrange插值多项式

r n ( x ) = f ( x ) − p n ( x ) = f ( n + 1 ) ( ξ ) ( n + 1 ) ! w n + 1 ( x ) r_n(x)=f(x)-p_n(x)=\frac{f^{(n+1)}(\xi)}{(n+1)!}w_{n+1}(x) rn(x)=f(x)pn(x)=(n+1)!f(n+1)(ξ)wn+1(x)

w n + 1 ( x ) = ( x − x 0 ) ( x − x 1 ) . . . ( x − x n ) w_{n+1}(x)=(x-x_0)(x-x_1)...(x-x_n) wn+1(x)=(xx0)(xx1)...(xxn)

选取Cheyshev多项式零点作为插值基点减小 w n + 1 ( x ) w_{n+1}(x) wn+1(x)

插值区间的转换&余项的求法P180

幂级数项数缩短

S n = b 0 T 0 + b 1 T 1 + . . . + b n T n S_n=b_0T_0+b_1T_1+...+b_nT_n Sn=b0T0+b1T1+...+bnTn

5.6 函数按照直交多项式展开

chebyshev级数 1 2 a 0 + ∑ j = 1 ∞ a j T j ( x ) , a j = ( T j , f ) ( T j , T j ) = 2 π ∫ 0 π f ( c o s θ ) c o s j θ   d θ \frac{1}{2}a_0+\sum_{j=1}^\infty a_jT_j(x),\qquad a_j=\frac{(T_j,f)}{(T_j,T_j)}=\frac{2}{\pi}\int_0^\pi f(cos\theta)cosj\theta \,d\theta 21a0+j=1ajTj(x),aj=(Tj,Tj)(Tj,f)=π20πf(cosθ)cosjθdθ

类似在权函数为1时用Legendre做展开但是 P ( x ) = a 0 P 0 ( x ) + a 1 P 1 ( x ) + . . . P(x)=a_0P_0(x)+a_1P_1(x)+... P(x)=a0P0(x)+a1P1(x)+...

Chap 6:最小二乘拟合

离散的最佳二次逼近

Chebyshev多项式作为拟合基函数

Chap 7 数值积分

利用 x 1 , x 2 , . . . , x n + 1 x_1,x_2,...,x_{n+1} x1,x2,...,xn+1作为求积基点(节点), A 1 , . . . , A n + 1 A_1,...,A_{n+1} A1,...,An+1作为求积系数, I ( f ) ≃ I n ( f ) = ∑ i A i f ( x i ) I(f)\simeq I_n(f)=\sum_i A_if(x_i) I(f)In(f)=iAif(xi)

余项/离散误差 E n ( f ) = I ( f ) − I n ( f ) E_n(f)=I(f)-I_n(f) En(f)=I(f)In(f)

7.1 Newton-Cotes

插值求积公式

用Lagrange插值多项式 f n ( x ) f_n(x) fn(x)逼近 f ( x ) f(x) f(x),对 f n ( x ) f_n(x) fn(x)积分代替 ∫ f ( x ) d x \int f(x)dx f(x)dx

求法&误差

Newton-Cotes求积公式

等步长求积

求法+误差

梯形公式和Simpson公式
梯形公式

一次函数拟合

Simpson公式

二次函数拟合

误差分析
  • 离散误差
  • 计算误差( f ( x i ) f(x_i) f(xi)理论值与实际值的误差)

7.2 复合求积公式

把区间分段,每段分别求积分

复合梯形公式

误差

变步长梯形公式

误差,公式,精度

复合Simpson公式

7.5 Gauss 型数值求积公式

代数精确度

∀ j : I n ( x j k ) = I ( x j k ) , k ≤ n \forall j:I_n(x_j^k)=I(x_j^k),k\leq n j:In(xjk)=I(xjk),kn求满足一定代数精确度的积分的系数与基点

最小是n,最大是2n+1(证明上界:取 f ( x ) = w n + 1 2 ( x ) f(x)=w_{n+1}^2(x) f(x)=wn+12(x)

Gauss型求积公式

先做插值展开,选择基点为Legendre多项式零点

误差P239

Gauss-Legendre求积公式

W=1 计算积分

Gauss-Chebyshev求积公式

代数精确度2n-1

W = 1 1 − x 2 W=\frac{1}{\sqrt{1-x^2}} W=1x2 1计算 ∫ − 1 1 f ( x ) ( 1 − x 2 ) − 1 2 d x ≃ π n ∑ f ( c o s 2 i − 1 2 n π ) \int_{-1}^1 f(x)(1-x^2)^{-\frac{1}{2}}dx\simeq \frac{\pi}{n}\sum f(cos\frac{2i-1}{2n}\pi) 11f(x)(1x2)21dxnπf(cos2n2i1π)

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值