实验5-线性代数方程组的数值解法

合集下载

线性方程组AX=B的数值计算方法实验

线性方程组AX=B的数值计算方法实验
printf("请输入矩阵各项:\n");
for(i=1;i<=n;++i)
{
for(j=1;j<=n;++j)
{
scanf("%lf",&a[i][j]);
}
}
printf("请输入方程组的常数项:\n");
for(i=1;i<=n;++i)
{
scanf("%lf",&b[i]);
}
for(i=1;i<=n;++i)
t[i]=c[i][N];
for(i=N-1;i>=0;i--)//利用回代法求最终解
{
for(j=N-1;j>i;j--)
t[i]-=c[i][j]*x[j];
x[i]=t[i]/c[i][i];
}
}
运行结果:(以具体方程组为例)
2、(PA=LU:带选主元的分解法)求解线性方程组AX=B,其中:
A= B=
#define N 4//矩阵阶数
voidColPivot(doublec[N][N+1],double[]);//函数声明
voidmain(){
inti,j;
doublex[N];
doublec[N][N+1]={1,3,5,7,1,
2,-1,3,5,2,
0,0,2,5,3,
-2,-6,-3,1,4};
(3)[max1,j]=max(abs(A(p:N,p)));C=A(p,:);A(p,:)=A(j+p-1,:);A(j+p-1,:)=C;d=t(p);t(p)=t(j+p-1);t(j+p-1)=d;

线性方程组的数值解法实验报告

线性方程组的数值解法实验报告

实验报告——线性方程组的数值解法姓名:班级:学号:日期:一 实践目的1. 熟悉求解线性方程组的有关理论和方法。

2. 会编列主元消去法,全主元消去法,雅克比迭代法及高斯-赛德尔迭代法的程序。

3.通过实际计算,进一步了解各种方法的优缺点,选择合适的数值方法。

4. 进一步应用数学知识,扩展数学思维,提高编程能力。

二 问题定义及题目分析1.求解线性方程是实际中常遇到的问题。

而一般求解方法有两种,一个是直接求解法,一个是迭代法。

2.直接法是就是通过有限步四则运算求的方程准确解的方法。

但实际计算中必然存在舍入误差,因此这种方法只能得到近似解。

3.迭代法是先给一个解的初始近似值,然后按一定的法则求出更准确的解,即是用某种极限过程逐步逼近准确解的方法。

4.这次实践,将采用直接法:列主元高斯消去法,全主元高斯消去法;迭代法:雅克比迭代法和高斯-赛德尔迭代法。

三 详细设计 设有线性方程组11112211n n a x a x a x b +++=21122222n n a x a x a x b +++= 1122n n nn n n a x a x a x b +++=令A= 111212122212n n n n nn a a a aa a a a a ⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦ x=12n x x x ⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦ b= 12n b b b ⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦一. 上三角方程组的求解很简单。

所以若能将方程组化为上三角方程组,那就很容易得到方程的解,高斯消去法则是一种简洁高效的方法,可以将方程组化为上三角方程组,但是这种方法必须满足每一步时0kk a =才能求解,还有当kk a 绝对值很小时,作分母会引起较大的舍入误差。

因此在消元过程中应尽量选择绝对值较大的系数作为主元素。

1.列主元消去法很好的解决这一问题。

将1x 的系数1(1)k a k n ≤≤中绝对值最大者作为主元素,交换第一行和此元素所在的行,然后主元消去非主元项1x 的系数,。

实验五(线性方程组的数值解法和非线性方程求解)

实验五(线性方程组的数值解法和非线性方程求解)

1大学数学实验 实验报告 | 2014/4/5一、 实验目的1、学习用Matlab 软件数值求解线性代数方程组,对迭代法的收敛性和解的稳定性作初步分析;2、通过实例学习用线性代数方程组解决简化问题。

二、 实验内容项目一:种群的繁殖与稳定收获:种群的数量因繁殖而增加,因自然死亡而减少,对于人工饲养的种群(比如家畜)而言,为了保证稳定的收获,各个年龄的种群数量应维持不变。

种群因雌性个体的繁殖而改变,为方便起见以下种群数量均指其中的雌性。

种群年龄记作k=1,2,…,n ,当年年龄k 的种群数量记作x k ,繁殖率记作b k (每个雌性个体1年的繁殖的数量),自然存活率记作s k (s k =1−d k ,d k 为1年的死亡率),收获量记作ℎk ,则来年年龄k 的种群数量x ̌k 应该为x ̌k =∑b k n k=1x k , x ̌k+1=s k x k −ℎk , (k=1,2,…,n -1)。

要求各个年龄的种群数量每年维持不变就是要求使得x ̌k =x k , (k=1,2,…,n -1).(1) 如果b k , s k 已知,给定收获量ℎk ,建立求各个年龄的稳定种群数量x k 的模型(用矩阵、向量表示).(2) 设n =5,b 1=b 2=b 5=0,b 3=5,b 4=3,s 1=s 4=0.4,s 2=s 3=0.6,如要求ℎ1~ℎ5为500,400,200,100,100,求x 1~x 5.(3) 要使ℎ1~ℎ5均为500,如何达到?问题分析:该问题属于简单的种群数量增长模型,在一定的条件(存活率,繁殖率等)下为使各年龄阶段的种群数量保持不变,各个年龄段的种群数量将会满足一定的要求,只要找到种群数量与各个参量之间的关系,建立起种群数量恒定的方程就可以求解出各年龄阶段的种群数量。

模型建立:根据题目中的信息,令x ̌k =x k ,得到方程组如下:{x ̌1=∑b k nk=1x k =x 1x ̌k+1=s k x k −ℎk =x k+1整理得到:{−x 1∑b k nk=1x k =0−x k+1+s k x k =ℎk2 大学数学实验 实验报告 | 2014/4/52写成系数矩阵的形式如下:A =[b 1−1b 2b 3s 1−100s 2−1…b n−1b n0000⋮⋱⋮000000000⋯00−10s n−1−1]令h =[0, ℎ1,ℎ2,ℎ3,…,ℎn−2,ℎn−1]Tx =[x n , x n−1,…,x 1]T则方程组化为矩阵形式:Ax =h ,即为所求模型。

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

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

线性代数方程组的数值解法【实验目的】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消去法在消去过程中选择模最大的主元能够得到比较精确的解。

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

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

0.99995
1
1
0
0.5833
0.8333
0.9967
0.99992
1
1
0
0.5000
0.7847
0.9954
0.99988 0.99999
1
0
0.5000
0.7569
0.9943
0.99985 0.99999
1
0
0.5000
0.7500
0.9935
0.99983 0.99999
1
0
0.5000
次时得到的向量,可以作出论断,G-S 方法已经基本可以认为算到了精确值 (1,1,,1)T (共
20 个 1),而此时 JACOBI 法也接近精确值。由此说明,高斯-赛德尔方法比雅可比方法具有 更快的收敛速度。原因就在于 G-S 法每步都利用了当前步骤计算出的最新的 x 分量值。
进一步,再选取不同的 x0 和 b 来验证:
0.7500
0.9930
0.99981 0.99999 0.99999
0
0.5000
0.7500
0.9926
0.99979 0.99999 0.99999
0
0.5000
0.7500
0.9924
0.99978 0.99999 0.99999
0
0.5000
0.7500
0.9923
0.99977 0.99999 0.99999
序如下:
b0=ones(20,1);x0=zeros(20,1);
%给 b 和 x0 赋值
a1=A;
x11=jacobi(x0,b0,a1,m); n1=size(x11)

数学实验第3次作业_线性方程组的数值解法

数学实验第3次作业_线性方程组的数值解法

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

二 实验内容1 已知方程组Ax =b ,其中A ∈ℝ20×20,定义为:31/21/41/231/21/41/41/231/21/41/41/231/21/41/23--⎡⎤⎢⎥---⎢⎥⎢⎥---⎢⎥-⎢⎥⎢⎥---⎢⎥--⎣⎦试通过迭代法求解此方程组,认识迭代法收敛的含义以及迭代初值和方程组系数矩阵性质对收敛速度的影响。

实验要求:(1) 选取不同的初始向量x (0)和不同的方程组右端项向量b ,给定迭代误差要求,用雅可比迭代法和高斯-赛德尔迭代法计算,观测得到的迭代向量序列是否均收敛?若收敛,记录迭代次数,分析计算结果并得出你的结论。

(2) 取定右端项向量b 和初始向量x (0),将A 的主对角线元素成倍增长若干次,非对角线元素不变,每次用雅可比迭代法计算,要求迭代误差满足‖x (k+1)−x (k)‖∞<10−5,比较收敛速度,分析现象并得出你的结论。

初步解决:首先建立利用雅克比迭代法和高斯-赛德尔迭代法计算的函数M 文件。

雅克比迭代法:高斯-赛德尔迭代法:关于迭代法的收敛性:由原式Ax=b化简可得x=Bx+f,也就是说,研究此处迭代法是否收敛实际上就是研究有原矩阵A经变换之后所得矩阵B的性质。

而由于该题第一问中,A保持不变,所以对于收敛性只需研究一次。

在命令栏中输入以下命令:(1)构造题目中的矩阵A:(2)提取对角矩阵、上三角矩阵、下三角矩阵:(3)对于两种迭代方法分别求B:(4)分别计算两个矩阵的三种范数:n1和m1、n2和m2、n3和m3分别是矩阵B1、B2的1-范数、2-范数和∞范数。

由书上定理,矩阵的谱半径不超过任何一个范数,即ρ(B)≤‖B‖,而由图中可以看出,两个矩阵的六个范数没有一个大于1,所以两个矩阵的谱半径一定都小于1,所以此时两种迭代方法均收敛。

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

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

) a
a / a (k1) kj
( k 1) kk
a a (k1)
ij
( k 1) ik
( j) kj
( j k 1,, n 1) (i k 1,, n; j k 1,n 1)
第n步:得到:
1
a (1) 12
a (1) 13
a (1) 1n
1
a (2) 23
a (2) 2n
a (1) 1n 1
A b 行初等变换 I x
相应地,计算公式可表述为:
对 k 1,2,, n, 依次计算
aaik((jjkk
) )
a(k 1) kj
a(k 1) ij
/
a(k kk
1)
a a (k 1) (k )
ik
kj
(
j
k
1, k
2,, n 1)
(i 1,2,, k 1, k 1, k 2,, n; j k 1,, n 1)
后用第i行元数(i
2,
,
n)减去第一行对应元素的a
(0) i1
倍,(i 2,, n),这样,a1(01)位置变为1,其余各行的第一
个元素变为0。
1
(A(0)
,
b(0)
)
a
(0) 21
a
(0) n1
a(0) 12
/
a(0) 11
a(0) 22
a(0) 13
/
a(0) 11
a(0) 23
a(0) 1n
0
a (1) 13
a (2) 23
a (1) 1n 1
a (2) 2n 1
记为
a (2) 33
a
(2) 3n 1

应用数值分析线性代数方程组数值解法

应用数值分析线性代数方程组数值解法

线性代数方程组数值解法——直接法一、n 阶线性代数方程组b x A =⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡n n nn n n n n b b b x x x a a a a a a a a a 2121212222111211二、上(下)方程组与回代(前推)过程 1、上三角方程组⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡n n nn n n b b b x x x a a a a a a 2121222112112、回代过程⎪⎩⎪⎨⎧-=⎪⎭⎫ ⎝⎛-==∑+=)1,2,1(,1 n i a x a b x a b x ii ni j j ij ii nn n n 3、下三角方程组⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡n n nn n n b b b x x x a a a a a a 2121212221114、前推过程⎪⎩⎪⎨⎧=⎪⎭⎫ ⎝⎛-==∑-=),2,1(,111111n i a x a b x a b x ii i j j ij ii 三、顺序Gauss 消去法 1、消元过程(1)n 阶方程组经1-k 次消元后,得到的新的系数矩阵)(k A 具有如下形式:⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎣⎡=)()()()()2(2)2(22)1(1)1(12)1(11)(k nn k nk k knk kk n n k a a a a a a a a a A(2)在第k 次,计算乘数),1(,)()(n k i a a m k kk k ik ik +==,则)1(+k A元素的计算公式为:⎩⎨⎧+=-=+=-=++),1(,),1,(,)()()1()()()1(n k i b m b b n k j i a m a a k k ik k i k ik kj ik k ij k ij (3)完成1-n 次消元后:⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡)()2(2)1(121)()2(2)2(22)1(1112111n n n n nn n nb b b x x x a a a a a a )()( 2、回代过程⎪⎩⎪⎨⎧-=⎪⎭⎫ ⎝⎛-==∑+=)1,2,1(,)(1)()()()( n k a x a b x a b x k kk n k j j k kj k k k n nn n n n3、计算量估计(1)第k 次消元需要进行)1)((+--k n k n 次乘法和)(k n -次除法:6523)1()()(231111nn n k n k n k n n k n k -+=+--+-∑∑-=-= (2)回代过程乘除法次数:22)(211nn n k n n k +=+-∑-= (3)乘数法总次数:3323n n n MD -+=(4)加减法总次数:652323n n n AS -+=4、要求:系数矩阵A 的所有顺序主子式),1,2,1(0n n k k -=≠∆ 四、列主元Gauss 消去法1、对于非奇异矩阵A ,在第一步消元时,即使A 的第一个元素为零,但是A 的第一列元素中至少有一个不为零,把这个不为零的元素所在的行与第一行交换位置,即可进行消元。

数学实验报告——利用MALTAB计算线性代数方程组的数值解法

数学实验报告——利用MALTAB计算线性代数方程组的数值解法

实验三线性代数方程组的数值解法一、迭代法求解方程组㈠问题描述给定方程组的矩阵A,通过迭代法求解方程组。

1、选取不同的初始向量和不同的右端项向量,给定误差要求,用两种迭代法计算;2、去顶右端项向量和初始向量,将A的主对角线元素成倍增长若干次,非主对角线元素不变,用雅克比迭代法计算。

㈡方法与公式1、雅克比迭代法2、高斯-赛德尔迭代法㈢结果与分析1、不同初始向量、不同右端项向量、不同精度要求(1)初始向量定为zeros(n,1);①b=zeros(n,1)迭代次数为0,直接得到结果。

③b = 1:n(2)初始向量定为one s(n,1)①b=zeros(n,1)事实上,迭代100次时,所得结果约为10^-32,已经可以认为是0,但是由于没有达到精度要求,故不算收敛。

②b=ones(n,1)④b = n:1(3)初始向量定为1:n①b=zeros(n,1)②b=ones(n,1)(4)初始向量定为n:1①b=zeros(n,1)②b=ones(n,1)④b = n:1(5)简要小结a.在个别情况下雅可比迭代法收敛速度极慢,但事实上没有达到收敛时其计算结果已经可以接受;b.要求的精度越高,迭代的次数越多,迭代的次数与所要求的精度的对数值近似呈线性,也就是说两者近似呈指数关系;b.高斯-赛德尔迭代法有着比雅可比更好的迭代特性;2、更改A的主对角线元素(1) b =20:1;初值 1:20(2) b =20:1;初值 20:1(3) b =1:20;初值 20:1(4) b =[3;5;2;6;8;23;5;8;32;63;23;5;2;12;0;23;1;564;2;65]; 初值 ones(20,1)(5)简要小结a.迭代的次数随着对角线元素的成倍的增长而降低,趋于一稳定值;b.右端项以及迭代初值仅当对角线元素较小时对迭代次数起有作用,对角线元素成倍数增加后,迭代次数不变。

3、总结由以上各个对比可以得出以下结论:a.使用迭代法求解方程组时时,要求的精度越高,迭代次数越大;b.高斯-赛德尔迭代法的迭代次数要比雅可比迭代法迭代次数低;c.雅可比迭代的次数随着矩阵A对角线元素的成倍的增长而降低,d.当矩阵A的对角线元素足够大时,雅可比迭代法的迭代次数趋于稳定值;㈣程序清单1、第一问中的雅可比迭代function [y,k] = jacobi(A,b,m,tol)D = diag(diag(A));L = - tril(A,-1);U = - triu(A,1);n = length(A);y = ones(n,1);BJ=D\(L+U);fJ=D\b;k=0;while norm(A*y-b)/norm(b)>tol && k<mk = k+1;y = BJ*y+fJ;end2、高斯-赛德尔迭代法function [y,k] = GuassSeidel(A,b,m,tol)D = diag(diag(A));L = - tril(A,-1);U = - triu(A,1);n = length(A);BG = (D-L)\U;FG = (D-L)\b;y = zeros(n,1);k=0;while norm(A*y-b)/norm(b)>tol && k<mk = k+1;y = BG*y+FG;end3、第二问中的雅可比迭代function [y,k] = jacobi1(A,b,m,tol) D = diag(diag(A));L = - tril(A,-1);U = - triu(A,1);n = length(A);yk = ones(20,1);BJ=D\(L+U);fJ=D\b;k=0;yk1 = BJ*yk+fJ;k = k+1;ttol = norm(yk1-yk,inf);while ttol>tol && k<mk = k+1;yk = yk1;yk1 = BJ*yk+fJ;ttol = norm(yk1-yk,inf);endy=yk1;4、第一问脚本n=20;A1 = sparse(1:n,1:n,3,n,n);A2 = sparse(1:n-1,2:n,-1/2,n,n);A3 = sparse(2:n,1:n-1,-1/2,n,n);A4 = sparse(1:n-2,3:n,-1/4,n,n);A5 = sparse(3:n,1:n-2,-1/4,n,n);A = A1+A2+A3+A4+A5;b =zeros(20,1);m=10000;for i = 3:10tol = 10^(-i);[xJ,k1(i)] = jacobi(A,b,m,tol); [xG,k2(i)] = GuassSeidel(A,b,m,tol); endk1k25、第二问脚本n=20;k = 1;A1 = sparse(1:n,1:n,3,n,n);A2 = sparse(1:n-1,2:n,-1/2,n,n);A3 = sparse(2:n,1:n-1,-1/2,n,n);A4 = sparse(1:n-2,3:n,-1/4,n,n);A5 = sparse(3:n,1:n-2,-1/4,n,n);b =[3;5;2;6;8;23;5;8;32;63;23;5;2;12;0;23;1;564;2;65]; m=10000;tol = 10^(-5);for k = 1:10A = k*A1+A2+A3+A4+A5;[xJ,k1(k)] = jacobi1(A,b,m,tol);endk1二、一年生植物的繁殖㈠问题描述对于5.1.2的假设,给定参数,试分别用追赶法、稀疏系数矩阵和满矩阵求解;若b 有10%误差,估计对结果的影响。

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

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

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

二、实验内容1.《数学实验》第二版(问题1)问题叙述:通过求解线性方程组A1x=b1,A2x=b2,理解条件数的意义和方程组性态对解的影响,其中A1是n阶范德蒙矩阵,即A1=[1x0x02…x0n−11x1x12…x1n−1……………1x n−1x n−12 (x)n−1n−1], x k=1+0.1k , k=0,1,…,n−1A2是n阶希尔伯特矩阵,b1,b2分别是A1,A2的行和。

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

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

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

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

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

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

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

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

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

计算方法实验报告-线性方程组的数值解法

计算方法实验报告-线性方程组的数值解法

重庆大学学生实验报告实验课程名称计算方法开课实验室DS1421学院年级专业学生姓名学号开课时间至学年第学期1.实验目的(1)高斯列主元消去法求解线性方程组的过程(2)熟悉用迭代法求解线性方程组的过程(3)设计出相应的算法,编制相应的函数子程序2.实验内容分别用高斯列主元消去法 ,Jacobi 迭代法,Gauss--Saidel 迭代法,超松弛迭代法求解线性方程组⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡-=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡------725101391444321131243301024321x x x x 3.实验过程解:(1)高斯列主元消去法编制高斯列主元消去法的M 文件程序如下:%高斯列主元消元法求解线性方程组Ax=b%A 为输入矩阵系数,b 为方程组右端系数%方程组的解保存在x 变量中format long;%设置为长格式显示,显示15位小数A=[2,10,0,-3;-3,-4,-12,13;1,2,3,-4;4,14,9,-13]b=[10,5,-2,7]'[m,n]=size(A);%先检查系数正确性if m~=nerror('矩阵A 的行数和列数必须相同');return;endif m~=size(b)error('b 的大小必须和A 的行数或A 的列数相同');return;end%再检查方程是否存在唯一解if rank(A)~=rank([A,b])error('A 矩阵的秩和增广矩阵的秩不相同,方程不存在唯一解');return;endc=n+1;A(:,c)=b; %(增广)for k=1:n-1[r,m]=max(abs(A(k:n,k))); %选主元m=m+k-1; %修正操作行的值if(A(m,k)~=0)if(m~=k)A([k m],:)=A([m k],:); %换行endA(k+1:n, k:c)=A(k+1:n, k:c)-(A(k+1:n,k)/ A(k,k))*A(k, k:c); %消去 endendx=zeros(length(b),1); %回代求解x(n)=A(n,c)/A(n,n);for k=n-1:-1:1x(k)=(A(k,c)-A(k,k+1:n)*x(k+1:n))/A(k,k);enddisp('X=');disp(x);format short;%设置为默认格式显示,显示5位运行,结果如下所示:(2)Jacobi迭代法编制迭代计算的M文件程序如下:%Jacobi迭代法求解% A为方程组的增广矩阵clc;A=[2,10,0,-3,10;-3,-4,-12,13,5;1,2,3,-4,-2;4,14,9,-13,7] MAXTIME=50;%最多进行50次迭代eps=1e-5;%迭代误差[n,m]=size(A);x=zeros(n,1);%迭代初值y=zeros(n,1);k=0;%进入迭代计算disp('迭代过程X的值情况如下:')disp('X=');while 1disp(x');for i=1:1:ns=0.0;for j=1:1:nif j~=is=s+A(i,j)*x(j);endy(i)=(A(i,n+1)-s)/A(i,i);endendfor i=1:1:nmaxeps=max(0,abs(x(i)-y(i))); %检查是否满足迭代精度要求 endif maxeps<=eps%小于迭代精度退出迭代for i=1:1:nx(i)=y(i);%将结果赋给xendreturn;endfor i=1:1:n%若不满足迭代精度要求继续进行迭代x(i)=y(i);y(i)=0.0;endk=k+1;if k>MAXTIME%超过最大迭代次数退出error('超过最大迭代次数,退出');return;endend运行该程序结果如下:(3)Gauss--Saidel迭代法编制求解程序Gauss_Seidel.m如下:%Gauss_Seidel.m% A为方程组的增广矩阵clc;format long;A=[2,10,0,-3,10;-3,-4,-12,13,5;1,2,3,-4,-2;4,14,9,-13,7][n,m]=size(A);%最多进行50次迭代Maxtime=50;%控制误差Eps=10E-5;%初始迭代值x=zeros(1,n);disp('x=');%迭代次数小于最大迭代次数,进入迭代for k=1:Maxtimedisp(x);for i=1:ns=0.0;for j=1:nif i~=js=s+A(i,j)*x(j);%计算和endendx(i)=(A(i,n+1)-s)/A(i,i);%求出此时迭代的值end%因为方程的精确解为整数,所以这里将迭代结果向整数靠近的误差作为判断迭代是否停止的条件if sum((x-floor(x)).^2)<Epsbreak;end;end;X=x;disp('迭代结果:');Xformat short;运行结果如下所示:(4)超松弛迭代法编写函数M文件如下:%SOR法求解%w=1.45%方程组系数矩阵clc;A=[2,10,0,-3;-3,-4,-12,13;1,2,3,-4;4,14,9,-13]%方程组右端系数b=[10,5,-2,7]'w=1.45;%最大迭代次数Maxtime=100;%精度要求Eps=1E-5;%以15位小数显示format long;n=length(A);k=0;%初始迭代值x=ones(n,1);y=x;disp('迭代过程:');disp('x=');while 1y=x;disp(x');%计算过程for i=1:ns=b(i);for j=1:nif j~=is=s-A(i,j)*x(j);endendif abs(A(i,i))<1E-10 | k>=Maxtimeerror('已达最大迭代次数或矩阵系数近似为0,无法进行迭代'); return;ends=s/A(i,i);x(i)=(1-w)*x(i)+w*s;endif norm(y-x,inf)<Eps%达到精度要求退出计算break;endk=k+1;enddisp('最后迭代结果:');%最后的结果X=x'%设为默认显示格式format short; 结果如下:4.实验环境及实验文件存档名实验环境:Matlab7.0文件存档名:Gauss.m,Jacobi.m,Gauss_Seidel.m,SOR.m5.实验结果及分析=1.0000=2.0000=3.0000=4.0000经过验证,高斯列主元消结果正确。

