常微分方程的解线性方程组的迭代法

合集下载

《数值分析》第4章 解线性方程组的迭代法

《数值分析》第4章 解线性方程组的迭代法
及矩阵 A Rn,n 有 || Ax ||t || A ||s|| x ||t
都成立,则称矩阵范数 || ||s和向量范数 || ||相t 容.
注意:为了保证矩阵范数和向量范数相容,最常用的矩阵范数
是由相应向量范数导出的.
4.1.3 矩阵范数和矩阵序列的极限
定理4 设 || |是| R中n 的向量范数,对于任何 A Rn,n若
4.1.2 向量范数和向量序列的极限
定义2 (向量范数) 如果在 Rn中定义了实值函数,记为 || ,||
对所有 x, y Rn以及 R,若满足 (1) || x || 0,当且仅当 x 0时, || x || (0非负性) ;
(2) || x ||| | || x |(|齐次性);
(3) || x y |||| x || || y(|三| 角不等式). 则称 || x ||为向量 x的范数 (或模).
于是有
c1 || x(k) x* || || x(k) x* || c2 || x(k) x* ||
lim ||
k
x(k)
x* || 0
lim ||
k
x(k)
x*
||
0
4.1.2 向量范数和向量序列的极限
例1 计算向量 x (5,1,3)的T 常用范数.

|| x || 5
|| x ||1 9
(3)|| A B |||| A || || B;||(三角不等式) (4) || AB |||| A || || B;|| 则称 || A ||为矩阵 A 的范数.
4.1.3 矩阵范数和矩阵序列的极限
相容性: 设有矩阵范数 || ||s和向量范数 || ||,t 如果对任何向量 x Rn

常微分方程的常见解法

常微分方程的常见解法

# 定义网格密度
arrows=LINE,
# 定义线段类型
axes=NORMAL);
# 定义坐标系类型
在MATLAB的向量场命令为 quiver(x,y,px,py)
回车后Maple就在1 1 的网格点上画出了向量场
44
的图形,并给出了过点(-2, 2) (-2 ,1) (-2,2) 的三
条积分曲线,见下图
M (x,y)co x s2xye , y
N (x,y)co x s2xye x
M(x,y)N(x,y)
y
x
所以方程为全微分方程。
由公式F (x ,y ) 0M (s ,y )d s 0N (0 ,s )d s
x(yc o ss 2 se y)d sy2 d s
0
0
ysinxx2ey2y

x
y
F (x ,y )x 0M (s ,y ) d s y 0N (x 0 ,s ) d
s
例:验证方程
( y c o s x 2 x e y ) d x ( s i n x x 2 e y 2 ) d y 0
是全微分方程,并求它的通解。 解:由于 M (x ,y ) y c o sx 2 x e yN (x ,y ) s in x x 2 e y 2
dx
令 zy1n,则 dz(1n)yndy
dx
dx
d z (1 n )P (x )z (1 n )Q (x )
d x
求出此方程通解后, 换回原变量即得伯努利方程的通解。
例 湖泊的污染
设一个化工厂每立方米的废水中含有3.08kg盐酸, 这些废水流入一个湖泊中,废水流入的速率20 立方米每小时. 开始湖中有水400000立方米. 河水 中流入不含盐酸的水是1000立方米每小时, 湖泊 中混合均匀的水的流出的速率是1000立方米每小 时,求该厂排污1年时, 湖泊水中盐酸的含量。 解: 设t时刻湖泊中所含盐酸的数量为 x ( t )

第三章 迭代法s4 解线性方程组的迭代法

第三章  迭代法s4 解线性方程组的迭代法

得 x(1) = ( 0.5000, 2.8333, -1.0833 )T

