代数方程组数值解法

合集下载

线性代数方程组的数值解法讨论

线性代数方程组的数值解法讨论

线性代数方程组的数值解法讨论解线性方程组的方法,主要分为直接方法和迭代方法两种。

直接法是在没有舍入误差的假设下能在预定的运算次数内求得精确解。

而实际上,原始数据的误差和运算的舍入误差是不可以避免的,实际上获得的也是近似解。

迭代法是构造一定的递推格式,产生逼近精确解的序列。

对于高阶方程组,如一些偏微分方程数值求解中出现的方程组,采用直接法计算代价比较高,迭代法则简单又实用,因此比较受工程人员青睐。

小组成员本着工程应用,讨论将学习的理论知识转变为matlab 代码。

讨论的成果也以各种代码的形式在下面展现。

1 Jacobi 迭代法使用Jacobi 迭代法,首先必须给定初始值,其计算过程可以用以下步骤描述: 步骤1 输入系数矩阵A ,常熟向量b ,初值(0)x ,误差限ε,正整数N ,令1k =.步骤2 (0)11ni i ij jj ii j i x b a x a =≠⎡⎤⎢⎥=-⎢⎥⎢⎥⎣⎦∑,(0)j x 代表(0)x 的第j 个分量。

步骤3 计算11ni i ij j j ii j i y b a x a =≠⎡⎤⎢⎥=-⎢⎥⎢⎥⎣⎦∑,判断1max i i i n x y ε≤≤-<,如果是,则结束迭代,转入步骤5;否则,转入步骤4。

步骤4 判断k N =?如果是,则输出失败标志;否则,置1k k =+,i i x y ⇐,1,2,,i n =,转入步骤2。

步骤5 输出12,,n y y y 。