【清华】实验5-线性代数方程组的数值解法(011813)

【清华】实验5-线性代数方程组的数值解法(011813)

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

【实验内容】1.题目3:已知方程组,其中,定义为:试通过迭代法求解此方程组,认识迭代法收敛的含义以及迭代初值和方程组系数矩阵性质对收敛速度的影响。

实验要求:(1)选取不同的初始向量和不同的方程组右端向量b,给出迭代误差要求,用雅可比迭代法和高斯-赛德尔迭代法计算,观测得到的迭代向量序列是否均收敛?若收敛,记录迭代次数,分析计算结果并得出你的结论;(2)取定右端向量b和初始向量,将A的主对角线元素成倍增长若干次,非主对角线元素不变,每次用雅可比迭代法计算,要求迭代误差满足 ,比较收敛速度,分析现象并得出你的结论。

迭代法的原理分析:对于线性方程组,满足A的对角元素均不为0,则可以将A分解为:。

则雅可比迭代公式即为:,又由于:因此有:,同理,高斯-赛德尔迭代法的矩阵表示为:,根据原理,先编写雅可比迭代法和高斯-赛德尔迭代法的函数程序。

(1) 一、雅可比迭代: I.选取初始向量,。

迭代精度的要求是,运用雅可比迭代进行求解,每次迭代后的结果如下表:迭代次数0 1 23 456 x1 1 0.583333 0.527778 0.499421 0.489583 0.485139 0.483239 x2 1 0.75 0.638889 0.602431 0.586034 0.579162 0.576046 x3 1 0.833333 0.715278 0.670139 0.649595 0.640545 0.636396 x4 1 0.833333 0.743056 0.693287 0.671586 0.661185 0.6564 x5 1 0.833333 0.75 0.704282 0.681713 0.670915 0.665718 x6 1 0.833333 0.75 0.707755 0.685571 0.674716 0.669367 x7 1 0.833333 0.75 0.708333 0.687066 0.676272 0.670924 x8 1 0.833333 0.75 0.708333 0.687452 0.67685 0.671535 x9 1 0.833333 0.75 0.708333 0.6875 0.677039 0.671767 x10 1 0.833333 0.75 0.708333 0.6875 0.677079 0.671844 x11 1 0.833333 0.75 0.708333 0.6875 0.677079 0.671844 x12 1 0.833333 0.75 0.708333 0.6875 0.677039 0.671767 x13 1 0.833333 0.75 0.708333 0.687452 0.67685 0.671535 x14 1 0.833333 0.75 0.708333 0.687066 0.676272 0.670924 x15 1 0.833333 0.75 0.707755 0.685571 0.674716 0.669367 x16 1 0.833333 0.75 0.704282 0.681713 0.670915 0.665718 x17 1 0.833333 0.743056 0.693287 0.671586 0.661185 0.6564 x18 1 0.833333 0.715278 0.670139 0.649595 0.640545 0.636396 x19 1 0.75 0.638889 0.602431 0.586034 0.579162 0.576046 x20 1 0.5833330.5277780.499421 0.489583 0.485139 0.483239 迭代次数78 9 10 11 12 x1 0.48237396 0.48198 0.481798 0.481713 0.481672 0.481653 x2 0.57463907 0.573988 0.573686 0.573543 0.573476 0.573444 x3 0.63448738 0.633597 0.633179 0.632981 0.632887 0.632843 x40.65413674 0.653071 0.6525650.6523240.6522080.652153x5 0.66323779 0.662048 0.661477 0.661202 0.661069 0.661005x6 0.66676822 0.665504 0.66489 0.664591 0.664446 0.664376x7 0.66827415 0.666972 0.666333 0.666019 0.665865 0.66579x8 0.66888283 0.667565 0.666913 0.66659 0.666431 0.666353x9 0.66912708 0.667806 0.667148 0.666821 0.666659 0.666578x10 0.66921041 0.66789 0.66723 0.666901 0.666738 0.666657x11 0.66921041 0.66789 0.66723 0.666901 0.666738 0.666657x12 0.66912708 0.667806 0.667148 0.666821 0.666659 0.666578x13 0.66888283 0.667565 0.666913 0.66659 0.666431 0.666353x14 0.66827415 0.666972 0.666333 0.666019 0.665865 0.66579x15 0.66676822 0.665504 0.66489 0.664591 0.664446 0.664376x16 0.66323779 0.662048 0.661477 0.661202 0.661069 0.661005x17 0.65413674 0.653071 0.652565 0.652324 0.652208 0.652153x18 0.63448738 0.633597 0.633179 0.632981 0.632887 0.632843x19 0.57463907 0.573988 0.573686 0.573543 0.573476 0.573444x20 0.48237396 0.48198 0.481798 0.481713 0.481672 0.481653 通过表1可知,一共迭代了12次。