x(9) = ( 2.0000, 3.0000, -1.0000 )T
举例(续)
SOR 迭代格式
( x1( k 1) (1 ) x1( k ) 1 x2k ) 2 ( k 1) (k ) ( k 1) (k ) x2 (1 ) x2 8 x1 x3 3 ( k 1) ( ( x3 (1 ) x3k ) 5 x2k 1) 2
( k ( k 在计算 xi( k 1) 时,如果用 x1 k1) ,, xi(11) 代替 x1 k ) ,, xi(1) ,则 可能会得到更好的收敛效果。此时的迭代公式为
x1( k 1) ( x2k 1) ( k 1) xn
( ( ( b1 a12 x2k ) a13 x3k ) a1n xnk ) a11 ( ( b2 a21 x1( k 1) a23 x3k ) a2 n xnk ) a22
解得
x
x ( k 1) (1 ) x ( k ) D 1 b Lx ( k 1) Ux ( k )
( k 1)
D L
1
1
(1 ) D U x
(k )
D L b
1
GS D L
Jacobi 迭代 x( k 1) D1 ( L U ) x( k ) D1b
M = D, N = M – A = -(L + U)
GS 迭代
x
( k 1)
L D Ux
1
(k )

计算方法3_线性方程组迭代解法

计算方法3_线性方程组迭代解法

计算方法3_线性方程组迭代解法线性方程组的迭代解法是解决线性方程组的一种常见方法,常用于大规模的线性方程组求解。

该方法通过不断迭代更新解的近似值,直到满足一定的收敛准则为止。

线性方程组的迭代解法有很多种,其中最经典的是雅可比迭代法、高斯-赛德尔迭代法和超松弛迭代法。

本文将分别介绍这三种迭代解法及其计算方法。

雅可比迭代法是一种比较简单的线性方程组迭代解法,它的基本思想是先将线性方程组转化为对角占优的形式,然后通过迭代求解逐渐接近精确解。

雅可比迭代法的迭代公式为:其中,x^(k+1)是第k+1次迭代的近似解,n是未知数的个数,a_ij 是系数矩阵A的元素,f_i是方程组的右端向量的元素。

雅可比迭代法的计算步骤如下:1.将线性方程组转化为对角占优的形式,即保证矩阵A的对角元素绝对值大于其它元素的绝对值。

2.初始化向量x^(0),设定迭代终止准则。

3.根据雅可比迭代公式,计算x^(k+1)。

4.判断迭代终止准则是否满足,如果满足,则停止迭代,返回近似解x^(k+1);否则,继续进行下一次迭代。

高斯-赛德尔迭代法是雅可比迭代法的改进方法,它的基本思想是在每次迭代计算x^(k+1)时,利用已经计算出的近似解作为x的一部分。

高斯-赛德尔迭代法的迭代公式为:其中,x^(k+1)_i是第k+1次迭代的近似解中第i个未知数的值,x^(k)_i是第k次迭代的近似解中第i个未知数的值。

高斯-赛德尔迭代法的计算步骤如下:1.将线性方程组转化为对角占优的形式。

2.初始化向量x^(0),设定迭代终止准则。

3.根据高斯-赛德尔迭代公式,计算x^(k+1)。

4.判断迭代终止准则是否满足,如果满足,则停止迭代,返回近似解x^(k+1);否则,继续进行下一次迭代。

超松弛迭代法是对高斯-赛德尔迭代法的一种改进方法,它引入了松弛因子ω,通过调整参数ω的值,可以加快迭代的收敛速度。

超松弛迭代法的迭代公式为:其中,0<ω<2,x^(k+1)_i是第k+1次迭代的近似解中第i个未知数的值,x^(k)_i是第k次迭代的近似解中第i个未知数的值。

常微分方程的线性方程组解法

常微分方程的线性方程组解法

常微分方程的线性方程组解法常微分方程是数学中的一个重要分支,研究的是描述自然和社会现象的变化规律的方程。

线性方程组是常微分方程中的一类特殊情况,它具有重要的理论和实际应用价值。

本文将介绍常微分方程的线性方程组解法,并以具体的示例进行说明。

1. 线性方程组的定义与形式线性方程组由多个线性方程组成,其中每个线性方程都是未知函数及其导数的线性组合。

