数值分析笔记整理(二)
第六章解线性方程组的迭代法
1、雅可比迭代法
做题步骤
[ a 11 a 12 a 13 a 21 a 22 a 23 a 31 a 32 a 33 ] [ x 1 x 2 x 3 ] = [ b 1 b 2 b 3 ] \large \begin{bmatrix}a_{11} & a_{12} & a_{13} \\ a_{21} & a_{22} & a_{23} \\a_{31} & a_{32} & a_{33}\end{bmatrix} \begin{bmatrix}x_1\\x_2\\x_3\end{bmatrix}=\begin{bmatrix}b_1\\b_2\\b_3\end{bmatrix} a11a21a31a12a22a32a13a23a33 x1x2x3 = b1b2b3
- 确定系数矩阵A,对角矩阵D,下三角矩阵L,上三角矩阵U
- 由 A = D + L + U A=D+L+U A=D+L+U 变形得到 x → = D − 1 ( L + U ) + D − 1 b → \overrightarrow x = D^{-1}(L+U) + D^{-1} \overrightarrow b x=D−1(L+U)+D−1b
B J = D − 1 ( L + U ) B_J=D^{-1}(L+U) BJ=D−1(L+U)
C = D − 1 b → C=D^{-1} \overrightarrow b C=D−1b
-
注意不管是雅可比还是高斯赛德尔迭代法L与U都要乘以-1再带入计算
-
根据迭代矩阵写出迭代方程
B J = [ a 11 a 12 a 13 a 21 a 22 a 23 a 31 a 32 a 33 ] \large B_J= \begin{bmatrix}a_{11} & a_{12} & a_{13} \\ a_{21} & a_{22} & a_{23} \\a_{31} & a_{32} & a_{33}\end{bmatrix}% BJ= a11a21a31a12a22a32a13a23a33
{ x 1 ( k + 1 ) = a 12 x 2 ( k ) + a 13 x 3 ( k ) + b 1 x 2 ( k + 1 ) = a 21 x 1 ( k ) + a 23 x 3 ( k ) + b 2 x 3 ( k + 1 ) = a 31 x 1 ( k ) + a 32 x 2 ( k ) + b 3 \large \begin{cases} x_1^{(k+1)}=a_{12} x_2^{(k)}+a_{13} x_3^{(k)}+b_1 \\ x_2^{(k+1)}=a_{21} x_1^{(k)}+a_{23} x_3^{(k)}+b_2 \\ x_3^{(k+1)}=a_{31} x_1^{(k)}+a_{32} x_2^{(k)}+b_3\end{cases} ⎩ ⎨ ⎧x1(k+1)=a12x2(k)+a13x3(k)+b1x2(k+1)=a21x1(k)+a23x3(k)+b2x3(k+1)=a31x1(k)+a32x2(k)+b3
-
一般取 x ( 0 ) = ( 1 , 1 , 1 , ⋯ ) T \large x^{(0)}=(1,1,1,\cdots)^T x(0)=(1,1,1,⋯)T为初始值开始迭代
-
迭代精度要求:
一般采用无穷范数 ∣ ∣ x ( k + 1 ) − x ( k ) ∣ ∣ ∞ < 1 0 − n \large ||x^{(k+1)}-x^{(k)}||_\infty<10^{-n} ∣∣x(k+1)−x(k)∣∣∞<10−n
2、高斯塞德尔迭代法
做题步骤
-
同样列出系数矩阵A,对角矩阵D(此时对角阵D为单位矩阵),下三角矩阵L,上三角矩阵U
-
B s = ( D − L ) − 1 U \large B_s=(D-L)^{-1}U Bs=(D−L)−1U
-
迭代步骤与雅可比相同
3、两种迭代方法的收敛性
- 若系数矩阵A是严格对角占优,则雅可比迭代法与高斯塞德尔迭代法均收敛
**严格对角占优:**所有对角线元素大于这一行其他元素绝对值之和
- 一般采用谱半径 ρ \large \rho ρ 来判断迭代是否收敛
ρ = ∣ λ m a x ∣ \large \rho = |\lambda_{max}| ρ=∣λmax∣ (为矩阵特征值的最大值的绝对值)
若 ρ < 1 \large \rho < 1 ρ<1 则收敛,否则发散
第七章非线性方程组的数值解法
1、二分法求根
做题步骤
例:二分法求方程 x 2 − x − 1 = 0 x^2-x-1=0 x2−x−1=0的正根,要求误差小于0.05
- 确定初始有根区间
设 f ( x ) = x 2 − x − 1 \large f(x)=x^2-x-1 f(x)=x2−x−1 f ( 0 ) = − 1 < 0 \large f(0)=-1<0 f(0)=−1<0 f ( 2 ) = 1 > 0 \large f(2)=1>0 f(2)=1>0
故在区间[0,2]上f(x)有根
- 确定二分次数k(k=1,2……)
b 0 − a 0 2 k + 1 < 0.05 \displaystyle \frac{b_0-a_0}{2^{k+1}}<0.05 2k+1b0−a0<0.05 解出k即为二分次数
- 列表求解
k | a k a_k ak | b k b_k bk | x k x_k xk | f ( x k ) f(x_k) f(xk) |
---|---|---|---|---|
0 | 1.5 | 2 | 1.75 | + |
1 | 1.5 | 1.75 | 1.625 | + |
2 | 1.5 | 1.625 | 1.5625 | - |
3 | 1.5625 | 1.625 | 1.59375 | - |
- 注意:表格更新方式为若 f ( x k ) f(x_k) f(xk) 为正,则此时 x k x_k xk更新到 b k + 1 b_{k+1} bk+1,若 f ( x k ) f(x_k) f(xk) 为负,则此时 x k x_k xk更新到 a k + 1 a_{k+1} ak+1
- 此时 x ∗ ≈ x 3 = 1.59375 x^*\approx x_3 =1.59375 x∗≈x3=1.59375
可以用 b k − a k 2 < 0.05 \displaystyle \frac{b_k-a_k}{2}<0.05 2bk−ak<0.05来进行验证
2、牛顿法求根
做题步骤
- 根据题目列出以下参数
x 0 ; f ( x ) ; f ′ ( x ) \large x_0;f(x);f'(x) x0;f(x);f′(x)
- 列出迭代公式:
x k + 1 = x k − f ( x k ) f ′ ( x k ) k = 0 , 1 , 2 ⋯ \displaystyle x_{k+1} = x_k-\frac{f(x_k)}{f'(x_k)} \quad k=0,1,2\cdots xk+1=xk−f′(xk)f(xk)k=0,1,2⋯
- 开始迭代
- 计算迭代精度(题中一般要求保留n+1位有效数字)
∣ x k − x ∗ ∣ < 1 2 ∗ 1 0 − n \large |x_k-x^*|<\frac{1}{2}*10^{-n} ∣xk−x∗∣<21∗10−n
- 求出最终解
3、弦截法求根
- 根据题目列出以下参数
x 0 x 1 \large x_0 \quad x_1 x0x1
- 列出迭代公式:
x k + 1 = x k − ( x k − x k − 1 ) ( f ( x k ) ) f ( x k ) − f ( x k − 1 ) k = 1 , 2 ⋯ \displaystyle x_{k+1} = x_k-\frac{(x_k-x_{k-1})(f(x_k))}{f(x_k)-f(x_{k-1})} \quad k=1,2\cdots xk+1=xk−f(xk)−f(xk−1)(xk−xk−1)(f(xk))k=1,2⋯
- 与其他求根方法一样根据精度找出最优解
第九章常微分方程初值问题数值解法
-
常微分方程一般形式
{ d y d x = f ( x , y ) y ( x 0 ) = y 0 \large \begin{cases} \frac{dy}{dx}=f(x,y)\\ y(x_0)=y_0 \end{cases} ⎩ ⎨ ⎧dxdy=f(x,y)y(x0)=y0 -
显式欧拉:
y n + 1 = y n + h f ( x n , y n ) \large y_n+1 = y_n + h f(x_n,y_n) yn+1=yn+hf(xn,yn) -
隐式欧拉:
y n + 1 = y n + h f ( x n + 1 , y n + 1 ) \large y_n+1 = y_n + h f(x_{n+1},y_{n+1}) yn+1=yn+hf(xn+1,yn+1)
- 梯形公式
y n + 1 = y n + h 2 [ f ( x n , y n ) + f ( x n + 1 , y n + 1 ) ] \large y_n+1 = y_n+\frac{h}{2}[f(x_n,y_n)+f(x_{n+1},y_{n+1})] yn+1=yn+2h[f(xn,yn)+f(xn+1,yn+1)]
- 欧拉公式
{ y ˉ n + 1 = y n + h f ( x n , y n ) y n + 1 = y n + h 2 [ f ( x n , y n ) + f ( x n + 1 , y ˉ n + 1 ) ] \large \begin{cases} \bar y_{n+1} = y_n +hf(x_n,y_n)\\ y_n+1 = y_n +\frac{h}{2}[f(x_n,y_n)+f(x_{n+1},\bar y_{n+1})] \end{cases} ⎩ ⎨ ⎧yˉn+1=yn+hf(xn,yn)yn+1=yn+2h[f(xn,yn)+f(xn+1,yˉn+1)]