数学实验 5:线性代数方程组的数值解法

数学实验 5:线性代数方程组的数值解法
பைடு நூலகம்
大倍数 1.0000 2.0000 3.0000 4.0000 5.0000 6.0000 7.0000 8.0000 9.0000 10.0000 11.0000 12.0000 13.0000 14.0000 15.0000 16.0000 17.0000 18.0000 19.0000 20.0000
小值q 0.4893 0.2447 0.1631 0.1223 0.0979 0.0816 0.0699 0.0612 0.0544 0.0489 0.0445 0.0408 0.0376 0.0350 0.0326 0.0306 0.0288 0.0272 0.0258 0.0245 21.0000 12.0000 9.0000 8.0000 8.0000 7.0000 7.0000 7.0000 6.0000 6.0000 6.0000 6.0000 6.0000 6.0000 6.0000 6.0000 6.0000 6.0000 5.0000 5.0000
实验 5:线性代数方程组的数值解法
习题3:
已知方程组,其中,定义为: 试通过迭代法求解此方程组,认识迭代法收敛的含义以及迭代初值和方 程组系数矩阵性质对收敛速度的影响。实验要求: (1) 选取不同的初始向量x0和不同的方程组右端向量b,给定迭 代误差要求,用雅可比迭代法和高斯-赛德尔迭代法计算, 观测得到的迭代向量序列是否均收敛?若收敛,记录迭代 次数,分析计算结果并得出结论; (2) 取定右端向量b和初始向量x0,将A的主对角线元素成倍的 增长若干次,非主对角元素不变,每次用雅可比迭代法计 算,要求迭代误差满足,比较收敛速度,分析现象并得出结 论。 1、 程序设计(可直接粘贴运行) 1) Jacobi迭代法 function y=jacobi(a,b,x0,e,m) %定义jacobi函数,其中:a,b为线性方程组中的矩阵和右端向量;x0 为初始值; %e和m分别为人为设定的精度和预计迭代次数;运行结果y为迭代的结 果和所有中间值组成的 %矩阵 y=0; %对y初始化 d=diag(diag(a)); %按雅可比迭代标准形 形式取主对角元素作为矩阵D u=-triu(a,1); %取上三角矩阵u l=-tril(a,-1); %取下三角矩阵l bj=d^-1*(l+u); fj=d^-1*b; x=[x0,zeros(20,m-1)]; %初始化x,其中x1=x0,即 初始值 for k=1:m %人为规定迭代次 数,防止不收敛迭代导致死循环 x(:,k+1)=bj*x(:,k)+fj; %jacobi迭代 if norm(x(:,k+1)-x(:,k),inf)<e