一般形式如下:y^(n) + a_(n-1)(x)y^(n-1) + … + a_1(x)y' + a_0(x)y = f(x)其中,y^(n) 表示未知函数 y 的 n 阶导数,a_i(x)(i = 0, 1, …, n-1)是已知函数,f(x) 是已知函数。

2. 线性齐次方程组的解法线性齐次方程组是指 f(x) = 0 的线性方程组。

对于线性齐次常微分方程组,可以使用特征方程法来求解。

具体步骤如下:(1)设 y = e^(rx) 为方程的解,代入方程得到特征方程,如 y'' + ay' + by = 0,则特征方程为 r^2 + ar + b = 0。

(2)解特征方程得到 r1 和 r2,若r1 ≠ r2,则 y1 = e^(r1x) 和 y2 = e^(r2x) 是方程的两个线性无关解;若 r1 = r2 = r,则 y1 = e^(rx) 和 y2 = xe^(rx) 是方程的两个线性无关解。

(3)根据线性组合的原理,方程的通解为 y = C1y1 + C2y2(或 y = C1y1 + C2y2lnx),其中 C1 和 C2 为任意常数。

3. 非齐次线性方程组的解法非齐次线性方程组是指f(x) ≠ 0 的线性方程组。

求解非齐次线性方程组可以使用常数变易法。

具体步骤如下:(1)令 y = C1(x)y1(x) + C2(x)y2(x) 为方程的解,其中 C1(x) 和C2(x) 为待定函数。

(2)代入原方程,得到待定函数的微分方程组。

线性方程组的迭代式求解方法

线性方程组的迭代式求解方法

线性方程组的迭代式求解方法迭代法解方程的基本原理1.概述把 Ax=b 改写成 x=Bx+f ,如果这一迭代格式收敛,对这个式子不断迭代计算就可以得到方程组的解。

道理很简单:对 x^{(k+1)}=bx^{(k)}+f 两边取极限,显然如果收敛,则最终得到的解满足 \lim_{k\rightarrow\infty } x^{(k)}=x^*=Bx^*+f ,从而必然满足原方程 Ax^*=b 。

迭代方法的本质在于这一次的输出可以当作下一次的输入,从而能够实现循环往复的求解,方法收敛时,计算次数越多越接近真实值。

2.收敛条件充要条件:迭代格式 x=Bx+f 收敛的充要条件是 \rho (B)<1充分条件: \Vert B\Vert <1即 \Vert B\Vert <1 \Rightarrow \rho(B)<1\Leftrightarrow 迭代收敛一、Jacobi迭代法怎样改写Ax=b ,从而进行迭代求解呢?一种最简单的迭代方法就是把第i行的 x_i 分离出来(假定 a_{ii} \ne 0 ):\sum_{j=1}^{n}a_{ij}x_j=b_i\Rightarrow x_i=\frac{b_i-\sum_{j=1,j\ne i}^{n}a_{ij}x_j}{a_{ii}}\quad \\这就是Jacobi(雅可比)迭代法。

迭代格式给定x^{(0)}=\left[x_1^{(0)},x_2^{(0)},\cdots,x_n^{(0)}\rig ht]^T ,则Jacobi法的迭代格式(也称分量形式)为x_i^{(k+1)}=\frac{1}{a_{ii}}\left ( {b_i-\sum_{j=1,j\ne i}^{n}a_{ij}x_j^{(k)}}\right),\quadi=1,2,\cdots,n\\矩阵形式设 A=D-L-U。

Jacobi法的矩阵形式(也称向量形式)为x^{(k+1)}=B_Jx^{(k)}+D^{-1}b\\其中迭代矩阵 B_J=D^{-1}(L+U)收敛条件\begin{eqnarray} \left. \begin{array}{lll} \VertB_J\Vert <1 \\ A 严格对角占优\\ A, 2D-A对称正定\end{array} \right \} \end{eqnarray} \Rightarrow \rho (B_J)<1\Leftrightarrow 迭代收敛特别地,若 A 对称正定且为三对角,则 \rho^2(B_J)=\rho (B_G)<1 。

