Matlab线性方程组求解(Gauss消去法)
Gauss列主元素消去法实验

Lab06.Gauss 列主元素消去法实验【实验目的和要求】1.使学生深入理解并掌握Gauss 消去法和Gauss 列主元素消去法步骤; 2.通过对Gauss 消去法和Gauss 列主元素消去法的程序设计,以提高学生程序设计的能力;3.对具体问题,分别用Gauss 消去法和Gauss 列主元素消去法求解。
通过对结果的分析比较,使学生感受Gauss 列主元素消去法优点。
【实验内容】1.根据Matlab 语言特点,描述Gauss 消去法和Gauss 列主元素消去法步骤。
2.编写用不选主元的直接三角分解法解线性方程组Ax=b 的M 文件。
要求输出Ax=b 中矩阵A 及向量b ,A=LU 分解的L 与U ,det A 及解向量x 。
3.编写用Gauss 列主元素消去法解线性方程组Ax=b 的M 文件。
要求输出Ax=b 中矩阵A 及向量b 、PA=LU 分解的L 与U 、det A 及解向量x ,交换顺序。
4.给定方程组(1) ⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡--11134.981.4987.023.116.427.199.103.601.3321x x x(2) ⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡----15900001.582012151********.23107104321x x x x 先用编写的程序计算,再将(1)中的系数3.01改为3.00,0.987改为0.990;将(2)中的系数2.099999改为2.1,5.900001改为9.5,再用Gauss 列主元素消去法解,并将两次计算的结果进行比较。
【实验仪器与软件】1.CPU 主频在1GHz 以上,内存在128Mb 以上的PC ;2.Matlab 6.0及以上版本。
实验讲评:实验成绩:评阅教师:200 年 月 日Lab06.Gauss 列主元素消去法实验第一题:1、算法描述:Ⅰ、Gauss 消去法由书上定理5可知 设Ax=b ,其中A ∈R^(n(1)如果()0(1,2,....,1)k kka k n ≠=-,则可通过高斯消去法将Ax=b 约化为等价的 角形线性方程组,且计算公式为:① 消元计算(k=1,2,….,n-1)()()(1)()()(1)()()/,1,...,,,,1,...,,,1,...,.k k ik ik kk k k k ij ij ik kj k k k iiik k m a a i k n a a m a i j k n b b m b i k n ++==+=-=+=-=+② 回带公式()()()()()1/,()/,1,...,2,1.n n n n nn ni i i i iii j ii j i x b a x ba x a i n =+==-=-∑(2)如果A 为非奇异矩阵,则可通过高斯消去法将方程组Ax=b 约化方程组为上三角矩阵以上消元和回代过程总的乘除法次数为332333nn nn +-≈,加减法次数为32353263nnn n+-≈以上过程就叫高斯消去法。
MATLAB Gauss-Seidel法解线性代数方程组

Gauss-Seidel 法解线性代数方程组Gauss-Seidel 法解线性代数方程组算法:Step 1取初始点)0(x ,精度要求epsStep 2若ε>-∞+)()1(k k x x 转到Step 3 否则转到Step 4Step 3用下式计算:()()b L D Ux L D x k k 1)(1)1(--++++-=转到Step 2 Step 4停止计算()1(+k x 作为线性方程组的解) Step 5 )22(643211k k k k h y y n n ++++=+Gauss-Seidel 法解线性代数方程组程序:function GS(A,b,x,eps)%A----线性方程组系数矩阵%b----线性方程组的解(列向量)%x----初始迭代点%D----A 对角阵%e----取误差(计算范数)D=diag(diag(A));L=tril(A,-1);%取下三角阵U=triu(A,1);%取上三角阵e=inf;X=x;s=0;while e>=epsx=inv(D+L)*U*x+inv(D+L)*b;e=norm(x-X);X=x;s=s+1;endif s<100xelsedisp('超过最大迭代次数')disp('迭代到100次的结果为')xend例:用Gauss-Seidel 迭代法解下列线性方程组⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡-1166122111221321x x x 输入:clear allclcA=[1 2 -2;1 1 1;2 2 1];b=[6;6;11];x=[0;0;0];ep=1e-3;GS(A,b,x,ep)得到:超过最大迭代次数迭代到100次的结果为x =1.0e+308 *-1.78011.7807-0.0012指导教师: 年 月 日。
Gauss顺序消去法解线性方程组报告

Gauss 顺序消去法解线性方程组制作人:陈静Gauss 消去法是解线性方程组的一种直接方法,有时也称为精确法,这种算法只包含有限四次运算,并且在每一步运算过程都不会发生舍入误差的假设下,计算的结果就是方程组的精确解。
但实际计算中不可避免舍入误差的存在和影响,所以这种方法只能求得线性方程组的近似解。
一.实验目的:学会用Gauss 顺序消去法解线性方程组。
二.实验要求:线性方程组中≠-)1(k kk a 0.三.顺序消去法解方程组原理:(1) 消元计算:对k=1,2, ,n-1⎪⎪⎩⎪⎪⎨⎧+=-=+=-=+==++),,1(),,1,(),,1()()()1()()()1()()(n k i b l b b n k j i a l a a n k i a a l k k ik k i k ik kj ik k ij k ij k kk k ik ik(2) 回代计算:⎪⎩⎪⎨⎧-=-==∑+=)1,2,,1()()(1)()()()( n i a x a b x a b x i ii n i j j i ij i i i n nn n n n四.顺序消去法解方程组的解题步骤:设有线性代数方程组Ax = b其中A = ⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡nn n n n n a a a a a a a a a .....................212222111211,x = ⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡n x x x 21,b = ⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡n b b b 21. 为了清晰起见,将方程组写成如下形式⎪⎪⎩⎪⎪⎨⎧=+++=+++=+++.,,)1()1(2)1(21)1(1)1(2)1(22)1(221)1(21)1(1)1(12)1(121)1(11n n nn n n n n n n b x a x a x a b x a x a x a b x a x a x a 第一步 设)1(11a ≠0,首先计算乘数 )1(11)1(11a a l i i =(i=2,3, ,n ). 用-1i l 乘上述方程组的第一个方程,再加到第i 个(i=2,3, ,n )方程上,消 去上述方程组的第二个方程到第n 个方程中的未知数1x ,得与上述方程组等价的方程组⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡)2()2(2)2(2)2(22)1(1)1(12)1(11nn n n n a a a a a a a ⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡n x x x 21 = ⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡)2()2(2)1(1n b b b 简记为x A )2(=)2(b ,其中)2(A 、)2(b 的元素计算公式为⎩⎨⎧=-===-=.,,3,2,,,2,,,2,)1(11)1()2()1(11)1()2(n i b l b b n i n j a l a a i i i j i ij ij 第二步 仿照第一步的做法以此类推,到第n 步便得到与上述方程组等价的方程组⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡)()2(2)2(22)1(1)1(12)1(11n nn n n a a a a a a ⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡n x x x 21 = ⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡))22)1(1n n b b b 以上两步为高斯顺序消去法的消去过程。
matlab求解代数方程组解析

第三讲 Matlab 求解代数方程组理论介绍:直接法+迭代法,简单介绍相关知识和应用条件及注意事项 软件求解:各种求解程序讨论如下表示含有n 个未知数、由n 个方程构成的线性方程组:11112211211222221122n n n n n n nn n na x a x a xb a x a x a x b a x a x a x b +++=⎧⎪+++=⎪⎨⎪⎪+++=⎩ (1)一、直接法 1.高斯消元法:高斯消元法的基本原理: 在(1)中设110,a ≠将第一行乘以111,k a a -加到第(2,3,,),k k n = 得: (1)(1)(1)(1)11112211(2)(1)(2)22112(2)(2)(2)22n n n n n nn n n a x a x a x b a x a x b a x a x b ⎧+++=⎪++=⎪⎨⎪⎪++=⎩(2)其中(1)(1)1111,.k k aa b b ==再设(2)220,a ≠将(2)式的第二行乘以(2)2(2)22,(3,,)k a k n a -= 加到第k 行,如此进行下去最终得到:(1)(1)(1)(1)11112211(2)(1)(2)22112(1)(1)(1)1,111,1()()n n n n n n n n n n n n n n n n nn n n a x a x a x b a x a x b a x a x b a x b --------⎧+++=⎪++=⎪⎪⎨⎪+=⎪⎪=⎩(3) 从(3)式最后一个方程解出n x ,代入它上面的一个方程解出1n x -,并如此进行下去,即可依次将121,,,,n n x x x x - 全部解出,这样在()0(1,2,,)k kk a k n ≠= 的假设下,由上而下的消元由下而上的回代,构成了方程组的高斯消元法. 高斯消元法的矩阵表示:若记11(),(,,),(,,)T T ij n n n n A a x x x b b b ⨯=== ,则(1)式可表为.Ax b =于是高斯消元法的过程可用矩阵表示为:121121.n n M M M Ax M M M b --=其中:(1)21(1)111(1)1(1)11111n a a M a a ⎛⎫ ⎪ ⎪- ⎪=⎪ ⎪ ⎪ ⎪- ⎪⎝⎭ (2)32(2)222(2)2(2)221111n a a M a a ⎛⎫⎪⎪ ⎪-⎪=⎪ ⎪ ⎪⎪- ⎪⎝⎭高斯消元法的Matlab 程序: %顺序gauss 消去法,gauss 函数 function[A,u]=gauss(a,n) for k=1:n-1%消去过程 for i=k+1:n for j=k+1:n+1%如果a(k,k)=0,则不能削去 if abs(a(k,k))>1e-6 %计算第k 步的增广矩阵 a(i,j)=a(i,j)-a(i,k)/a(k,k)*a(k,j); else%a(k,k)=0,顺序gauss 消去失败 disp (‘顺序gauss 消去失败‘); pause; exit; end end end end%回代过程 x(n)=a(n,n+1)/a(n,n); for i=n-1:-1:1 s=0; for j=i+1:n s=s+a(i,j)*x(j); endx(i)=(a(i,n+1)-s)/a(i,i); end%返回gauss 消去后的增广矩阵 A=triu(a); %返回方程组的解 u=x ;练习和分析与思考: 用高斯消元法解方程组:12345124512345124512452471523814476192536x x x x x x x x x x x x x x x x x x x x x x ++++=⎧⎪+++=⎪⎪++++=⎨⎪+++=⎪+++=⎪⎩2.列主元素消元法在高斯消元法中进行到第k 步时,不论()k ik a 是否为0,都按列选择()||(,,)k ik a i k n = 中最大的一个,称为列主元,将列主元所在行与第k 行交换再按高斯消元法进行下去称为列主元素消元法。
matlab解方程组方法

matlab解方程组方法在MATLAB中,有多种方法可以解方程组。
以下是其中几种常用的方法:1.solve函数:这是最直接的方法,适用于解线性方程组。
假设你有以下线性方程组:(Ax = b)你可以使用solve函数来求解。
例如:2.matlab复制代码A = [1, 2; 3,4];b = [5; 6];x = solve(A,b);3.\和/运算符:这两个运算符也可以用于解线性方程组。
例如:4.matlab复制代码A = [1, 2; 3, 4];b = [5; 6];x = A\b; % 使用左除运算符或者matlab复制代码x = b/A; % 使用右除运算符5.gaussj函数:这个函数使用高斯-约当消元法来解方程组。
使用方法如下:6.matlab复制代码A = [1, 2; 3,4];b = [5; 6];x = gaussj(A,b);7.mldivide函数:这个函数与\运算符相同,也是用于解线性方程组。
例如:8.matlab复制代码A = [1, 2; 3, 4];b = [5; 6];x = mldivide(A, b); % 等价于A\b9.lyap函数:对于非线性方程组,可以使用lyap函数来求解。
这个函数用于解决Lyapunov方程,通常用于控制系统和稳定性分析。
使用方法如下:10.matlab复制代码A = [1, 2; 3, 4];lyap(A); % 对于给定的A矩阵,求解Lyapunov方程。
11.fzero和root函数:这两个函数用于求解非线性方程的根。
例如,如果你有一个非线性方程(f(x) = 0),你可以使用fzero或root来找到这个方程的根。
使用方法如下:12.matlab复制代码f = @(x) x^2 - 4; % 非线性方程 f(x) = x^2 - 4x = fzero(f, [1, 2]); % 在区间[1,2]内寻找方程的根或者:matlab复制代码root(f) % 使用root函数求解非线性方程的根。
matlab程序求解含有边界条件的线性方程组

编写程序,求解含有边界条件(本质)的线性方程组一、编写程序思路:拟编写一MATLAB 程序函数,来处理边界条件(a x k =), 将原线性方程组转化为形如:⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡----=⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡a A b a A b a A b a a A b x x x x x A A A A A A A A A A A A A A A A 5254243231215432155545351454443413534333115141311000000100 (边界条件为a x =2), 然后调用作业(一)中解线性方程组函数x=gauss(A,b),求解该线性方程组。
一、变量说明:解含边界条件(a x k =)线性方程组Ax=b ,其中:A -线性方程组系数矩阵;b -列向量n -系数矩阵行数; m -系数矩阵列数; x -未知解向量 i -系数矩阵的行变量; k -解向量x 的下标变量;三、基于MATLAB 软件平台编写程序,如下:function tr=boundary(A,b,k,a) %定义边界条件处理函数[n,m]=size(A); %获得系数矩阵A 的行、列数 A(k,:)=0; %系数矩阵第k 行化为0for i=1:n %使向量b 转化为[b(i)-A(i,k)*a]向量 b(i)=b(i)-A(i,k)*a;endA(:,k)=0; %系数矩阵第k 列化为0A(k,k)=1;b(k)=a; %使k x 所对应系数矩阵中主对角元素化为1disp(A); %显示边界条件经处理后的A 和b disp(b);x=gauss(A,b) %调用作业一中高斯消元函数解方程组四、程序应用例如:解线性方程组:520121094342233337284245253215432154215432543211⎪⎪⎪⎩⎪⎪⎪⎨⎧=====+-++++++++-++++++-x x x x x x x x x x x x x x x x x x x x x x x 其中,边界条件为32=x >> A=[2,-1,5,1,1;4,2,4,8,-1;1,2,0,7,3;3,1,3,3,2;2,4,-3,0,4]; >> b=[9;10;12;20;5];>> tr=boundary(A,b,2,3)输出结果为:403-02233033700100010115027-176312x =6.52493.00000.34811.9613-4.7514。
gauss列主元消去法条件 -回复

gauss列主元消去法条件-回复Gauss列主元消去法是一种常用的线性方程组求解方法,它通过高斯消元和行交换的方式将一个线性方程组转化为上三角形方程组,从而方便地求解未知数的值。
在实际操作中,我们需要注意一些条件和步骤,以确保计算过程的正确性和可行性。
一、线性方程组的条件在使用Gauss列主元消去法求解线性方程组时,需要满足以下两个条件:1. 方程组必须是齐次或非齐次的线性方程组。
所谓齐次的线性方程组是指常数项全部为零的线性方程组,即右端项为零向量;非齐次的线性方程组则是指右端项不为零的线性方程组。
2. 方程组的未知数个数必须等于方程组的方程个数。
这意味着方程组必须是方阵,即系数矩阵的行数和列数相等。
满足以上两个条件后,可以应用Gauss列主元消去法对线性方程组进行求解。
二、Gauss列主元消去法的步骤下面我们一步一步来详细解释Gauss列主元消去法的过程。
步骤1:构造增广矩阵首先,将线性方程组的系数矩阵和右端项向量排列在一起,构成增广矩阵。
例如,对于一个3×3的线性方程组:a11x1 + a12x2 + a13x3 = b1a21x1 + a22x2 + a23x3 = b2a31x1 + a32x2 + a33x3 = b3构造的增广矩阵为:[ a11 a12 a13 b1 ][ a21 a22 a23 b2 ][ a31 a32 a33 b3 ]步骤2:选取主元在消元过程中,我们需要选取一个主元素进行消元,目的是将主元素所在的列下方的元素全部消为零。
为了提高计算的精确性,我们在选取主元素时通常选择当前列的绝对值最大的元素。
即,在第i列中,选取使得a[i][i]最大的行k,然后将第k行与第i行进行交换,将主元素移动到当前位置。
步骤3:高斯消元通过选取主元后,我们开始进行高斯消元的操作。
对于第i行以下的每一行j,执行如下操作:1. 计算倍数m,使得第j行的第i列元素消为零。
倍数m的值为第j行第i列的元素除以主元素所在位置的元素值,即m=a[j][i]/a[i][i]。
matlab求解线性方程组之LU分解

matlab求解线性⽅程组之LU分解线性代数中的⼀个核⼼思想就是矩阵分解,既将⼀个复杂的矩阵分解为更简单的矩阵的乘积。
常见的有如下分解:LU分解:A=LU,A是m×n矩阵,L是m×m下三⾓矩阵,U是m×n阶梯形矩阵QR分解:秩分解:A=CD , A是m×n矩阵,C是m×4矩阵,D是4×n矩阵。
奇异值分解:A=UDV T谱分解:在求解线性⽅程组中,⼀个核⼼的问题就是矩阵的LU分解,我们将⼀个矩阵A分解为两个更加简单的矩阵的复合LU,其中L是下三⾓矩阵,U是阶梯形矩阵。
下三⾓矩阵和上三⾓矩阵具有⾮常良好的性质:Lx=y 或者Ux=y 很容易求解。
问题1.对于任意的矩阵A,是否存在LU分解?定理:如果A⾏等价于阶梯形矩阵U,那么(E n E n-1......E1)A=U,其中的E i,i=1,2,.....,n是⾼斯消去矩阵,他们都是下三⾓矩阵,并且都可逆。
这个定理告诉我们三件事:1.并不是所有的矩阵都有LU分解的。
2.A=LU=(E n E n-1......E1)-1U=(E1-1E2-1.....E n-1)U。
3.这个定理还给出了求解矩阵A-1的⼀种⽅法。
数值算法1.Gauss消去⽤Gauss消去法将矩阵A⾏变换为U:⽤Gauss消去矩阵将A⾏变换为U:数值算法2.Gauss-jardon过程和Gauss-jardon基本⼀致,之不多在选择完最⼤元之后,将其化为1,这样就可以通过乘以⼀个倍数来消去其他⾏了。
选择主元当对某⼀列进⾏Gauss消去时,⼀般都是选择这⼀列中绝对值最⼤的⼀个元素作为主元,当然这会进⾏⾏交换。
其好处有⼀下⼏点:1.在Gauss会代的过程中,不会出现除数为0的情况。
2.减少误差传播,这主要是因为乘数⼩于等于1.(为何乘数⼩于等于1,如果选择这⼀列中绝对值最⼤的⼀个元素作为主元,我们假设这个元素是a,那么乘数等于-b/a,此时|b/a|<=1)。