线性方程组的数值解法-安振华-2012011837

线性方程组的数值解法-安振华-2012011837

实验5:线性方程组的数值解法化学工程系分2 安振华2012011837【实验目的】1、掌握线性方程组的常用数值解法,包括高斯消去法、LU分解法以及校正法。

2、体验数值计算的时间复杂度和计算规模的关系。

3、加深对数值计算误差的理解。

4、学习使用迭代法等算法,求解非线性方程。

5、学习如何使用MATLAB解非线性方程组和方程组。

【实验容】【实验五:习题9】种群的繁殖与稳定收获:种群的数量因繁殖而增加,因自然死亡而减少,对于人工饲养的种群(比如家畜)而言,为了保证稳定的收获,各个年龄的种群数量应保持不变,种群因雌性个体的繁殖而改变,为方便起见以下种群数量均指其中的雌性。

种群年龄记作k=1,2,…,n,当年年龄k的种群数量记作x k,繁殖率记作b k(每个雌性个体在1年繁殖的数量),自然存活率记作s k(s k=1-d k,d k为1年的死亡率),收获量记作h k,则来年年龄k的种群数量k x应为:111,(1,2,,1)n k k k k k k k x b x x s x h k n +===-=⋅⋅⋅-∑要求各个年龄的种群数量每年维持不变就是要使(1,2,,)k k x x k n ==⋅⋅⋅(1) 若b k ,s k 已知,给定收获量h k ,建立求各年龄的稳定种群数量x k 的模型(用矩阵向量表示)(2) 设n=5,b 1=b 2=b 5=0,b 3=5,b 4=3,s 1=s 4=0.4,s 2=s 3=0.6,如果要求h 1~h 5为500,400,200,100,100,求x 1~x 5 (3) 要使h 1~h 5均为500,如何达到? 【分析】为方便起见以下种群数量均指其中的雌性。