常微分方程中的常系数线性方程及其解法

常微分方程中的常系数线性方程及其解法

常微分方程中的常系数线性方程及其解法常微分方程(Ordinary Differential Equation,ODE)是一种数学模型,用于描述时间或空间上量的变化规律。

常微分方程中的常系数线性方程是ODE中一个重要的类别,其解法具有一定的规律性和普适性。

本文将就常微分方程中的常系数线性方程及其解法做简要介绍。

一、常系数线性方程的定义常系数线性方程是指其系数不随自变量t的变化而改变的线性方程。

一般写为:$$\frac{d^n}{dt^n}y(t)+a_{n-1}\frac{d^{n-1}}{dt^{n-1}}y(t)+...+a_1\frac{d}{dt}y(t)+a_0y(t)=f(t)$$其中a的值为常数,f(t)为已知函数,y(t)为未知函数,方程中最高阶导数的阶数为n。

n阶常系数线性方程也称为n阶齐次线性方程;当f(t)≠0时,称其为n阶非齐次线性方程。

二、常系数线性方程的解法对于一般形式的常系数线性方程,我们常用特征根的方法来求解。

具体来说,先考虑对应的齐次线性方程$$\frac{d^n}{dt^n}y(t)+a_{n-1}\frac{d^{n-1}}{dt^{n-1}}y(t)+...+a_1\frac{d}{dt}y(t)+a_0y(t)=0$$设y(t)=e^{rt},则有$$r^ne^{rt}+a_{n-1}r^{n-1}e^{rt}+...+a_1re^{rt}+a_0e^{rt}=0$$整理得到$$(r^n+a_{n-1}r^{n-1}+...+a_1r+a_0)e^{rt}=0$$根据指数函数的性质得到$$r^n+a_{n-1}r^{n-1}+...+a_1r+a_0=0$$求解方程$$r^n+a_{n-1}r^{n-1}+...+a_1r+a_0=0$$可得到n个特征根,设其为$r_1,r_2,...,r_n$。

则对于齐次线性方程,其通解为$$y(t)=c_1e^{r_1 t}+c_2e^{r_2 t}+...+c_ne^{r_n t}$$其中$c_1,c_2,...,c_n$为待定常数。

常微分方程的解线性方程组的迭代法

常微分方程的解线性方程组的迭代法

实验五 解线性方程组的迭代法【实验容】对1、设线性方程组⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎭⎫⎝⎛-=⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎭⎫⎝⎛⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎭⎫⎝⎛--------------------------2119381346323125136824381004120291372642212341791110161035243120536217758683233761624491131512013012312240010563568000012132410987654321x x x x x x x x x x()Tx 2,1,1,3,0,2,1,0,1,1*--=2、设对称正定系数阵线性方程组⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎭⎫ ⎝⎛---=⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎭⎫ ⎝⎛⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎭⎫ ⎝⎛---------------------45152292320601924336002141103520411144334310422181233416120653811414023121220024042487654321x x x x x x x x ()Tx 2,0,1,1,2,0,1,1*--=3、三对角形线性方程组⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎭⎫ ⎝⎛----=⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎭⎫ ⎝⎛⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎭⎫ ⎝⎛------------------5541412621357410000000014100000000141000000001410000000014100000000141000000001410000000014100000000141000000001410987654321x x x x x x x x x x ()Tx 1,1,0,3,2,1,0,3,1,2*---=试分别选用Jacobi 迭代法,Gauss-Seidol 迭代法和SOR 方法计算其解。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验五 解线性方程组的迭代法【实验内容】对1、设线性方程组⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎭⎫⎝⎛-=⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎭⎫⎝⎛⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎭⎫⎝⎛--------------------------2119381346323125136824381004120291372642212341791110161035243120536217758683233761624491131512013012312240010563568000012132410987654321x x x x x x x x x x()Tx 2,1,1,3,0,2,1,0,1,1*--=2、设对称正定系数阵线性方程组⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎭⎫ ⎝⎛---=⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎭⎫ ⎝⎛⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎭⎫ ⎝⎛---------------------45152292320601924336002141103520411144334310422181233416120653811414023121220024042487654321x x x x x x x x ()Tx 2,0,1,1,2,0,1,1*--=3、三对角形线性方程组⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎭⎫ ⎝⎛----=⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎭⎫ ⎝⎛⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎭⎫ ⎝⎛------------------5541412621357410000000014100000000141000000001410000000014100000000141000000001410000000014100000000141000000001410987654321x x x x x x x x x x ()Tx 1,1,0,3,2,1,0,3,1,2*---=试分别选用Jacobi 迭代法,Gauss-Seidol 迭代法和SOR 方法计算其解。