雅可比迭代代码function [x,k]=Fjacobi(A,b,x0,tol)% jacobi 迭代法 计算线性方程组% tol 为输入误差容限,x0为迭代初值max1= 300; %默认最多迭代300,超过要300次给出警告 D=diag(diag(A)); L=-tril(A,-1);U=-triu(A,1); B=D\(L+U); f=D\b; x=B*x0+f;k=1; %迭代次数while norm(x-x0)>=tol x0=x;x=B*x0+f; k=k+1;if(k>=max1)disp('迭代超过300次,方程组可能不收敛'); return; end%[k x'] %显示每一步迭代的结果 End2 高斯赛德尔迭代由Jacobi 迭代法中,每一次的迭代只用到前一次的迭代值,若每一次迭代充分利用当前最新的迭代值,即在计算第i 个分量(1)k i x +时,用最新分量11()k x +,12()k x +…(1)1k i x +-代替旧分量)1(k x ', )2(k x …)3(k x 就得到高斯赛德尔迭代格式,其数学表达式为:1(1)(1)()111(1,2,,)i n k k k ii ij j ij j j j i ii xb a x a x i n a -++==+⎛⎫=--= ⎪⎝⎭∑∑具体形式如下:()()()(1)()()()11221331111(1)(1)()()22112332222(1)(1)(1)(1)(1)112233,11111k k k k n n k k k k n n k k k k k n n n n n n n n nnx a x a x a x b a x a x a x a x b a x a x a x a x a x b a ++++++++--=----+=----+⋯⋯⋯⋯⋯⋯=-----+矩阵形式表示为:()(1)1(1)()(0,1,2,,),k k k k n +-+=++=x D Lx Ux b将(1)(1)()(0,1,2,,)k k k k n ++=++=Dx Lx Ux b 移项整理得: (1)1()1()()(0,1,2,,))k k x D L Ux D L b k n +--=-+-=记11(),()--=-=-M D L U g D L b ,则(1)()k k x x +=+M g高斯塞德尔迭代function [x,k]=Fgseid(A,b,x0,tol)%高斯-塞德尔迭代法 计算线性方程组 % tol 为误差容限max1= 300; %默认最高迭代300次D=diag(diag(A)); L=-tril(A,-1); U=-triu(A,1); G=(D-L)\U; f=(D-L)\b; x=G*x0+f;k=1; while norm(x-x0)>=tol x0=x;x=G*x0+f; k=k+1;if(k>=max1)disp('迭代次数太多,可能不收敛'); return; end% [k,x'] %显示每一步迭代结果 End3 超松弛迭代法在工程中最常遇到的问题便是线性代数方程组的求解,而线性代数方程组的求解一般可以分为两类,一类是直接法(精确法),包括克莱姆法则方法、LD 分解法等,另一类是迭代法(近似法),包括雅克比迭代法、高斯迭代法、超松弛迭代法等。

Hilbert代数方程组的数值解法

Hilbert代数方程组的数值解法

Hilbert 代数方程组的数值解法1 Hilbert 矩阵的条件数和矩阵的阶数的关系编制Matlab 程序:clear,clc format long %format short for n=1:14; A=hilb(n); %A=rand(n);condA(n)=cond(A,inf); endplot(log10(condA)) 得出图形图1:Hilbert 矩阵和阶次的关系由图可见a.Hilbert 矩阵的2-条件数的对数与阶次近似正比;b.阶次超过12后,计算困难,舍入误差会导致计算不准 结论:Hilbert 矩阵的2-条件数随阶次指数增长,关系大概是: Log 10(Cond(A))= 1.33791720780254(n-1)0246810121424681012141618nl o g 10(c o n d A )条件数的对数-阶次2.各种求解方法的对比2.1 直接法:Gauss 消去方法(程序见附录,下同)在双精度型变量下,即eps=2.220446049250313e-016,对于直接法Gauss 消去方法,求解Hilbert 矩阵方程组,在阶次n=13时,解得: X=[1 0.99997 1.0013 0.97881 1.1906 -0.035441 4.6171 -7.3967 14.089 -12.542 9.9162 -2.3817 1.5624]出现明显错误,可见Gauss 消去方法对病态问题比较敏感。

求解阶次不高。

2.2 Jacobi 迭代法很遗憾,jakobi 迭代法的迭代矩阵的谱半径随阶次线性上升(程序见附录2),普遍大于1,计算结果发送,无法迭代出满意的结果。

需放弃图2:Jacobi 迭代矩阵的谱半径2.3 Gauss-Seidel 迭代与SOR 迭代求解先分析SOR 迭代矩阵的谱半径和松弛因子w 的关系0510152025510152025阶次谱半径Jacobi 迭代收敛性分析图3:SOR 迭代矩阵的谱半径和松弛因子w 的关系可以发现SOR 迭代和G-S 迭代的谱半径都普遍接近于1,因此松弛因子的选择对计算结果的影响不大。

数值计算08-线性方程组数值解法(优选.)

数值计算08-线性方程组数值解法(优选.)

0
(k=1,2,…,n) ,则可通过高斯消元法求出Ax=b 的解。
引理
A的主元素
a(k) kk
0
(k=1,2,…,n) 的充要条件
是矩阵A的各阶顺序主子式不为零,即
a11
a1k
D1 a11 0 Dk
0, k 2, 3, , n
ak1
akk
定理2 Ax=b 可用高 斯消元法求解的充分必要条件是: 系数矩阵 A 的各阶顺序主子式均不为零。
Page 5
线性代数方程组的计算机解法常用方法:
直接法 迭代法
消去法 矩阵三角分解法
Page 6
直接法:经过有限步算术运算,可求得方程组
的精确解的方法(若在计算过程中没有舍入误差)
迭代法:用某种极限过程去逐步逼近线性方程
组精确解的方法 迭代法具有占存储单元少,程序设计简单,原
始系数矩阵在迭代过程中不变等优点,但存在收 敛性及收敛速度等问题
a(k) ik
a(k) kk
aijk
mik
a
k
kj
bik1 bik mikbkk
xn
bnn annn
bii
n
a
i
ij
x
j
,
xi
ji1
aiii
i, j k 1, k 2,, n
i n 1,,2,1
高斯消元法的条件
Page 20
定理1
如果在消元过程中A的主元素
a(k) kk
即:
a111
a112 a222
a11n a22n
x1 x2
bb1212
an22
an2n
xn
bn2
其中:

【清华】7.0_实验5-线性代数方程组的数值解法

【清华】7.0_实验5-线性代数方程组的数值解法

0
0.5000
0.7500
0.9926
0.99979 0.99999 0.99999
0
0.5000
0.7500
0.9930
0.99981 0.99999 0.99999
0
0.5000
0.7500
0.9935
0.99983 0.99999
1
0
0.5000
0.7569
0.9943
0.99985 0.99999
B1=D\(L+U);
f1=D\b; x(:,1)=x0; x(:,2)=B1*x(:,1)+f1; k=1; while norm((x(:,k+1)-x(:,k)),inf)>m
x(:,k+2)=B1*x(:,k+1)+f1; k=k+1; end
%赋初值 %以差值向量的行范数作为误差判断标准
0.22222
0 0.083333 0.095238
0.21996
0 0.083333 0.095016
0 0.33333
0.6521
0 0.16667
0.22152
0 0.083333 0.095181
0 0.33333
0.66094
0 0.16667
0.22207
0 0.083333 0.095231
0 0.33333
0.6643
0 0.16667
0
0.7083
0.9069
0.9967
0.99999
1
1
0
0.6806
0.8960
0.9962
0.99998 0.99999

数值计算方法第3章解线性方程组的数值解法1

数值计算方法第3章解线性方程组的数值解法1

,i

2 ,3 ,...,
n

a
(1 11
)
A( 1) A ( 2 )
a (1) 11
a (2) 22
...... ......

......

a (2) n2
......
a a
(1) 1n
(2) 2n


a
(2 nn
)

b (1)

b (2)

[
b
( 1
1
)
b (2) 2
a(k) kk
...
a(k) kn
... ... ...
...
...
a(n) nn
b1(1) b2(2)

...
bk(k)
...

bn(n)
21
高斯顺序消去法
也就是对于方程组AX=b系数矩阵做:
ai(jkl1i)k

a(k) ik

a(k) ij
/
a(k) kk
3)顺序消元
31
高斯列主元消去法
第k步
从A ( k ) 的第
k

a (k) kk
,a (k) k 1k
,...a
(k) nk
中选取绝对值
最大项,记录所在行,即
|a(k) ikk
|m kina|axi(kk)
|
记 lik
若 l k 交换第k行与l行的所有对应元素,再 进行顺序消元。
32
其中, lii 0, i 1,2,..., n
(1)
10
高斯顺序消元法

线性代数方程组的数值解法_百度文库

线性代数方程组的数值解法_百度文库

线性代数方程组的数值解法【实验目的】1. 学会用MATLAB 软件数值求解线性代数方程组,对迭代法的收敛性和解的稳定性作初步分析;2. 通过实例学习用线性代数方程组解决简化的实际问题。

【实验内容】【题目1】通过求解线性方程组A1x=b1和A2x=b2,理解条件数的意义和方程组的性态对解的影响。

其中A1是n阶范德蒙矩阵,即⎡1x0⎢1x1⎢A1=⎢⎢⎢⎣1xn-12x0x12 2xn-1n-1⎤ x0⎥ x1n-1⎥1,...,n-1 ,xk=1+0.1k,k=0,⎥ n-1⎥ xn-1⎥⎦A2是n阶希尔伯特矩阵,b1,b2分别是A1,A2的行和。

(1)编程构造A1(A2可直接用命令产生)和b1,b2;你能预先知道方程组A1x=和A2x=。

b2的解吗?令n=5,用左除命令求解(用预先知道的解可检验程序)b1(2)令n=5,7,9,…,计算A1,A2的条件数。

为观察它们是否病态,做以下试验:b1,b2不变,A1和A2的元素A1(n,n),A2(n,n)分别加扰动ε后求解;A1和A2不变,b1,b2的分量b1(n),分析A和b的微小扰动对解的影响。

b2(n)分别加扰动ε求解。

ε取10-1010,-8,10-6。

(3)经扰动得到的解记做x~,计算误差-x~x,与用条件数估计的误差相比较。

1.1构造A1,A2和b1,b2首先令n=5,构造出A1,A2和b1,b2。

首先运行以下程序,输出A1。

运行以下程序对A1,A2求行和:由于b1,b2分别是A1,A2的行和,所以可以预知x1=运行下列程序,用左除命令对b1,b2进行求解:得到以下结果: T。

x2=(1,1, ,1)1.2 计算条件数并观察是否为病态1.不加扰动,计算条件数。

运行以下程序:由此可知,A1,A2的条件数分别是3.574∗10, 4,766∗10。

2.b1,b2不变,A1(n,n),A2(n,n)分别加扰动(1)n=5时设x11,x12,x13分别为A1添加扰动10−10,10−8,10−6后的解。

数值分析实验报告-清华大学--线性代数方程组的数值解法

数值分析实验报告-清华大学--线性代数方程组的数值解法

数值分析实验报告-清华大学--线性代数方程组的数值解法(总15页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--线性代数方程组的数值解法实验1. 主元的选取与算法的稳定性问题提出:Gauss 消去法是我们在线性代数中已经熟悉的。

但由于计算机的数值运算是在一个有限的浮点数集合上进行的,如何才能确保Gauss 消去法作为数值算法的稳定性呢?Gauss 消去法从理论算法到数值算法,其关键是主元的选择。

主元的选择从数学理论上看起来平凡,它却是数值分析中十分典型的问题。

实验内容:考虑线性方程组 n n n R b R A b Ax ∈∈=⨯,,编制一个能自动选取主元,又能手动选取主元的求解线性方程组的Gauss 消去过程。

实验要求:(1)取矩阵⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡=1415157,6816816816 b A ,则方程有解T x )1,,1,1(* =。

取n=10计算矩阵的条件数。

让程序自动选取主元,结果如何?(2)现选择程序中手动选取主元的功能。

每步消去过程总选取按模最小或按模尽可能小的元素作为主元,观察并记录计算结果。

若每步消去过程总选取按模最大的元素作为主元,结果又如何?分析实验的结果。

(3)取矩阵阶数n=20或者更大,重复上述实验过程,观察记录并分析不同的问题及消去过程中选择不同的主元时计算结果的差异,说明主元素的选取在消去过程中的作用。

(4)选取其他你感兴趣的问题或者随机生成矩阵,计算其条件数。

重复上述实验,观察记录并分析实验结果。

程序清单n=input('矩阵A 的阶数:n=');A=6*diag(ones(1,n))+diag(ones(1,n-1),1)+8*diag(ones(1,n-1),-1); b=A*ones(n,1);p=input('计算条件数使用p-范数,p='); cond_A=cond(A,p) [m,n]=size(A);Ab=[A b];r=input('选主元方式(0:自动;1:手动),r=');Abfor i=1:n-1switch rcase(0)[aii,ip]=max(abs(Ab(i:n,i)));ip=ip+i-1;case (1)ip=input(['第',num2str(i),'步消元,请输入第',num2str(i),'列所选元素所处的行数:']);end;Ab([i ip],:)=Ab([ip i],:);aii=Ab(i,i);for k=i+1:nAb(k,i:n+1)=Ab(k,i:n+1)-(Ab(k,i)/aii)*Ab(i,i:n+1);end;if r==1Abendend;x=zeros(n,1);x(n)=Ab(n,n+1)/Ab(n,n);for i=n-1:-1:1x(i)=(Ab(i,n+1)-Ab(i,i+1:n)*x(i+1:n))/Ab(i,i);endx运行结果(1)n=10,矩阵的条件数及自动选主元Cond(A,1) =×103Cond(A,2) = ×103Cond(A,inf) =×103程序自动选择主元(列主元)a.输入数据矩阵A的阶数:n=10计算条件数使用p-范数,p=1选主元方式(0:自动;1:手动),r=0b.计算结果x=[1,1,1,1,1,1,1,1,1,1]T(2)n=10,手动选主元a. 每步消去过程总选取按模最小或按模尽可能小的元素作为主元矩阵A 的阶数:n=10计算条件数使用p-范数,p=1选主元方式(0:自动;1:手动),r=1(1)(1)61786115[]861158614A b ⎡⎤⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎣⎦第1步消元,请输入第1列所选元素所处的行数:1(2)(2) 6.0000 1.00007.00004.6667 1.0000 5.66678.0000 6.000015.0000[]8.00001.000015.00006.0000 1.00008.0000 6.0000 1.000015.00008.0000 6.000014.0000A b ⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦第2步消元,请输入第2列所选元素所处的行数:2…(实际选择时,第k 步选择主元处于第k 行) 最终计算得x=[, , , , , , , , , ]Tb. 每步消去过程总选取按模最大的元素作为主元 矩阵A 的阶数:n=10计算条件数使用p-范数,p=1选主元方式(0:自动;1:手动),r=1(1)(1)61786115[]861158614A b ⎡⎤⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎣⎦第1步消元,请输入第1列所选元素所处的行数:2(2)(2)8.0000 6.0000 1.000015.0000-3.50000.7500-4.250008.0000 6.0000 1.000015.0000[]8.0000 6.000015.00008.0000 1.00006.0000 1.000015.00008.0000 6.000014.0000A b ⎡⎤⎢⎥-⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦第2步消元,请输入第2列所选元素所处的行数:3…(实际选择时,第k 步选择主元处于第k+1行) 最终计算得x=[1,1,1,1,1,1,1,1,1,1]T(3)n=20,手动选主元a. 每步消去过程总选取按模最小或按模尽可能小的元素作为主元 矩阵A 的阶数:n=20计算条件数使用p-范数,p=1选主元方式(0:自动;1:手动),r=1(1)(1)61786115[]861158614A b ⎡⎤⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎣⎦第1步消元,请输入第1列所选元素所处的行数:1(2)(2) 6.0000 1.00007.00004.6667 1.0000 5.66678.0000 6.000015.0000[]8.00001.000015.00006.0000 1.00008.0000 6.0000 1.000015.00008.0000 6.000014.0000A b ⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦第2步消元,请输入第2列所选元素所处的行数:2…(实际选择时,第k 步选择主元处于第k 行) 最终计算得x=[,,,,,,,,,,,,,,,,,,,]T b. 每步消去过程总选取按模最大的元素作为主元 矩阵A 的阶数:n=20计算条件数使用p-范数,p=1选主元方式(0:自动;1:手动),r=1(1)(1)61786115[]861158614A b ⎡⎤⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎣⎦第1步消元,请输入第1列所选元素所处的行数:2(2)(2)8.0000 6.0000 1.000015.0000-3.50000.7500-4.250008.0000 6.0000 1.000015.0000[]8.0000 6.000015.00008.0000 1.00006.0000 1.000015.00008.0000 6.000014.0000A b ⎡⎤⎢⎥-⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦第2步消元,请输入第2列所选元素所处的行数:3…(实际选择时,第k步选择主元处于第k+1行)最终计算得x=[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]T(4)A分别为幻方矩阵,Hilbert矩阵,pascal矩阵和随机矩阵简要分析计算(1)表明:对于同一矩阵,不同范数定义的条件数是不同的;Gauss消去法在消去过程中选择模最大的主元能够得到比较精确的解。

代数方程组的求解方法

代数方程组的求解方法

即使是收敛很慢的 迭代方法也可能比
直接法更有效!
1. 代数方程组求解方法概述
1.2 求解代数方程组的直接解法与迭代法 直接解法 求解三对角阵(一维问题)的直接解法:TDMA, Thomas算法
TDMA 与 Thomas 算法常用于五对角阵(二维)
及七对角阵(三维)迭代求解法中的直接求 解部分---加快收敛速度
பைடு நூலகம்
比于(N+1)! Cramer法则根本无法应用与数值计算。
1. 代数方程组求解方法概述
1.2 求解代数方程组的直接解法与迭代法
直接解法
Gauss消元法:先要把系数矩阵通过消元而化为上三
角阵然后逐一回代
若未知数个数为 N,该法所用乘法的次数近
似正比于N3。
如二维正方形域内的 Laplace 方程,当采用 3200 个节点时,采用 Gauss 消元法所需的计 算次数是完成一轮 Jacob 迭代所需计算次数 的168倍!
第八章 代数方程组的数值解法
王 娴
西安交通大学航天学院
内容
本章内容:对流动传热问题的控制方程进行离散后所 形成的代数方程组的求解方法,这是对物理过程进行 数值模拟的最后一个重要环节。
代数方程组求解方法概述 求解代数方程组的迭代法
迭代法的收敛性及加速收敛的方法
1. 代数方程组求解方法概述
1. 代数方程组求解方法概述
1.2 求解代数方程组的直接解法与迭代法 迭代解法:假设解记作 P = A-1b , 构造多维空间的 一个无限序列 P(n), 当n∞ 时,它收敛于A-1b 。一般
地,第 n 次迭代所得之值取决于A,b及上一次迭代值 P(n-1),即: P(n) = f ( A, b, P(n-1) )

数学中的代数数值方法

数学中的代数数值方法

数学中的代数数值方法代数数值方法是数学中一类重要的计算方法,它主要用于解决代数方程、代数方程组和代数函数的数值计算问题。

代数数值方法融合了代数与数值计算的思想,既能通过代数技巧对问题进行化简,又能利用数值计算的方法获得近似解。

一、代数数值方法的概述代数数值方法主要包括以下几个方面:方程求根、代数方程组的数值解法、插值与逼近以及数值微积分等。

在实际问题的计算中,这些方法常用于求解无法或难以用解析方法求解的方程和函数的数值解,以及近似求解函数的值、函数的导数等。

二、方程求根的代数数值方法方程求根是代数数值方法的一个重要分支,常用的方法有二分法、牛顿法和割线法等。

1. 二分法:二分法是一种简单且有效的求解方程根的方法。

它通过迭代逼近的方式不断缩小方程根所在的区间,直至达到预设的精度要求。

2. 牛顿法:牛顿法基于泰勒级数展开和迭代逼近的思想,通过对原函数进行逼近的线性插值,从而求得函数根的近似解。

3. 割线法:割线法与牛顿法类似,但其使用的迭代形式为割线逼近,更加灵活,并且对初值选取的要求相对较低。

三、代数方程组的数值解法代数方程组的数值解法主要包括直接法和迭代法两种。

1. 直接法:直接法是通过消元和替代等操作,将原方程组转化为等价的简化形式,从而获得方程组的解。

常见的直接法包括高斯消元法、克拉默法则等。

2. 迭代法:迭代法通过设置初始迭代值,利用逐步逼近的思想求解方程组。

常见的迭代法有雅可比迭代法、高斯-赛德尔迭代法等。

四、插值与逼近插值与逼近是代数数值方法中的重要内容,它们可以用于生成一些函数的近似模型,从而方便进一步的数值计算。

1. 插值:插值方法可以通过已知数据点之间的插值多项式来逼近实际函数。

常见的插值方法有拉格朗日插值、牛顿插值等。

2. 逼近:逼近方法则是通过已知的离散数据点,寻求逼近函数与原函数之间的最佳拟合。

最小二乘逼近是一种常用的逼近方法。

五、数值微积分数值微积分是代数数值方法的另一个重要分支,它主要用于计算函数的导数、积分以及微分方程的数值解。

线性代数方程组的数值解法

线性代数方程组的数值解法

a (1) 1n 1
a (2) 2n 1
a
(1) 3n 1
a (1) nn 1
1
0
0
0
a (1) 12 1 0
0
a (1) 13
a (2) 23
a (1) 1n 1
a (2) 2n 1
记为
a (2) 33
a
(2) 3n 1
(A(2) , b(2))
a (2) n3
a
(2) nn 1
(1) 22
,

后用第i行元数(i
3,
,
n)减去第二行对应元素的a
(1) i2
倍,(i 2,, n),这样,a(212)位置变为1,从第三行后的各
行第二个元素为0。
1 0 0 0
a (1) 12 1
a (1) 32
a (1) n2
a (1) 13
a (2) 23
a (1) 33
a (1) n3
2
(A
|
b)
4
1 2
3 5
1 1
4
0
1 2 4
3
2 1
1
2 2
2 0 1 6
0 1 1 5
1 0
1 3 22
1 1
1
2 1
4 2
0 0 1 6
这样就将系数阵化为单位三角阵,这个过程称为“消元 过程”。二是解三角形方程组,称为“回代过程”,整个过程 称为“有回代过程的顺序消元法”。
,
x
x2 xn
,
b
bபைடு நூலகம் bn
求解向量 x。
数值解法主要有两大类: 第一类是直接法。即按求精确解的方法运算求解。 第二类是迭代法。其思想是首先把线性方程组(3-1)等价 变换为如下形式的方程组:

《应用数值分析》课件数值分析5.3线性方程组的数值解法

《应用数值分析》课件数值分析5.3线性方程组的数值解法
Gaussian Elimination:
Step k:设ak(kk) ,0计算因子
mik
a(k) ik
/
a(k kk
)
(i k 1, ..., n)
且计算
a ( k 1) ij
b( k 1) i
a(k) ij
m
ik
a
(k kj
)
b(k ) i
mik bk(k )
(i, j k 1, ..., n)
n
bi (bi
aij * b j ) / aii
j i 1
2024/11/23
线性方程组的直接解法
11
计算量 /* Amount of Computation */
由于计算机中乘除 /* multiplications / divisions */ 运算的时 间远远超过加减 /* additions / subtractions */ 运算的时间,故 估计某种算法的运算量时,往往只估计乘除的次数,而且通 常以乘除次数的最高次幂为运算量的数量级。 (n k) 次
(k)
kk
k ,k1
0
a ( k 1) k 1,k 1
a(1) 1n
a(2) 2n
a(k) kn
a ( k 1) k 1,n
0
a ( k 1) n,k 1
a ( k 1) nn
第 6 章 不动点理论及应用 第 1 页 共 1 页
b(1) 1
b(2) 2
b( k ) k
b( k 1) k 1
b( k 1) n
xn
b(n) n
/
a(n) nn
n
b( i ) i
a
(i ij

大学数学实验五_线性代数方程组的数值解法

大学数学实验五_线性代数方程组的数值解法

【实验目的】 1、学会用 MATLAB 软件数值求解线性代数方程组,对迭代法的收敛性和解
的稳定性作初步分析。 2、通过实例学习用线性代数方程组解决简化的实际问题。
【实验内容】
3 已知方程组 Ax=b,其中
,定义为
试通过迭代法求解此方程组,认识迭代法收敛的含义以及迭代初值和方程组系数矩阵性质对 收敛速度的影响。实验要求: (1) 选取不同的初始向量 x(0)和不同的方程组的右端项向量 b,给定迭代误差要求,用雅
k=k+1; xj=Bj*xj+fj; 多输出了矩阵 P,矩阵 P 可视为一个行向量,其每个元素均为迭代 k 次后得到的 xk。这样以 k 为横轴,解向量为纵轴,可输出图形观察 xk 是否收敛。函数 GaussSeidel 也需作同样修改,修改后的函数在此不再赘述。
模型: 已知某年该植物的数量为 x0,记第 k 年的植物数量为 xk,那么有 xk + pxk-1 + qxk-2 = 0 (k = 2, 3, …… , n)
其中 p = -a1bc,q = -a2b(1-a1)bc。若要求 n 年后数量达到 xn,则 Ax = b
其中


7
① 用稀疏系数矩阵求解。
这个函数中,n 表示矩阵 A 的阶数,在本题中恒取 20,a 表示主对角线元素的值,b 在 本题中恒取-1/4,c 在本题中恒取-1/2。
编写用雅可比迭代法求方程解的函数 Jacobi。
function [xj,k]=Jacobi(A,X0,b,e) D=diag(diag(A)); n=length(A); L=-(tril(A)-D); U=-(triu(A)-D); fj=D\b; Bj=D\(L+U); xj=X0; k=0; while norm(A*xj-b)/norm(b)>e

计算方法线性方程组数值解法

计算方法线性方程组数值解法

d
2
a3b3c3
x3
d3
an
1bn1cn
1
xn
1
d
n
1
anbn xn dn
其系数矩阵为三对角形,元素满足以下条件:
|b1|>|c1|>0
|bi|≥|ai|+|ci|,且aici≠0 i=2,3,……n-1; |bn|≥|an|>0。
可以采用追赶法求解
4
线性代数方面的计算方法就是研究求解线 性方程组的一些数值解法与研究计算矩阵 的特征值及特征向量的数值方法。
5
设有线性方程组
a11x1 a12x2 a1nxn b1 a21x1a22x2a2nxnb2 an1x1 an2x2 annxn bn
式中,aij,bi为已知常数,xi为待求的未知量。记
u
2
2
u 2 n
u n 1,n 1u n 1,n
u n n
10
若uii≠0(i=1,2,……n),则由下至上依次回代得
xn yn / unn
xn1 ( yn1 xi yi
un1,n xn ) / un1,n1
n
uij x j ) / uii
0
a
( 2
2 2
)
a
( 2
2) ,k 1
a
( 2
2) ,k
a
( 2
2) ,n
a
( 2
2) ,n 1
0 A(k)
0 0
a
( k
k) ,k
a
( k
k) ,k 1
a
k
k ,n
a
( k
k) 1,n
1

第三章线性代数方程组解法

第三章线性代数方程组解法
(k (k akk ) akn ) (k (k ank ) ann)
中,选取绝对值最大的元素作为主元素,如果它位于第r 行第s列,则通过交换k,r两行及交换k,s两列,使主元素位 (k a kk ) 的位置,然后进行消元计算。由于作列的交换 于 改变了方程中未知量的次序,因此回代过程要按未知量 调换后的编号顺序求解。
- x1 - 0.5x2 + 2x3 = 5 5x1 - 4x2 + 0.5x3 = 9
解 [A,b] =
0.01
2
- 0.5 2 0.5 9
-5 5 9 5 (3) 0 (1) (3)
5
-4
0.5 2
9 5
- 1 - 0.5 5 -4 0.5 2.10
-1 - 0.5 0.01 -4 2
- 0.5 – 5 0.5 9
(i, j=k+1, …, n)
回代过程:
( (n xn bnn ) / ann) ; n
xi (bi(i )
j i 1
a
(i ) ij
( x j ) / aiii )
(i =n-1,…,2,1)
四、顺序高斯消去法计算量分析
用计算机作四则运算时,加减操作所花的机器时间比乘除操 作少得多, 所以我们仅统计乘除次数。 1. 消元过程(共需n-1次消元) 第k次消元时需除:n-k 第k次消元时需乘:(n-k)(n-k+1) 共需乘除次数: [(n-1)+(n-1)n]+[(n-2)+(n-2)(n-1)]+…+[1+1×2] = n3/3+n2 /2-5n/6 2. 回代过程 需除:n 需乘:1+2+…+(n-1)= (n-1)n/2 共需乘除次数:n+ (n-1)n/2= n2/2+n/2 所以总共需乘除次数: n3/3+n2 /2-5n/6+n2/2+n/2 = n3/3+n2 -n/3 。 n3/3+n2 -n/3<<(n+1) n! (n-1)+n(克莱姆法则需的乘除次数),因此 顺序高斯消去法从计算量上考虑是可行的。

线性代数方程组数值解法及MATLAB实现综述

线性代数方程组数值解法及MATLAB实现综述

线性代数方程组数值解法及MATLAB 实现综述廖淑芳 20122090 数计学院 12计算机科学与技术1班(职教本科) 一、分析课题随着科学技术的发展,提出了大量复杂的数值计算问题,在建立电子计算机成为数值计算的主要工具以后,它以数字计算机求解数学问题的理论和方法为研究对象。

其数值计算中线性代数方程的求解问题就广泛应用于各种工程技术方面。

因此在各种数据处理中,线性代数方程组的求解是最常见的问题之一。

关于线性代数方程组的数值解法一般分为两大类:直接法和迭代法。

直接法就是经过有限步算术运算,可求的线性方程组精确解的方法(若计算过程没有舍入误差),但实际犹如舍入误差的存在和影响,这种方法也只能求得近似解,这类方法是解低阶稠密矩阵方程组级某些大型稀疏矩阵方程组的有效方法。

直接法包括高斯消元法,矩阵三角分解法、追赶法、平方根法。

迭代法就是利用某种极限过程去逐步逼近线性方程组精确解的方法。

迭代法具有需要计算机的存储单元少,程序设计简单,原始系数矩阵在计算过程始终不变等优点,但存在收敛性级收敛速度问题。

迭代法是解大型稀疏矩阵方程组(尤其是微分方程离散后得到的大型方程组)的重要方法。

迭代法包括Jacobi 法SOR 法、SSOR 法等多种方法。

二、研究课题-线性代数方程组数值解法 一、 直接法 1、 Gauss 消元法通过一系列的加减消元运算,也就是代数中的加减消去法,以使A 对角线以下的元素化为零,将方程组化为上三角矩阵;然后,再逐一回代求解出x 向量。

1.1消元过程1. 高斯消元法(加减消元):首先将A 化为上三角阵,再回代求解。

11121121222212n n n n nn n a a a b a a a b a a a b ⎛⎫ ⎪ ⎪ ⎪ ⎪⎝⎭L L M M O M M L (1)(1)(1)(1)(1)11121311(2)(2)(2)(2)222322(3)(3)(3)3333()()000000nn n n n nn n a a a a b a a a b a a b a b ⎛⎫ ⎪ ⎪ ⎪ ⎪⎪ ⎪⎝⎭L L L M M M OM M L 步骤如下:第一步:1111,2,,i a i i n a -⨯+=L 第行第行 11121121222212n nn n nn n a a a b a a a b a a a b ⎛⎫⎪ ⎪ ⎪⎪⎝⎭L L M M O M M L111211(2)(2)(2)2222(2)(2)(2)200n nn nn n a a a b a a b a a b ⎛⎫⎪⎪ ⎪ ⎪⎝⎭LL M M O M M L第二步:(2)2(2)222,3,,i a i i n a -⨯+=L 第行第行111211(2)(2)(2)2222(2)(2)(2)200nnn nn n a a a b a a b a a b ⎛⎫ ⎪⎪ ⎪ ⎪⎝⎭L L M M O M M L11121311(2)(2)(2)(2)222322(3)(3)(3)3333(3)(3)(3)300000n n nn nn n a a a a b a a a b a a b a a b ⎛⎫⎪ ⎪ ⎪⎪⎪ ⎪⎝⎭LL LM M M O M M L 类似的做下去,我们有:第k 步:()()k ,1,,k ikk kka i i k n a -⨯+=+L 第行第行。

数学实验——线性代数方程组的数值解

数学实验——线性代数方程组的数值解

实验5 线性代数方程组的数值解法分1 黄浩 43一、实验目的1.学会用MATLAB软件数值求解线性代数方程组,对迭代法的收敛性和解的稳定性作初步分析;2.通过实例学习用线性代数方程组解决简化的实际问题。

二、For personal use only in study and research; not forcommercial use三、四、实验内容1.《数学实验》第二版(问题1)问题叙述:通过求解线性方程组,理解条件数的意义和方程组性态对解的影响,其中是n阶范德蒙矩阵,即是n阶希尔伯特矩阵,b1,b2分别是的行和。

(1)编程构造(可直接用命令产生)和b1,b2;你能预先知道方程组和的解吗?令n=5,用左除命令求解(用预先知道的解可验证程序)。

(2)令n=5,7,9,…,计算和的条件数。

为观察他们是否病态,做以下试验:b1,b2不变,和的元素,分别加扰动后求解;和不变,b1,b2的分量b1(n),b2(n)分别加扰动后求解。

分析A与b的微小扰动对解的影响。

取10^-10,10^-8,10^-6。

(3)经扰动得到的解记做,计算误差,与用条件数估计的误差相比较。

模型转换及实验过程:(1)小题.由b1,b2为,的行和,可知方程组和的精确解均为n 行全1的列向量。

在n=5的情况下,用matlab编程(程序见四.1),构造,和b1,b2,使用高斯消去法得到的解x1,x2及其相对误差e1,e2(使用excel计算而得)为:由上表可见,当n=5时,所得的解都接近真值,误差在10^-12的量级左右。

(2)小题分别取n=5,7,9,11,13,15,计算和的条件数c1和c2,(程序见四.2),结果如下:由上表可见,二者的条件数都比较大,可能是病态的。

为证实和是否为病态,先保持b不变,对做扰动,得到该情况下的高斯消元解,(程序见四.3),结果如下:(为使结果清晰简洁,在此仅列出n=5,9,13的情况,n=7,11,15略去)=10^-10时:=10^-8时:=10^-6时:由上表可见:a)对于希尔伯特阵,随着阶数的增加,微小扰动对解带来的影响越来越大,到了n=9时,已经有了6倍误差的解,到了n=13时,甚至出现了22倍误差的解元素;而随着的增加,解的偏差似乎也有增加的趋势,但仅凭上述表格无法具体判断(在下一小题中具体叙述)。

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

• 上三角形方程组,将 方程组加工成三角形的 过程称为消元过程
(1) (1) (1) (1) 继续计算可得xn-2, x1 a12 x2 a13 x3 a1 x b n n 1 xn-3 ,…x1的值 (2) (2) (2) x2 a23 x3 a2 n xn b2 xn1 bn1 an1, n xn ( n 1) ( n 1) 计算可得xn-1的值 xn 1 an 1,n xn bn 1 (n) x b 直接得到xn的值 n n
• 将第 l 个方程与第k个方程互换位置,也就是将 第 l 行与第k行的全部元素互换,使alk 成为新的主 元素akk,然后再进行消元。
例7-1 分别用Gauss消去和列主元Gauss消去求解 方程组 2 x x 3 x 1
4 x1 2 x 2 5 x 3 4 x 2x 7 2 1
(1) (1) (1) x1 a12 x2 a13 x3 a1(1) x b n n 1 (2) (2) (2) x2 a23 x3 a2 x b n n 2 ( n 1) ( n 1) x a x b n 1 n 1, n n n 1 (n) x b n n
பைடு நூலகம்
• w(1)=e(1)/f(1);g(1)=b(1)/d(1); %消元 过程(追的过程) • for i=2:length(b)-1 • w(i)=e(i)/(d(i)-f(i-1)*w(i-1)); • end • for i=2:length(b) • g(i)=(b(i)-f(i-1)*g(i-1))/(d(i)-f(i1)*w(i-1)); • end
• • • • • • • • • •
for i=1:length(b) c(i,:)=c(i,:)/c(i,i); end end a=c(1:length(b),1:length(b)); b=c(:,length(b)+1); n=length(b); x(n)=0; while n>=1; %回代过程 x(n)=b(n)/a(n,n)-a(n,:)*x'./a(n,n); %x为未知变量 • n=n-1; • end
5 x1 x2 x3 x4 4 x1 10x2 x3 x4 12 x1 x2 5 x3 x4 8 x1 x2 x3 10x4 34
7.2 迭代法解线性方程组 7.2.1 雅可比迭代法
例:用雅可比迭代解方程组
10 x1 x 2 2 x 3 7.2 x1 10 x 2 2 x 3 8.3 x x 5 x 4 .2 2 3 1
• • • • • • • • • •
for i=1:length(b) c(i,:)=c(i,:)/c(i,i); end end a=c(1:length(b),1:length(b)); b=c(:,length(b)+1); n=length(b); x(n)=0; while n>=1; %回代过程 x(n)=b(n)/a(n,n)-a(n,:)*x'./a(n,n); % x 为未知变量 • n=n-1; • end • x
•高斯(Gauss)消去法 第2行各项除以a22后得 x1 a12 x 2 a1n x n b1 a 22 x 2 a 2 n x n b2 x2 a 23 x3 a2 n xn b2 将 以 上 方 程 分 别 乘 ( a x a x b n2 2 nn n n ai2)后加到第i行 (i=3,…,n),得
7.1 直接法解线性方程组 7.1.1 高斯(Gauss)消去法 • 方法及步骤
第1行各项除以a11后得
a11 x1 a12 x2 a1n xn b1 a x a x a x b 21 1 22 2 2n n 2 an1 x1 an 2 x2 ann xn bn
a11 x1 a12 x2 a1n xn b1 a x a x a x b • 设第l 个方程 21 1 22 2 2n n 2 系数alk 最大 k 1 k 1 a max a ik kin an1 x1 an 2 x2 ann xn bn lk
代入一组近似值
•首先分离出x1、x2、x3
d1 d2 dk d n 1 dn
• 系数矩阵 是三对角 矩阵—— 只有主对 角线和相 邻的两条 对角线上 有非零元 素,其余 元素为零。
• 追赶法是高斯消去法用于解三对角矩阵的简化形 式,这种方法比较简单,计算量小,节省存贮量。
•三对角型方程组的系数矩阵
b1 c1 a b c 2 2 a i bi ci a n 1
7.1.2 列主元高斯(Gauss)消去法
• 消元过程要用元素 akk中作除数,如果akk的绝对值 很小或者等于 0 ,计算过程中精度会严重损失甚至 溢出中断计算。预防办法是事先对方程进行处理
• 处理方法:每次消元前,检查所要加工的方程组 中变元 xk 的各个系数akk,ak+1,…,ank,挑选出绝 对值最大者作为第k步主元素。
%列主元高斯消去法求解
• • • • • • • clear a=[2 -1 3;4 2 5;1 2 0]; %方程组系数矩阵 b=[1;4;7]; %方程组常数向量赋值 c=[a,b]; for k=1:(length(b)-1); g=max(abs(c(k:length(b),k))); %选 取列主元
•7.1.3 追赶法解三对角线方程 组 b x c x
1 1 1 2
a 2 x1 b2 x 2 c2 x 3 ................................... a k x k 1 bk x k ck x k 1 .................................... a n 1 x n 2 bn 1 x n 1 cn 1 x n a n x n 1 bn x n
• h=find(abs(c(:,k))==g); % • e=max(h); • f=c(e,:); • c(e,:)=c(k,:); %所选列主元所在行与原 主元行换行 • c(k,:)=f; • d=c(k,k); • for i=(k+1):length(b); %消元过程 • c(i,:)=c(i,:)-c(k,:)*c(i,k)/d; • end
• 例7-2 用追赶法求解以下方程组
• clear,clc • a=[1 1 0 0 0;1 2 1 0 0;0 1 3 1 0;0 0 1 4 1;0 0 0 1 5]; %方程组系数矩阵赋值 • b=[3 8 15 24 29]'; %方程组常数向量赋值 • c=[a b]; • for i=1:length(b) • d(i)=a(i,i); • end • for i=1:length(b)-1 • e(i)=a(i,i+1); %对角线以上 • f(i)=a(i+1,i); %对角线以下 • end
• 追赶法消元过程
w1 c1 / b1 w i ci /(bi a i 1 w i 1 ) ( i 2,3, , n 1) g1 d 1 / b1 g i (d i a i 1 g i 1 ) /(bi a i 1 w i 1 ) ( i 2,3, , n 1)
1
w1 1 w2 1
g1 g2
消元后 形式为
wn 1 1 gn
回代过程
xn gn
• 特点:计算量 很小,所需存贮 量小,三对角线 以外的零元素不 占存贮空间,程 序编写容易。
x i g i w i x i 1 ( i n 1, n 2, 1)
• n=length(b);x(n)=g(n); %回代过程(赶 的过程) • for i=(n-1):-1:1 • x(i)=g(i)-w(i)*x(i+1); • end • for i=1:length(x) • fprintf('\nx[%d]=%.2f',i,x(i)) %结果 输出 • end
1 2 3
解 MATLAB中,求解线性方程组最方便的是直 接使用左除符号 ‘\’,只须写为‚X=A\b‛,即 可求解。 为说明高斯消去和列主元高斯消去的求解过程,仍 按算法步骤编程计算。
高斯消去和列主元高斯消去的计算结果 x= 9 -1 -6
%高斯消去法求解
• • • • • • • • • clear a=[2 -1 3;4 2 5;1 2 0]; %方程组系数矩阵 b=[1;4;7]; %方程组常数向量赋值 c=[a,b]; for k=1:(length(b)-1); %消元过程 d=c(k,k); for i=(k+1):length(b); c(i,:)=c(i,:)-c(k,:)*c(i,k)/d; end
变元x2…xn的N-1阶方 x1 a12 x 2 a1n x n b1 程组 x 2 a 2 n x n b2
a 3 n x n b2 a 3 n x n a nn x n bn
N-2阶方程组
• 重复以上过程,n步后,得到以下方程组
x2 a1 n xn b1 x1 a12
以上方程分别乘 (- a i1 ) 后加到 第i行(i=2,3,…,n),得
x1 a12 x 2 a1 n x n b1 a 22 x 2 a 2 n x n b2 a n 2 x 2 a nn x n bn
相关文档
最新文档