我们并且有以下的假设:(1)雌性个体的繁殖率和存活率在特定的时间是不变的。

(2)人工饲养的种群在质量和数量上是不受外界环境和资源的限制的。

(3)模型中不考虑人为的或是自然的灾害所造成的种群数量、繁殖率和存活率的变动。

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

333.3333 333.3333 333.3333 333.3333 500.0000 500.0000 500.0000 500.0000 583.3333 583.3333 583.3333 583.3333 625.0000 625.0000 625.0000 625.0000 645.8173 645.8333 645.8333 645.8333 656.1616 656.2353 656.2487 656.2487
0 0.4259 0.5646 0.6102 0.6253 0.6303 0.6320 0.6325
0 0.4367 0.5807 0.6284 0.6442 0.6495 0.6512 0.6518
0 0.4416 0.5881 0.6367 0.6529 0.6583 0.6600 0.6606
k2 =
8
选择初值全零、 b为全1的情况计算, 结果是收敛的; 其中Jacobi方法迭代了11次, Gauss 方法迭代了8次
之后将 b 改为全为 1000 的向量,计算结果如下:
x1 =
1 至 11 列
0
0
0 333.3333 500.0000 571.7593 604.5525 619.5666 626.5593 629.8380
12 至 20 列
0 0.3333 0.5000 0.5833 0.6250 0.6458 0.6562 0.6614 0.6640 0.6653 0.6659
0 0.3333 0.5000 0.5833 0.6250 0.6458 0.6562 0.6613 0.6638 0.6651 0.6657
实验 5 线性代数方程组的数值解法
实验目的 1.学会用 MATLAB 数值求解线性代数方程组,对迭代法的收敛性和稳定性做初步分析; 2.通过实例学习通过用线性代数方程组解决简化实际问题。 实验内容 3.已知方程组(略) 1) 选取不同的初始向量������ (0) 和不同的方程组右端项b,给定迭代误差要求,用雅克比 迭代法和高斯-赛德尔迭代法计算, 观察得到的迭代向量序列是否均收敛?若收敛, 记录迭代次数,分析计算结果并得出结论; 雅克比迭代法的函数:jacobi.m
0 0.4433 0.5908 0.6398 0.6562 0.6616 0.6634 0.6640
0 0.4440 0.5919 0.6411 0.6575 0.6630 0.6648 0.6654
0 0.4443 0.5923 0.6416 0.6581 0.6635 0.6654 0.6660
0 0.4444 0.5926 0.6255 0.6313 0.6325 0.6327 0.6328
0 0.4444 0.5556 0.5700 0.5727 0.5733 0.5734 0.5734
0 0.4444 0.4753 0.4805 0.4814 0.4816 0.4816 0.4816
高斯-赛德尔迭代法的函数:gauss.m
function [x,k]=gauss(x0,a,b,ep) ang=diag(a); n=length(ang); for i=1:n for j=1:n a(i,j)=a(i,j)/ang(i); end b(i)=b(i)/ang(i); end
coef=a-eye(n); x=[x0]; cha=100; n=1; while cha>ep^2 xn=x(n,:); for i=1:length(ang) storage=-coef(i,:)*(xn')+b(i)'; xn(i)=storage; end x=[x;xn]; var=(x(n,:)-x(n+1,:)).^2; cha=max(var); n=n+1; end k=n;
12 至 20 列
0 0.4444 0.5926 0.6420 0.6584 0.6639 0.6657 0.6663
0 0.4444 0.5926 0.6420 0.6584 0.6639 0.6656 0.6661
0 0.4444 0.5926 0.6420 0.6584 0.6637 0.6652 0.6656
631.3878 632.1242 632.4758 632.6443 632.7253 632.7644 632.7833 632.7924 632.7968 632.7990 632.8000 632.8006 632.8008
650.3562 658.9311 662.0917 663.3558 651.2613 659.9700 663.2290 664.5613 651.6959 660.4722 663.7826 665.1517 651.9052 660.7154 664.0522 665.4408 652.0063 660.8333 664.1835 665.5824 652.0552 660.8906 664.2476 665.6516 652.0789 660.9185 664.2789 665.6856 652.0904 660.9320 664.2941 665.7021 652.0960 660.9386 664.3016 665.7103 652.0987 660.9418 664.3052 665.7142 652.1000 660.9434 664.3070 665.7162 652.1006 660.9442 664.3078 665.7171 652.1010 660.9446 664.3083 665.7176
0 0.3333 0.5000 0.5810 0.6184 0.6362 0.6445 0.6485 0.6504 0.6513 0.6517
0 0.3333 0.5000 0.5718 0.6046 0.6196 0.6266 0.6298 0.6314 0.6321 0.6325
0 0.3333 0.4722 0.5278 0.5527 0.5638 0.5689 0.5713 0.5724 0.5729 0.5732
0 0.4444 0.5926 0.6420 0.6582 0.6628 0.6640 0.6642
0 0.4444 0.5926 0.6420 0.6565 0.6599 0.6607 0.6609
0 0.4444 0.5926 0.6389 0.6494 0.6515 0.6520 0.6521
0 0.3333 0.5000 0.5718 0.6046 0.6196 0.6266 0.6298 0.6314 0.6321 0.6325
0 0.3333 0.5000 0.5810 0.6184 0.6362 0.6445 0.6485 0.6504 0.6513 0.6517
0 0.3333 0.5000 0.5833 0.6236 0.6430 0.6523 0.6568 0.6589 0.6600 0.6605
0 0.4444 0.5925 0.6418 0.6583 0.6638 0.6656 0.6662
0 0.4444 0.5925 0.6419 0.6584 0.6639 0.6657 0.6663
0 0.4444 0.5926 0.6420 0.6584 0.6639 0.6657 0.6663
0 0.3333 0.5000 0.5833 0.6250 0.6457 0.6559 0.6609 0.6634 0.6646 0.6652
0 0.3333 0.5000 0.5833 0.6248 0.6451 0.6549 0.6598 0.6621 0.6632 0.6638
0 0.3333 0.5000 0.5833 0.6236 0.6430 0.6523 0.6568 0.6589 0.6600 0.6605
function [x,k]=jacobi(x0,a,b,ep) ang=diag(a); n=length(ang); for i=1:n for j=1:n a(i,j)=a(i,j)/ang(i); end b(i)=b(i)/ang(i); end
coefficient=a-eye(n); x=[x0]; cha=100; n=1; while cha>ep^2 storage=-coefficient*(x(n,:)')+b'; x=[x;storage']; var=(x(n,:)-x(n+1,:)).^2; cha=max(var); n=n+1; end k=n;
0 0.3333 0.4167 0.4537 0.4689 0.4758 0.4789 0.4804 0.4810 0.4813 0.4815
k1 =
11
.3333 0.4336 0.4659 0.4764 0.4799 0.4811 0.4814
0 0.3889 0.5130 0.5535 0.5668 0.5712 0.5727 0.5732
0
0
0
0
0
0
0
0
333.3333 333.3333 416.6667 472.2222 453.7037 527.7778 468.9429 552.6620 475.8230 563.7860 478.9282 568.9113 480.3652 571.2895
333.3333 333.3333 333.3333 333.3333 500.0000 500.0000 500.0000 500.0000 581.0185 583.3333 583.3333 583.3333 618.4414 623.6497 624.8071 625.0000 636.1561 643.0041 645.0617 645.6887 644.4991 652.3076 654.9466 655.8830 648.4660 656.7778 659.7535 660.8966
相关文档
最新文档