【实验方法或步骤】1、体会迭代法求解线性方程组,并能与消去法加以比较;2、分别对不同精度要求,如54310,10,10---=ε由迭代次数体会该迭代法的收敛快慢;3、对方程组2,3使用SOR 方法时,选取松弛因子ω=0.8,0.9,1,1.1,1.2等,试看对算法收敛性的影响,并能找出你所选用的松弛因子的最佳者;4、给出各种算法的设计程序和计算结果。

程序:用雅可比方法求的程序:function [x,n]=jacobi(A,b,x0,eps,varargin) if nargin==3 eps=1.0e-6; M=200;elseif nargin==5M=varargin{1};endD=diag(diag(A));L=-tril(A,-1);U=-triu(A,1);B=D\(L+U);f=D\b;x=B*x0+f;n=1;while norm(x-x0)>=epsx0=x;x=B*x0+f;n=n+1;if(n>=M)diso('不收敛!')return;endend解1的程序为A=[4 2 -3 -1 2 1 0 0 0 0;8 6 -5 -3 6 5 0 1 0 0;4 2 -2 -1 3 2 -1 0 3 1;0 -2 1 5 -1 3 -1 1 9 4;-4 2 6 -1 6 7 -3 3 2 3;8 6 -8 5 7 17 2 6 -3 5;0 2 -1 3 -4 2 5 3 0 1;16 10 -11 -9 17 34 2 -1 2 2;4 6 2 -7 13 9 2 0 12 4;0 0 -1 8 -3 -24 -8 6 3 -1;],b=[5 12 3 2 3 46 13 38 19 -21]'A =Columns 1 through 44 2 -3 -18 6 -5 -34 2 -2 -10 -2 1 5-4 2 6 -18 6 -8 50 2 -1 316 10 -11 -94 6 2 -70 0 -1 8Columns 5 through 82 1 0 06 5 0 13 2 -1 0-1 3 -1 16 7 -3 37 17 2 6-4 2 5 317 34 2 -113 9 2 0-3 -24 -8 6Columns 9 through 100 00 03 19 42 3-3 50 12 212 43 -1b =51232346133819-21>> x0=ones(10,1);>> [x,n]=Jacobi(A,b,x0)得到的结果为Warning: Function call Jacobi invokes inexact match d:\MATLAB7\work\jacobi.m.不收敛!x =1.0e+124 *-0.1794-0.3275-0.70941.59901.03110.32910.24644.39050.4927-2.6574n =200即迭代了200次而且可能不收敛A =4 2 -4 0 4 2 0 0 2 2 -1 2 1 3 2 0 -4 -1 14 1 -8 -356 0 -2 1 6 -1 -4 -3 3 2 1 -8 -1 22 4 -10 -3 4 3 -3 -4 4 11 1 -4 0 2 5 -3 -10 1 14 2 0 0 6 3 -3 -4 2 19b = 0-620239-22-1545>> x0=ones(8,1);>> [x,n]=Jacobi(A,b,x0)不收敛!x =1.0e+047 *0.96271.0084-0.4954-0.59790.30970.6872-0.0666-0.2629n =200此方程可能不收敛A=[4 -1 0 0 0 0 0 0 0 0;-1 4 -1 0 0 0 0 0 0 0;0 -1 4 -1 0 0 0 0 0 0;0 0 -1 4 -1 0 0 0 0 0;0 0 0 -1 4 -1 0 0 0 0;0 0 0 0 -1 4 -1 0 0 0;0 0 0 0 0 -1 4 -1 0 0;0 0 0 0 0 0 -1 4 -1 0;0 0 0 0 0 0 0 -1 4 -1;0 0 0 0 0 0 0 0 -1 4;],b=[7 5 -13 2 6 -12 14 -4 5 -5]'A =Columns 1 through 54 -1 0 0 0-1 4 -1 0 00 -1 4 -1 00 0 -1 4 -10 0 0 -1 40 0 0 0 -10 0 0 0 00 0 0 0 00 0 0 0 00 0 0 0 0Columns 6 through 100 0 0 0 00 0 0 0 00 0 0 0 00 0 0 0 0-1 0 0 0 04 -1 0 0 0-1 4 -1 0 00 -1 4 -1 00 0 -1 4 -10 0 0 -1 4b =75-1326-1214-45-5>> x0=ones(10,1);>> [x,n]=Jacobi(A,b,x0)x =2.00001.0000-3.00000.00001.0000-2.00003.00000.00001.0000-1.0000n =22得到结果为迭代了22次得到近似解为x =2.0000 1.0000 -3.0000 0.0000 1.0000 -2.0000 3.0000 0.0000 1.0000 -1.0000 用高斯赛德尔源程序function [x,n]=gauseidel(A,b,x0,eps,M)if nargin==3eps=1.0e-6;M=200;elseif nargin==4M=200;elseif nargin<3errorreturn;endD=diag(diag(A));L=-tril(A,-1);U=-triu(A,1);G=(D-L)\U;f=(D-L)\b;x=G*x0+f;n=1;while norm(x-x0)>=epsx0=x;x=G*x0+f;n=n+1;if(n>=M)disp('Warning:不收敛!');return;endend解上面3个方程组的程序分别为第一个方程A=[4 2 -3 -1 2 1 0 0 0 0;8 6 -5 -3 6 5 0 1 0 0;4 2 -2 -1 3 2 -1 0 3 1;0 -2 1 5 -1 3 -1 1 9 4;-4 2 6 -1 6 7 -3 3 2 3;8 6 -8 5 7 17 2 6 -3 5;0 2 -1 3 -4 2 5 3 0 1;16 10 -11 -9 17 34 2 -1 2 2;4 6 2 -7 13 9 2 0 12 4;0 0 -1 8 -3 -24 -8 6 3 -1;],b=[5 12 3 2 3 46 13 38 19 -21]'A =4 2 -3 -1 2 1 0 0 0 08 6 -5 -3 6 5 0 1 0 04 2 -2 -1 3 2 -1 0 3 10 -2 1 5 -1 3 -1 1 9 4-4 2 6 -1 6 7 -3 3 2 38 6 -8 5 7 17 2 6 -3 50 2 -1 3 -4 2 5 3 0 116 10 -11 -9 17 34 2 -1 2 24 6 2 -7 13 9 2 0 12 40 0 -1 8 -3 -24 -8 6 3 -1b =51232346133819-21x0=zeros(10,1);>> [x,n]=gauseidel(A,b,x0)Warning:不收敛!x =1.0e+247 *0.0165-0.02710.2202-0.4576-0.59510.3138-0.43812.24500.04137.4716n =200即迭代200次后此方程可能不收敛方程2的程序为A=[4 2 -4 0 4 2 0 0;2 2 -1 2 1 3 2 0;-4 -1 14 1 -8 -3 5 6;0 -2 1 6 -1 -4 -3 3;2 1 -8 -1 22 4 -10 -3;4 3 -3 -4 4 11 1 -4;0 2 5 -3 -10 1 14 2;0 0 6 3 -3 -4 2 19;],b=[0 -6 20 23 9 -22 -15 45]'A =4 2 -4 0 4 2 0 02 2 -1 2 13 2 0-4 -1 14 1 -8 -3 5 60 -2 1 6 -1 -4 -3 32 1 -8 -1 22 4 -10 -34 3 -3 -4 4 11 1 -40 2 5 -3 -10 1 14 20 0 6 3 -3 -4 2 19b =-620239-22-1545>> x0=zeros(8,1);>> [x,n]=gauseidel(A,b,x0)x =3.5441-4.88771.94820.45251.4283-1.1606-0.10811.6743n =44即在迭代44次后可求的方程的近似解第3个的程序为>> A=[4 -1 0 0 0 0 0 0 0 0;-1 4 -1 0 0 0 0 0 0 0;0 -1 4 -1 0 0 0 0 0 0;0 0 -1 4 -1 0 0 0 0 0;0 0 0 -1 4 -1 0 0 0 0;0 0 0 0 -1 4 -1 0 0 0;0 0 0 0 0 -1 4 -1 0 0;0 0 0 0 0 0 -1 4 -1 0;0 0 0 0 0 0 0 -1 4 -1;0 0 0 0 0 0 0 0 -1 4;],b=[7 5 -13 2 6 -12 14 -4 5 -5]'A =4 -1 0 0 0 0 0 0 0 0-1 4 -1 0 0 0 0 0 0 00 -1 4 -1 0 0 0 0 0 00 0 -1 4 -1 0 0 0 0 0 0 0 0 -1 4 -1 0 0 0 0 0 0 0 0 -1 4 -1 0 0 0 0 0 0 0 0 -1 4 -1 0 0 0 0 0 0 0 0 -1 4 -1 0 0 0 0 0 0 0 0 -1 4 -1 0 0 0 0 0 0 0 0 -1 4b =75-1326-1214-45-5>> x0=zeros(10,1);>> [x,n]=gauseidel(A,b,x0)x =2.00001.0000-3.0000-0.00001.0000-2.00003.0000-0.00001.0000-1.0000n =12 在迭代12次后得到方程的近似解用超松弛迭代的源程序为function [x,n]=SOR(A,b,x0,w,eps,M)if nargin==4eps=1.0e-6;M=200;elseif nargin<4errorreturnelseif nargin==5M=200;endif(w<=0||w>=2)error;return;endD=diag(diag(A));L=-tril(A,-1);U=-triu(A,1);B=inv(D-L*w)*((1-w)*D+w*U);f=w*inv((D-L*w))*b;x=B*x0+f;n=1;while norm(x-x0)>=epsx0=x;x=B*x0+f;n=n+1;if(n>=M)disp('Warning:不收敛!');return;endend解第一个方程组选取抄松弛因子为1程序为:A=[4 2 -3 -1 2 1 0 0 0 0;8 6 -5 -3 6 5 0 1 0 0;4 2 -2 -1 3 2 -1 0 3 1;0 -2 1 5 -1 3 -1 1 9 4;-4 2 6 -1 6 7 -3 3 2 3;8 6 -8 5 7 17 2 6 -3 5;0 2 -1 3 -4 2 5 3 0 1;16 10 -11 -9 17 34 2 -1 2 2;4 6 2 -7 13 9 2 0 12 4;0 0 -1 8 -3 -24 -8 6 3 -1;],b=[5 12 3 2 3 46 13 38 19 -21]'A =4 2 -3 -1 2 1 0 0 0 08 6 -5 -3 6 5 0 1 0 04 2 -2 -1 3 2 -1 0 3 10 -2 1 5 -1 3 -1 1 9 4-4 2 6 -1 6 7 -3 3 2 38 6 -8 5 7 17 2 6 -3 50 2 -1 3 -4 2 5 3 0 116 10 -11 -9 17 34 2 -1 2 24 6 2 -7 13 9 2 0 12 40 0 -1 8 -3 -24 -8 6 3 -1b =51232346133819-21x0=[0 0 0 0 0 0 0 0 0 0]';[x,n]=SOR(A,b,x0,1)Warning:不收敛!x =1.0e+247 *0.0165-0.02710.2202-0.4576-0.59510.3138-0.43812.24500.04137.4716n =200迭代次数太多可能不收敛解第2个的程序为A=[4 2 -4 0 4 2 0 0;2 2 -1 2 1 3 2 0;-4 -1 14 1 -8 -3 5 6;0 -2 1 6 -1 -4 -3 3;2 1 -8 -1 22 4 -10 -3;4 3 -3 -4 4 11 1 -4;0 2 5 -3 -10 1 14 2;0 0 6 3 -3 -4 2 19;],b=[0 -6 20 23 9 -22 -15 45]'A =4 2 -4 0 4 2 0 02 2 -1 2 13 2 0-4 -1 14 1 -8 -3 5 60 -2 1 6 -1 -4 -3 32 1 -8 -1 22 4 -10 -34 3 -3 -4 4 11 1 -40 2 5 -3 -10 1 14 20 0 6 3 -3 -4 2 19b =-620239-22-1545>> x0=[0 0 0 0 0 0 0 0]';[x,n]=SOR(A,b,x0,0.8)x =3.5441-4.88771.94820.45251.4283-1.1606-0.10811.6743n =52得到结果为迭代了52次得到近似解松弛因子为0.8 [x,n]=SOR(A,b,x0,0.9)x =3.5441-4.88771.94820.45251.4283-1.1606-0.10811.6743n =47得到结果为迭代了47次得到近似解松弛因子为0.9> [x,n]=SOR(A,b,x0,1)x =3.5441-4.88771.94820.45251.4283-1.1606-0.10811.6743n =44得到结果为迭代了44次得到近似解松弛因子为1.0解第3个的程序为>> A=[4 -1 0 0 0 0 0 0 0 0;-1 4 -1 0 0 0 0 0 0 0;0 -1 4 -1 0 0 0 0 0 0;0 0 -1 4 -1 0 0 0 0 0;0 0 0 -1 4 -1 0 0 0 0;0 0 0 0 -1 4 -1 0 0 0;0 0 0 0 0 -1 4 -1 0 0;0 0 0 0 0 0 -1 4 -1 0;0 0 0 0 0 0 0 -1 4 -1;0 0 0 0 0 0 0 0 -1 4;],b=[7 5 -13 2 6 -12 14 -4 5 -5]'A =4 -1 0 0 0 0 0 0 0 0-1 4 -1 0 0 0 0 0 0 00 -1 4 -1 0 0 0 0 0 00 0 -1 4 -1 0 0 0 0 00 0 0 -1 4 -1 0 0 0 00 0 0 0 -1 4 -1 0 0 00 0 0 0 0 -1 4 -1 0 00 0 0 0 0 0 -1 4 -1 0 0 0 0 0 0 0 0 -1 4 -1 0 0 0 0 0 0 0 0 -1 4b =75-1326-1214-45-5>> x0=[0 0 0 0 0 0 0 0 0 0]';>> [x,n]=SOR(A,b,x0,0.8)x =2.00001.0000-3.0000-0.00001.0000-2.00003.0000-0.00001.0000-1.0000n =19即迭代了19次得到方程的近似解松弛因子为0.8>> [x,n]=SOR(A,b,x0,0.9)x =2.00001.0000-3.0000-0.00001.0000-2.00003.0000-0.00001.0000-1.0000n =16即迭代了16次得到方程的近似解松弛因子为0.9 [x,n]=SOR(A,b,x0,1)x =2.00001.0000-3.0000-0.00001.0000-2.00003.0000-0.00001.0000-1.0000n =12即迭代了12次得到方程的近似解松弛因子为1。

相关文档
最新文档