列主元消去法MATLAB程序
高斯列组元消去法

Console.WriteLine("高斯消去法方程:");
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
Console.Write(a[i, j].ToString() + " ");
Console.WriteLine();
{
s = 0;
for (j = i + 1; j <= n - 1; j++)
s = s + a[i, j] * x[j];
x[i] = (a[i, n] - s) / a[i, i];
}
return x;
}
static void Main(string[] args)
{
//double[,] a=new double[4, 5] { { 10, -7, 0, 1, 8 }, { -3, 2.099999, 6, 2, 5.900001 }, { 5, -1, 5, -1, 5 }, { 2, 1, 0, 2, 1 } };
高斯列组元消去法课程实验报告
课程名称
数值分析
班级
15计本
实验名称
高斯列组元消去法
姓名
学号
实验成绩
实验目的及要求
1.利用MATLAB编写高斯列组元消去法,并测试。
2.调用函数解题
实验环境
Windows 7或以上版本+ VS2010或以上版本
实验内容
调试过程及实验结果
总结
1、实验结果与理论一致;
高斯列主元消去法求线性方程

MATLAB 高斯列主元消去一. 高斯列主元消去法的算法过程对于线性方程组AX=b ,A 为n*n 矩阵:(1)Step1——在增广矩阵(A ,b )第一列中找到绝对值最大的元素,将其所在行与第一行交换,再对(A ,b )做初等行变换使原方程组的第一行第一列的系数 为1,且第一列其它系数都为0.Step2——在增广矩阵(A ,b )中的第二列中(从第二行开始)找到绝对值 最大的元素,将其所在行与第二行交换,再对(A ,b )做初等行变换使原方程组的第二行第二列的系数为1,且第二列中第二行以下的系数都为0. Step3——在增广矩阵(A ,b )中的第三列中(从第三行开始)找到绝对值 最大的元素,将其所在行与第三行交换,再对(A ,b )做初等行变换使原方程组的第三行第三列的系数为1,且第三列中第二行以下的系数都为0。
重复此过程…….(2)如果增广矩阵的秩为n ,则可以将增广矩阵的前n 列化为主对角线都为1的矩阵; 如果增广矩阵的秩为m<n ,则可以将增广矩阵的前m 行m 列矩阵化为主对角线 都是1的矩阵,m 行后的系数均为0;如果增广矩阵的前n 列的秩不等于增广矩 阵的秩,此时方程组无解。
(3)接下来,通过初等变换把对角线上每个1所对应的列上的其他元素变为0,就可以得到增广矩阵的最简阶梯型。
这时可以容易得到最简阶梯型对于方程组的解,即得到方程组的解。
二. 算法的流程图三.运行结果(1)随机生成增广矩阵(6*7):C =-94 -89 -41 88 83 -57 -1441 70 -27 -30 -82 93 43-67 -24 -31 -62 -49 -14 8318 -21 26 83 -15 56 7821 -35 32 -43 15 5 -7454 11 98 10 79 -34 -77方程组的解为:x =-811/542554/10151329/1117521/628-1763/1053-673/4428检查结果:Right result!>>(2)随机生成增广矩阵(6*7):C =78 -42 24 86 68 -43 830 -54 60 -81 11 -97 -44-92 -60 -80 19 67 40 -520 -24 45 -54 -60 90 -4378 18 29 -94 24 49 92-23 -47 -6 15 -66 51 -54 方程组的解为:x =1421/1429417/650-557/592-413/1529253/304964/1123检查结果:Right result!>>四.各个重点步骤的设计方法或注意事项生成增广矩阵时,对生成0到1之间的随机数进行变换:C=floor(200*rand(n,n+1)-100)求方程组的唯一解时,对第i列做初等变换前,应该注意找出首非零元绝对值最大的一行,并与第i行进行交换。
列主元消去法matlab实验报告

列主元消去法matlab实验报告列主元消去法是一种常用的线性方程组求解方法,它通过选取主元元素来消去其他元素,从而简化方程组的求解过程。
本文将以Matlab为工具,对列主元消去法进行实验研究,并给出相应的实验报告。
我们需要明确列主元消去法的基本原理。
列主元消去法的核心思想是选取每一列的主元素,通过消去其他元素,从而将方程组转化为上三角形或下三角形的形式。
具体来说,通过选取第一列的主元素,将第一列下方的元素消去;然后选取第二列的主元素,将第二列下方的元素消去;依此类推,直到最后一列。
这样,我们就得到了一个上(下)三角形的方程组,可以通过回代(代入)的方法求解。
接下来,我们使用Matlab编写代码,实现列主元消去法。
首先,我们需要输入一个线性方程组的系数矩阵A和常数向量b,其中A 是一个n×n的矩阵,b是一个n×1的向量。
然后,我们通过选取主元素的方式进行消去操作,得到一个上三角形的方程组。
最后,我们通过回代(代入)的方法求解方程组的解。
具体实现的代码如下所示:```matlabfunction x = gauss_elimination(A, b)n = size(A, 1); %方程组的个数% 消元过程for k = 1:n-1[~, p] = max(abs(A(k:n, k))); %选取主元素 p = p + k - 1;% 交换第k行和第p行temp = A(k, :);A(k, :) = A(p, :);A(p, :) = temp;temp = b(k);b(k) = b(p);b(p) = temp;% 消去操作for i = k+1:nfactor = A(i, k) / A(k, k);A(i, :) = A(i, :) - factor * A(k, :);b(i) = b(i) - factor * b(k);endend% 回代(代入)过程x = zeros(n, 1);x(n) = b(n) / A(n, n);for i = n-1:-1:1x(i) = (b(i) - A(i, i+1:n) * x(i+1:n)) / A(i, i);endend```接下来,我们将使用一个具体的例子来说明列主元消去法的求解过程。
列主元消去法

实验报告课程名称:___计算方法_________________指导老师:________________成绩:__________________ 实验名称:___列主元消去法________实验类型:________________同组学生姓名:__________ 一、实验目的和要求(必填) 二、实验内容和原理(必填) 三、主要仪器设备(必填) 四、操作方法和实验步骤 五、实验数据记录和处理 六、实验结果与分析(必填) 七、讨论、心得一、问题描述对于一般的线性方程组,只要把方程组化成了等价的三角形方程组,求解过程就很容易完成,Gauss 消去法就是将一般的线性方程组等价地变换为一个上三角方程组,然后用回代法求解。
但是如果在消元过程中,发现某个约化主元a kk (k )=0,则第k 次消元就无法进行。
此外,即使所有约化主元全不为零,虽然可以完成方程组的求解,但是小主元的存在使计算结果误差较大。
因此,为了减少计算过程中舍入误差对解的影响,在每次消元前,应选择绝对值尽可能大的元作为约化的主元。
我们称这种消元法为主元消元法。
如果在子块的第一列中选取主元,则相应的方法称为列主元消元法。
二、相关公式设有线性方程组b =Ax其中,A 为非奇异矩阵。
方程组的增广矩阵为⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡=n nnn n k i n n b a a a a b a a a b a a a A212222211112111]b ,[ 首先在A 的第1列选取绝对值最大的元素作为主元素,即选择0max 111,1≠=≤≤i ni i a a然后交换A 的第1行与第1i 行(交换后增广矩阵为简单起见仍记为]b ,[A ,其元素仍记为i j i b a ,)。
经过第1次消元计算得到与原方程组等价的方程组 (2))2(b x =A其中⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡=)2()2(2)1(1)2()2()2(2)2(2)2(22)1(1)1(12)1(11)2(b n nn n nn b b b a a a a a a a A, 上述过程可记为 ]2[)2()2(]b ,[]b ,[A A →重复上述计算过程,现假设已完成第1-k 步的选主元素过程,交换两行并进行消元计 此时]b ,[A 约化为⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡=)()()()()()()2(2)2(2)2(22)1(1)1(1)1(12)1(11)()(]b ,[k n k nnk nk k k k knk kk nn k k b a a b a a b a a b a a a A其中)(k A 的元素仍记为j i a ,)(b k 的元素仍记为i b .第k 步选主元素(在)(k A 右下角方阵的第1列内选),即确定k i ,使 0max ,≠=≤≤ik ni k k i a a k交换]b ,[)()(k K A 第k 行与)1,,2,1(-=n k i k 行的元素,再进行消元计算,最后将原线性方程组化为⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡n n nn n n b b b x x x a a a a a a 212122211211回代可求解得 ⎪⎩⎪⎨⎧-=-==∑+=)1,2,,1(/)(/1 n i a x a b x a b x iini j j ij i i nn n n三、Matlab程序function[x,flag]=Gauss(A,b)[n,m]=size(A);nb=length(b);if n~=merror('A²»ÊÇ·½Õó')return;endif m~=nberror('bµÄ³¤¶È²»µÈÓÚAµÄ½×Êý')return;endflag='OK';x=zeros(n,1);for k=1:n-1max=0;for i=k:nif abs(A(i,k))>maxmax=abs(A(i,k));r=i;endendif max<1e-10flag='failure';return;endif r>kfor j=k:nz=A(k,j);A(k,j)=A(r,j);A(r,j)=z;endz=b(k);b(k)=b(r);b(r)=z;endfor i=k+1:nm=A(i,k)/A(k,k);for j=k:nA(i,j)=A(i,j)-m*A(k,j);endb(i)=b(i)-m*b(k);endendif abs(A(n,n))<1e-10flag='failure';return;endfor k=n:-1:1for j=k+1:nb(k)=b(k)-A(k,j)*x(j);endx(k)=b(k)/A(k,k);endx(k)=b(k)/A(k,k);vpa(x)digits(5)end四、验算1 1 1 6取A= 0 2 -3 B= -50 -4 -1 -11运算正确五、实验心得通过这次实验,我更加深入的了解了课本上关于列主元消去法的知识。
高斯消元法 主元消去法

实验内容1.编写用高斯消元法解线性方程组的MATLAB程序,并求解下面的线性方程组,然后用逆矩阵解方程组的方法验证.(1)1231231230.101 2.304 3.555 1.1831.347 3.712 4.6232.1372.835 1.072 5.6433.035x x xx x xx x x++=⎧⎪-++=⎨⎪-++=⎩(2)12312312352828321361x x xx x xx x x++=⎧⎪+-=⎨⎪--=⎩MATLAB计算源程序1. 用高斯消元法解线性方程组bAX=的MATLAB程序输入的量:系数矩阵A和常系数向量b;输出的量:系数矩阵A和增广矩阵B的秩RA,RB, 方程组中未知量的个数n 和有关方程组解X及其解的信息.function [RA,RB,n,X]=gaus(A,b)B=[A b]; n=length(b); RA=rank(A);RB=rank(B);zhica=RB-RA;if zhica>0,disp('请注意:因为RA~=RB,所以此方程组无解.')returnendif RA==RBif RA==ndisp('请注意:因为RA=RB=n,所以此方程组有唯一解.')X=zeros(n,1); C=zeros(1,n+1);for p= 1:n-1for k=p+1:nm= B(k,p)/ B(p,p); B(k,p:n+1)= B(k,p:n+1)-m* B(p,p:n+1);endendb=B(1:n,n+1);A=B(1:n,1:n); X(n)=b(n)/A(n,n);for q=n-1:-1:1X(q)=(b(q)-sum(A(q,q+1:n)*X(q+1:n)))/A(q,q);endelsedisp('请注意:因为RA=RB<n,所以此方程组有无穷多解.')EndEnd2.列主元消元法及其MATLAB程序用列主元消元法解线性方程组bAX=的MA TLAB程序输入的量:系数矩阵A和常系数向量b;输出的量:系数矩阵A和增广矩阵B的秩RA,RB, 方程组中未知量的个数n和有关方程组解X及其解的信息.function [RA,RB,n,X]=liezhu(A,b)B=[A b]; n=length(b); RA=rank(A);RB=rank(B);zhica=RB-RA;if zhica>0,disp('请注意:因为RA~=RB,所以此方程组无解.')returnendif RA==RBif RA==ndisp('请注意:因为RA=RB=n,所以此方程组有唯一解.')X=zeros(n,1); C=zeros(1,n+1);for p= 1:n-1[Y,j]=max(abs(B(p:n,p))); C=B(p,:);B(p,:)= B(j+p-1,:); B(j+p-1,:)=C;for k=p+1:nm= B(k,p)/ B(p,p); B(k,p:n+1)= B(k,p:n+1)-m* B(p,p:n+1);endendb=B(1:n,n+1);A=B(1:n,1:n); X(n)=b(n)/A(n,n);for q=n-1:-1:1X(q)=(b(q)-sum(A(q,q+1:n)*X(q+1:n)))/A(q,q);endelsedisp('请注意:因为RA=RB<n,所以此方程组有无穷多解.') endend三.实验过程:1(1)编写高斯消元法的MATLAB文件如下:clear;A=[0.101 2.304 3.555;-1.347 3.712 4.623;-2.835 1.072 5.643];b=[1.183;2.137;3.035];[RA,RB,n,X] =gaus (A,b)运行结果为:请注意:因为RA=RB=n,所以此方程组有唯一解.RA =3RB =3n =3X =-0.39820.01380.3351(2)编写高斯消元法MATLAB文件如下:clear;A=[5 2 1;2 8 -3;1 -3 -6];b=[8;21;1;];[RA,RB,n,X] =gaus (A,b)运行结果为:请注意:因为RA=RB=n,所以此方程组有唯一解.RA =3RB =3n =3X =12-1在MATLAB中利用逆矩阵法检验结果:(1) 在command windows中直接运行命令:A=[0.101 2.304 3.555;-1.347 3.712 4.623;-2.835 1.072 5.643];b=[1.183;2.137;3.035];X=A\b运行结果为:X =-0.39820.01380.3351(2) 在command windows中直接运行命令:A=[5 2 1;2 8 -3;1 -3 -6];b=[8;21;1;];X=A\b运行结果为:X =12-1两小题所得结果相同,检验通过2(1)编写列组高斯消元法MATLAB文件如下:clear;A=[0.101 2.304 3.555;-1.347 3.712 4.623;-2.835 1.072 5.643];b=[1.183;2.137;3.035];[RA,RB,n,X] =liezhu(A,b)运行结果:请注意:因为RA=RB=n,所以此方程组有唯一解.RA =3RB =3n =3X =-0.39820.01380.3351(2)编写列组高斯消元法的MATLAB文件如下:clear;A=[5 2 1;2 8 -3;1 -3 -6];b=[8;21;1;][RA,RB,n,X] =liezhu(A,b)运行结果为:请注意:因为RA=RB=n,所以此方程组有唯一解.RA =3RB =3n =3X =12-1与题 1 中逆矩阵计算所得结果相同,检验通过。
列主元素消去法解方程组

#include<math.h>#include<stdio.h>#include<iostream.h>#define NUMBER 20float A[NUMBER][NUMBER+1],ark;int flag,n;void exchange(int r,int k);float max(int k);void message();int main(){float x[NUMBER];int r,k,i,j;char celect;cout<<"列主元素消去法解方程"<<endl;cout<<"制作:armahc"<<endl;cout<<endl;cout<<"输入操作符解方程请输入字母e"<<endl;cin>>celect;cout<<"输入方程维数n=";cin>>n;cout<<"输入系数矩阵A和向量B"<<endl;for(i=1;i<=n;i++){printf("输入a%d1--a%d%d系数和向量b%d:",i,i,n,i);for(j=1;j<=n+1;j++)scanf("%f",&A[i][j]);}for(k=1;k<=n-1;k++){ark=max(k);if(ark==0){cout<<"不合法输入"<<endl;message();}else if(flag!=k) exchange(flag,k);for(i=k+1;i<=n;i++)for(j=k+1;j<=n+1;j++)A[i][j]=A[i][j]-A[k][j]*A[i][k]/A[k][k];}x[n]=A[n][n+1]/A[n][n];for(k=n-1;k>=1;k--){float me=0;for(j=k+1;j<=n;j++){me=me+A[k][j]*x[j];}x[k]=(A[k][n+1]-me)/A[k][k];}for(i=1;i<=n;i++){printf("\n\nx%d=%f",i,x[i]);}message();return 0;}void exchange(int r,int k){int i;for(i=1;i<=n+1;i++){A[0][i]=A[r][i];}for(i=1;i<=n+1;i++){A[r][i]=A[k][i];}for(i=1;i<=n+1;i++){A[k][i]=A[0][i];}}float max(int k){int i;float temp=0;for(i=k;i<=n;i++){if(fabs(A[i][k])>temp){temp=fabs(A[i][k]);flag=i;}return temp;}}void message(){char asd;cout<<endl;cout<<"继续解方程请输入字母e"<<endl;cin>>asd;switch(asd){case 'e': main();default:{cout<<"不合法输入"<<endl;message();}}}。
gauss列主元素消去法matlab

高斯列主元素消去法是一种解线性方程组的常用方法,特别在数值分析和线性代数中应用广泛。
在Matlab中,我们可以使用该方法来解决大规模的线性方程组,包括矩阵的求解和矩阵的反转。
一、高斯列主元素消去法的基本原理高斯列主元素消去法是一种基于矩阵消元的方法,它通过一系列的矩阵变换将原始的线性方程组转化为上三角形式,然后再进行回代求解。
这个方法的核心就是通过矩阵的变换来简化原始的线性方程组,使得求解过程更加简单高效。
在Matlab中,我们可以利用矩阵运算和函数来实现高斯列主元素消去法,如`lu`分解函数和`\"`运算符等。
通过这些工具,我们能够快速地求解各种规模的线性方程组并得到准确的结果。
二、高斯列主元素消去法在Matlab中的实现在Matlab中,我们可以通过调用`lu`函数来实现高斯列主元素消去法。
该函数返回一个上三角矩阵U和一个置换矩阵P,使得PA=LU。
通过对U进行回代求解,我们可以得到线性方程组的解。
除了`lu`函数之外,Matlab还提供了一些其他的函数和工具来帮助我们实现高斯列主元素消去法,比如`\"`运算符和`inv`函数等。
通过这些工具的组合使用,我们能够更加灵活地进行线性方程组的求解,并且可以方便地处理特殊情况和边界条件。
三、高斯列主元素消去法的应用与局限性高斯列主元素消去法在实际应用中具有广泛的适用性,特别是对于大规模的线性方程组或者稀疏矩阵的求解。
通过Matlab中的工具和函数,我们可以快速地求解各种规模的线性方程组,并得到高精度的数值解。
然而,高斯列主元素消去法也存在一些局限性,比如对于奇异矩阵或者接近奇异矩阵的情况时,该方法的求解精度可能会下降。
在实际应用中,我们需要结合具体的问题和矩阵特性来选择合适的求解方法,以确保得到准确的结果。
四、个人观点和总结作为一种经典的线性方程组求解方法,高斯列主元素消去法在Matlab 中具有较好的实现和应用效果。
通过对其原理和实现细节的深入理解,我们能够更加灵活地应用该方法,并且能够更好地理解其适用性和局限性。
列主元高斯消去法求逆矩阵

}
return 1;
}
void XiaoQu(int t) //消去
{
int i, j;
double max = M[t][t], m;
for (i = t+1; i < n; i++)
{
m=M[i][t]/max;
for(j=0;j<n;j++)
{
M[i][j] = M[i][j] - M[t][j]*m;
for(i=t-1;i>=0;i--)
{
max=M[i][t];
M[i][t]=0;
for(j=0;j<n;j++)
E[i][j]=E[i][j]-max*E[t][j];
}
}
int main()
{
int i, j;
printf("请输入n阶方阵n值:");
scanf("%d", &n);
printf("请输入矩阵:\n");
}
}
{
max = fabs(M[i][t]); k = i;
}
if (max==0)
return 0;
for (j = 0; j < n; j++)
{
temp = M[t][j];
M[t][j] = M[k][j];
M[k][j] = temp;
temp = E[t][j];
E[t][j] = E[k][j];
{
printf("该矩阵不可逆!\n");
return 0;
数值分析实验报告高斯消元法和列主消元法

《计算方法》实验指导书 实验三、高斯消元法和列主消元法一、实验目的:1. 通过matlab 编程解决高斯消元发和列主消元发来解方程组的问题, 加强编程能力和编程技巧,要熟练应用matlab 程序来解题,练习从数值分析的角度看问题进而来解决问题。
更深一步体会这门课的重要性,练习动手能力,同时要加深对数值问题的理解,要熟悉matlab 编程环境。
二、实验要求:用matlab 编写代码并运行高斯消元法和列主消元发来解下面的方程组的问题,并算出结果。
三、实验内容:用高斯消元法和列主消元法来解题。
1.实验题目:用高斯消元法和列主消元法来解下列线性方程组。
⎪⎪⎩⎪⎪⎨⎧−=+−−−=+−−=+−−=−+−.142,16422,0,13143214321432432x x x x x x x x x x x x x x x 2.实验原理高斯消元法:就是把方程组变成上三角型或下三角形的解法。
上三角形是从下往上求解,下三角形是从上向下求解,进而求得结果。
而列主消元法是和高斯消元法相类似,只不过是在开始的时候找出x1的系数的最大值放在方程组的第一行,再化三角形再求解。
3.设计思想高斯消元法:先把方程组的第一行保留,再利用第一行的方程将其余几行的含有x1的项都消去,再保留第二行,同理利用第二行的方程把第二行以下的几行的含有x2项的都消去,以此类推。
直到最后一行只含有一个未知数,化为上三角形,求得最后一行的这个未知数的值,再回带到倒数第二个方程求出另一个解,再依次往上回带即可求出这个方程组的值。
而列主消元法与高斯消元法类似,只不过在最开始时找出x1项系数的最大值与第一行交换再进行与高斯算法相似的运算来求出方程组的解。
4.源代码高斯消元法的程序:f unction [RA,RB,n,X]=gaus(A,b)B=[A b]; n=length(b); RA=rank(A);RB=rank(B);zhica=RB-RA;if zhica>0,disp('请注意:因为RA~=RB,所以此方程组无解.')returnendif RA==RBif RA==ndisp('请注意:因为RA=RB=n,所以此方程组有唯一X=zeros(n,1); C=zeros(1,n+1);for p= 1:n-1for k=p+1:nm= B(k,p)/ B(p,p);B(k,p:n+1)= B(k,p:n+1)-m*B(p,p:n+1);endendb=B(1:n,n+1);A=B(1:n,1:n);X(n)=b(n)/A(n,n);for q=n-1:-1:1X(q)=(b(q)-sum(A(q,q+1:n)*X(q+1:n)))/A(q,q);endelsedisp('请注意:因为RA=RB<n,所以此方程组有无穷多解.')endend在工作窗口输入程序:A=[1 -1 1 -3; 0 -1 -1 1;2 -2 -4 6;1 -2 -4 1];b=[1;0; -1;-1]; [RA,RB,n,X] =gaus (A,b)请注意:因为RA=RB=n,所以此方程组有唯一解.运行结果为:RA =4RB =4n =4X =-0.50000.5000.列主消元发的程序:function [RA,RB,n,X]=liezhu(A,b)B=[A b]; n=length(b); RA=rank(A);RB=rank(B);zhica=RB-RA;if zhica>0,disp('请注意:因为RA~=RB,所以此方程组无解.')returnendif RA==RBif RA==ndisp('请注意:因为RA=RB=n,所以此方程组有唯一解.')X=zeros(n,1); C=zeros(1,n+1);for p= 1:n-1[Y,j]=max(abs(B(p:n,p))); C=B(p,:);B(p,:)= B(j+p-1,:); B(j+p-1,:)=C;for k=p+1:nm= B(k,p)/ B(p,p);B(k,p:n+1)= B(k,p:n+1)-m*B(p,p:n+1);endendb=B(1:n,n+1);A=B(1:n,1:n);X(n)=b(n)/A(n,n);for q=n-1:-1:1X(q)=(b(q)-sum(A(q,q+1:n)*X(q+1:n)))/A(q,q);endelsedisp('请注意:因为RA=RB<n,所以此方程组有无穷多解.')endend在工作窗口输入程序:A=[1 -1 1 -3; 0 -1 -1 1;2 -2 -4 6;1 -2 -4 1];b=[1;0; -1;-1]; [RA,RB,n,X]=liezhu(A,b)请注意:因为RA=RB=n,所以此方程组有唯一解.运行结果为:RA =4RB =4n =4X =-0.50000.5000实验体会:通过这次实验我了解了高斯消元法和列主消元方法的基本思想,虽然这两个程序的编写是有点困难的,但运行起来还是比较容易的,解决了不少实际问题的计算。
LU分解法、列主元高斯法、Jacobi迭代法、Gauss-Seidel法的原理及Matlab程序

设线性方程组
Ax b
(1)
的系数矩阵 A 可逆且主对角元素 a11 ,a22 ,...,ann 均不为零,令
D diag a11 ,a22 ,...,ann
并将 A 分解成
A A D D
(2)
从而(1)可写成
Dx D Ax b
令
x B1x f1
其中 B1 I D1 A, f1 D b 1 .
bnn xn gn
这个过程就是消元,然后再回代就好了。具体过程如下:
对于 k
1, 2,, n
1 ,若
a(k) kk
0,
依次计算
然后将其回代得到: 以上是高斯消去。
南昌航空大学数学与信息科学学院实验报告
mik
a(k) ik
/
a(k kk
)
a(k 1) ij
a(k ij
)
mik
x=zeros(m,1);
k=0;
while abs(max(x)-temp)>eps
temp=max(abs(x));
k=k+1;
%记录循环次数
x=inv(D)*(L+U)*x+inv(D)*b; %雅克比迭代公式
end
for k=1:n
fprintf('x[%d]=%f\n',k,x(k));
end
2.2.4 Gauss-Seidel 迭代程序
function Gauss_Seidel(A,b,eps) %A 为系数矩阵,b 为后端项矩阵,epe 为精度
[m,n]=size(A);
D=diag(diag(A)); %求矩阵 D
Gauss消去matlab程序

%消元过程 for i=k+1:n m=A(i,k)/A(k,k); for j=k+1:n A(i,j)=A(i,j)-m*A(k,j); end b(i)=b(i)-m*b(k); end end
贵州师范大学数学与计算机科学学院
%回代过程 if abs(A(n,n))<1e-10 index=0; return; end for k=n:-1:1 for j=k+1:n b(k)=b(k)-A(k,j)*x(j); end x(k)=b(k)/A(k,k); end
贵州师范大学数学与计算机科学学院
Gauss列主元消去法 列主元消去法Matlab程序 (2) 列主元消去法 程序
function X=Gausslzxq(A,B) % Input A is an N×N nonsingular matrix % B is an N×1 vector % Output X is an N×1 matrix containing the solution to AX=B % Initialize X and the temporary storage matrix C [N N]=size(A); X=zeros(N,1); C=zeros(1,N+1); Az=[A B]; % 形成增广矩阵: Az=[A | B]
贵州师范大学数学与计算机科学学院
if a_max<1e-10 index=0; end if r>k %交换两行 for j=k:n z=A(k,j); A(k,j)=A(r,j); A(r,j)=z; end z=b(k); b(k)=b(r); b(r)=z; end return;
贵州师范大学数学与计算机科学学院
数值分析实验一 列主元消去法

数值分析实验一 列主元消去法一、实验目的:1)掌握列主元消去法的基本思想。
2)了解数值计算解线性方程组的实现范围、计算公式。
3)培养上机编程及调试的能力。
二、实验设备和实验环境操作系统: Windows XP Professional 软件: MATLAB7.0或Visual C++ 6.0 三、实验内容及要求:对于线性方程组 B Ax =,记方程组的系数矩阵为:⎪⎪⎪⎪⎪⎭⎫⎝⎛=nn n n n n αααααααααΑK M M M ΛΛ212222111211 , ⎪⎪⎪⎪⎪⎭⎫⎝⎛=n b b b B M 21 , ⎪⎪⎪⎪⎪⎭⎫ ⎝⎛=n x x x x M 21 用高斯列主元消元法求解。
并用高斯完全主元消去法和列主元消去法进行比较,同时得出高斯列主元消去法的优缺点。
四、算法描述: 1. 消元过程 对1,,1-=n k Λ (1)选主元: (a )按列选主元k p ,即确定r ,使得ik ni k rk k a a p ≤≤=≡max(b )若0=k p ,停止计算(c )若k r ≠(进行交换) ),,1,(n k k j a a rj ik Λ+=↔r k b b ↔ , det det ←(2)对:,,1n k i Λ+= ik kk ik ik a a a m ⇒=/ i k ik i b b a b ⇒-对:,,1n k j Λ+= ij kj ik ij a a a a ⇒-(3)det .det kk a ← 2.回代过程(a )若0=nn a ,输出失败信息,停止计算 (b )n nn n b a b ⇒/ det .det nn a ← (c )对1,,1Λ-=n i ∑+=⇒-ni j i iijiji b ab a b 1/)(注: 在计算程序中对0=k P 的判断用ε<k P (ε是预先设置的很小正数) 四、实验步骤与结果分析(一) 实验源程序function x=liezhuyuan(A,b) %列主元消去法% A,b 线性方程的系数矩阵 % x 求解函数向量 n=length(A); x=zeros(n,1); c=zeros(1,n); t=0; for i=1: n-1 max=abs(A(i,i));m=i; % 寻找最大主元 for j=i+1:nif max<abs(A(j,i)) max=abs(A(j,i)); m=j; end endif m~=i % 调换矩阵的两行 for k=1:n c(k)=A(i,k);A(i,k)=A(m,k);A(m,k)=c(k);endt=b(i);b(i)=b(m);b(m)=t;endfor k=i+1:n % 消元for j=i+1:nA(k,j)=A(k,j)-A(i,j)*A(k,i)/A(i,i);endb(k)=b(k)-b(i)*A(k,i)/A(i,i);A(k,i)=0;endendx(n)=b(n)/A(n,n);for i=n-1:-1:1 %迭代求解sum=0;for j=i+1:nsum=sum+A(i,j)*x(j);endx(i)=(b(i)-sum)/A(i,i);endfunction x=wanquanxiaoyuan(A,b) %完全消去法% A,b 线性方程的系数矩阵% x 求解函数向量n=length(A);x=zeros(n,1);xx=zeros(n,1);c=zeros(1,n);t=0;for i=1:nxx(i)=i;endfor i=1:n-1max=abs(A(i,i));m1=i; % 横向寻找最大主元 m2=i; % 纵向寻找最大主元 for j=i:nfor k=i:nif max<abs(A(j,k))max=abs(A(j,k));m1=j;m2=k;endendendif m1~=i % 调换矩阵的两行for k=1:nc(k)=A(i,k);A(i,k)=A(m1,k);A(m1,k)=c(k);endt=b(i);b(i)=b(m1);b(m1)=t;for q=1:nif xx(q)==m1 %记录换行的下标xx(q)=i;xx(i)=m1;endendendif m2~=ifor k=1:nc(k)=A(k,i);A(k,i)=A(k,m2);A(k,m2)=c(k);endendfor k=i+1:n % 消元for j=i+1:nA(k,j)=A(k,j)-A(i,j)*A(k,i)/A(i,i);endb(k)=b(k)-b(i)*A(k,i)/A(i,i);A(k,i)=0;endendx(n)=b(n)/A(n,n);for i=n-1:-1:1 %迭代求解sum=0;for j=i+1:nsum=sum+A(i,j)*x(j);endx(i)=(b(i)-sum)/A(i,i);endfor i=1:n % 回归x值下标的位置 for j=1:nif xx(i)==jtemp=xx(i);xx(i)=xx(j); xx(j)=temp;temp=x(i);x(i)=x(j); x(j)=temp; end end end(二) 实验数据⎪⎩⎪⎨⎧=++-=++-=++035.3643.5072.1835.2137.2623.4712.3347.1183.1555.3304.2101.0321321321x x x x x x x x x ⎪⎩⎪⎨⎧-=+--=-+-=--71912263532311321321321x x x x x x x x x MATLAB 程序如下:程序(1)程序(2)(三) 实验结果分析 结果:程序(1)运行结果:误差分析:程序(2)运行结果:误差分析:分析:高斯完全主元消去法和高斯列主元消去法相比较,每步消元过程所选主元的范围更广,故它对控制舍入误差更有效,求解结果更加精确可靠。
LU分解高斯消元列主元高斯消元matlab代码

数学实验作业一、矩阵LU分解:function [L,U,p]=lutx(A)[n,n]=size(A);p=(1:n)';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],:);p([k m])=p([m k]);endi=k+1:n;A(i,k)=A(i,k)/A(k,k);j=k+1:n;A(i,j)=A(i,j)-A(i,k)*A(k,j);endendL=tril(A,-1)+eye(n,n)U=triu(A)pend高斯消元法求解方程:n=3;a=[1 2 3 ;4 5 6 ;7 8 9 ];b=[17 18 19];l=eye(n);y=1;for i=1:(n-1)for j=1:(n-i)if a(j+(i-1)*n+y)~=0l(j+(i-1)*n+y)=a(j+(i-1)*n+y)/a(j+(i-1)*n+y-j)for k=1:(n-i+1)a(j+(i-1)*n+y+(k-1)*n)=a(j+(i-1)*n+y+(k-1)*n)-a(j+(i-1)*n+y+(k-1)*n-j)*l(j+(i-1)*n+y) endb(j+y-1)=b(j+y-1)-b(y)*l(j+(i-1)*n+y);endendy=y+1;endsum=0;for j=1:nsum=sum+x(j)+a(k,j);endsum=0;for j=1:nx(j)=0;endfor k=n:-1:1for j=1:nsum=sum+x(j)*a(k,j)endx(k)=(b(k)-sum)/a(k,k) sum=0;end列主元高斯消元法代码:n=3;a=[1 2 3 ;4 5 6 ;7 8 9 ]; b=[17 18 19];l=eye(n);p=eye(n);ma=0for i=1:(n-1)for j=i:nif a(j,i)>ma;ma=a(j,i)endendfor k=i:nif a(k,i)==mam=k;endendfor j=1:na1=a(m,j);a(m,j)=a(i,j);a(i,j)=a1p1=p(m,j);p(m(1),j)=p(i,j);p(i,j)=p1;endb1=b(m);b(m)=b(i);b(i)=b1;ma=0;endy=1;for i=1:(n-1)for j=1:(n-i)if a(j+(i-1)*n+y)~=0l(j+(i-1)*n+y)=a(j+(i-1)*n+y)/a(j+(i-1)*n+y-j)for k=1:(n-i+1)a(j+(i-1)*n+y+(k-1)*n)=a(j+(i-1)*n+y+(k-1)*n)-a(j+(i-1)*n+y+(k-1)*n-j )*l(j+(i-1)*n+y)endb(j+y-1)=b(j+y-1)-b(y)*l(j+(i-1)*n+y);endendy=y+1;endsum=0;for j=1:nx(j)=0;endfor k=n:-1:1for j=1:nsum=sum+x(j)*a(k,j)endx(k)=(b(k)-sum)/a(k,k)sum=0;end全主元高斯消元法代码:n=3;a=[1 2 3 ;4 5 6 ;7 8 9 ];b=[17 18 19];l=eye(n);p=eye(n);q=eye(n);max=0;for i=1:(n-1)for j=i:nfor k=i:nif max<abs(a(j,k)) max=abs(a(j,k));endendendfor j=i:nfor k=i:nif max==abs(a(j,k)) m=[j,k];endendendfor j=1:na1=a(m(1),j);a(m(1),j)=a(i,j);a(i,j)=a1;p1=p(m(1),j);p(m(1),j)=p(i,j);p(i,j)=p1;endb1=b(m(1));b(m(1))=b(i);b(i)=b1;for j=1:na1=a(j,m(2));a(j,m(2))=a(j,i);a(j,i)=a1;q1=q(j,m(2));q(j,m(2))=q(j,i);q(j,i)=q1;endmax=0;endy=1;for i=1:(n-1)for j=1:(n-i)if a(j+(i-1)*n+y)~=0l(j+(i-1)*n+y)=a(j+(i-1)*n+y)/a(j+(i-1)*n+y-j)for k=1:(n-i+1)a(j+(i-1)*n+y+(k-1)*n)=a(j+(i-1)*n+y+(k-1)*n)-a(j+(i-1)*n+y+(k-1)*n-j )*l(j+(i-1)*n+y);endb(j+y-1)=b(j+y-1)-b(y)*l(j+(i-1)*n+y);endendy=y+1;endsum=0;for j=1:nx(j)=0;endfor k=n:-1:1for j=1:nsum=sum+x(j)*a(k,j)endx(k)=(b(k)-sum)/a(k,k)sum=0;end解:编写矩阵:0 1 0 0 0 -1 0 0 0 0 0 0 00 0 1 0 0 0 0 0 0 0 0 0 0a 0 0 -1 -a 0 0 0 0 0 0 0 0a 0 -1 0 -a 0 0 0 0 0 0 0 00 0 0 1 0 0 0 -1 0 0 0 0 00 0 0 0 0 0 1 0 0 0 0 0 0 A= 0 0 0 0 a 1 0 0 -a -1 0 0 00 0 0 0 a 0 1 0 -a 0 0 0 00 0 0 0 0 0 0 0 0 1 0 0 -10 0 0 0 0 0 0 0 0 0 1 0 00 0 0 0 0 0 0 1 a 0 0 -a 00 0 0 0 0 0 0 0 a 0 1 a 00 0 0 0 0 0 0 0 0 0 0 a 1B= (0 10 0 0 0 0 0 15 0 20 0 0 0)’F= (f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13)’AF=B F=A\B程序及运算结果:>> a=sym(1/sqrt(2))a =2^(1/2)/2>> A=[0 1 0 0 0 -1 0 0 0 0 0 0 00 0 1 0 0 0 0 0 0 0 0 0 0a 0 0 -1 -a 0 0 0 0 0 0 0 0a 0 -1 0 -a 0 0 0 0 0 0 0 00 0 0 1 0 0 0 -1 0 0 0 0 00 0 0 0 0 0 1 0 0 0 0 0 00 0 0 0 a 1 0 0 -a -1 0 0 00 0 0 0 a 0 1 0 -a 0 0 0 00 0 0 0 0 0 0 0 0 1 0 0 -10 0 0 0 0 0 0 0 0 0 1 0 00 0 0 0 0 0 0 1 a 0 0 -a 00 0 0 0 0 0 0 0 a 0 1 a 00 0 0 0 0 0 0 0 0 0 0 a -1]A =[ 0, 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0] [ 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] [ 2^(1/2)/2, 0, 0, -1, -2^(1/2)/2, 0, 0, 0, 0, 0, 0, 0, 0][ 2^(1/2)/2, 0, -1, 0, -2^(1/2)/2, 0, 0, 0, 0, 0, 0, 0, 0][ 0, 0, 0, 1, 0, 0, 0, -1, 0, 0, 0, 0, 0] [ 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0] [ 0, 0, 0, 0, 2^(1/2)/2, 1, 0, 0, -2^(1/2)/2, -1, 0, 0, 0] [ 0, 0, 0, 0, 2^(1/2)/2, 0, 1, 0, -2^(1/2)/2, 0, 0, 0, 0] [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, -1] [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0] [ 0, 0, 0, 0, 0, 0, 0, 1, 2^(1/2)/2, 0, 0, -2^(1/2)/2, 0] [ 0, 0, 0, 0, 0, 0, 0, 0, 2^(1/2)/2, 0, 1, 2^(1/2)/2, 0] [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2^(1/2)/2, 1]>> B=[0;10;0;0;0;0;0;15;0;20;0;0;0] B =101520>> F=A\BF =10*2^(1/2)-101010-1010-15*2^(1/2)520-5*2^(1/2)5LU分解:>> a=2^(1/2)/2a =0.7071>> A=[0 1 0 0 0 -1 0 0 0 0 0 0 00 0 1 0 0 0 0 0 0 0 0 0 0a 0 0 -1 -a 0 0 0 0 0 0 0 0a 0 -1 0 -a 0 0 0 0 0 0 0 00 0 0 1 0 0 0 -1 0 0 0 0 00 0 0 0 0 0 1 0 0 0 0 0 00 0 0 0 a 1 0 0 -a -1 0 0 00 0 0 0 a 0 1 0 -a 0 0 0 00 0 0 0 0 0 0 0 0 1 0 0 -10 0 0 0 0 0 0 0 0 0 1 0 00 0 0 0 0 0 0 1 a 0 0 -a 00 0 0 0 0 0 0 0 a 0 1 a 00 0 0 0 0 0 0 0 0 0 0 a 1]A =Columns 1 through 80 1.0000 0 0 0 -1.0000 0 00 0 1.0000 0 0 0 0 00.7071 0 0 -1.0000 -0.7071 0 0 00.7071 0 -1.0000 0 -0.7071 0 0 00 0 0 1.0000 0 0 0 -1.00000 0 0 0 0 0 1.0000 00 0 0 0 0.7071 1.0000 0 00 0 0 0 0.7071 0 1.0000 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 01.00000 0 0 0 0 0 0 00 0 0 0 0 0 0 0Columns 9 through 130 0 0 0 00 0 0 0 00 0 0 0 00 0 0 0 00 0 0 0 00 0 0 0 0-0.7071 -1.0000 0 0 0-0.7071 0 0 0 00 1.0000 0 0 -1.00000 0 1.0000 0 00.7071 0 0 -0.7071 00.7071 0 1.0000 0.7071 00 0 0 0.7071 1.0000>> [L,U,P]=lu(A)L =Columns 1 through 81.0000 0 0 0 0 0 0 00 1.0000 0 0 0 0 0 00 0 1.0000 0 0 0 0 01.0000 0 -1.0000 1.0000 0 0 0 00 0 0 0 1.0000 0 0 00 0 0 0 1.0000 1.0000 0 00 0 0 0 0 0 1.0000 00 0 0 1.0000 0 0 01.00000 0 0 0 0 0 0 -1.00000 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0Columns 9 through 130 0 0 0 00 0 0 0 00 0 0 0 00 0 0 0 00 0 0 0 00 0 0 0 00 0 0 0 00 0 0 0 01.0000 0 0 0 00 1.0000 0 0 00 0 1.0000 0 01.0000 0 1.0000 1.0000 00 0 0 0.5000 1.0000U =Columns 1 through 80.7071 0 0 -1.0000 -0.7071 0 0 00 1.0000 0 0 0 -1.0000 0 00 0 1.0000 0 0 0 0 00 0 0 1.0000 0 0 0 00 0 0 0 0.7071 1.0000 0 00 0 0 0 0 -1.0000 1.0000 00 0 0 0 0 0 1.0000 00 0 0 0 0 0 0 -1.00000 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 0Columns 9 through 130 0 0 0 00 0 0 0 00 0 0 0 00 0 0 0 0-0.7071 -1.0000 0 0 00 1.0000 0 0 00 0 0 0 00 0 0 0 00.7071 0 0 -0.7071 00 1.0000 0 0 -1.00000 0 1.0000 0 00 0 0 1.4142 00 0 0 0 1.0000P =0 0 1 0 0 0 0 0 0 0 0 0 01 0 0 0 0 0 0 0 0 0 0 0 00 1 0 0 0 0 0 0 0 0 0 0 00 0 0 1 0 0 0 0 0 0 0 0 00 0 0 0 0 0 1 0 0 0 0 0 00 0 0 0 0 0 0 1 0 0 0 0 00 0 0 0 0 1 0 0 0 0 0 0 00 0 0 0 1 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 1 0 00 0 0 0 0 0 0 0 1 0 0 0 00 0 0 0 0 0 0 0 0 1 0 0 00 0 0 0 0 0 0 0 0 0 0 1 00 0 0 0 0 0 0 0 0 0 0 0 1>> F=U\(L\B)F =10.606637.500010.606627.5000-15.000010.606627.5000-10.60667.5000解:程序及运算结果:Lutx.m文件:function [L,U,p,sig] = lutx(A) %LU Triangular factorization% [L,U,p,sig] = lutx(A) computes a unit lower triangular % matrix L, an upper triangular matrix U, a permutation % vector p, and a scalar sig, so that L*U = A(p,:) and% sig = +1 or -1 if p is an even or odd permutation. [n,n] = size(A);p = (1:n)';w=0for k = 1:n-1% Find largest element below diagonal in k-th column [r,m] = max(abs(A(k:n,k)));m = m+k-1;% Skip elimination if column is zeroif (A(m,k) ~= 0)% Swap pivot rowif (m ~= k)A([k m],:) = A([m k],:);p([k m]) = p([m k]);w=w+1;end% Compute multipliersi = k+1:n;A(i,k) = A(i,k)/A(k,k);% Update the remainder of the matrixj = k+1:n;A(i,j) = A(i,j) - A(i,k)*A(k,j);endend% Separate resultL = tril(A,-1) + eye(n,n)U = triu(A)psig=(-1)^wmydet.m文件:function det=mydet(A)[L,U,p,sig] = lutx(A)det=sig*prod(diag(U))运行结果:>> a=2^(1/2)/2a =0.7071>> A=[0 1 0 0 0 -1 0 0 0 0 0 0 00 0 1 0 0 0 0 0 0 0 0 0 0a 0 0 -1 -a 0 0 0 0 0 0 0 0a 0 -1 0 -a 0 0 0 0 0 0 0 00 0 0 1 0 0 0 -1 0 0 0 0 00 0 0 0 0 0 1 0 0 0 0 0 00 0 0 0 a 1 0 0 -a -1 0 0 00 0 0 0 a 0 1 0 -a 0 0 0 00 0 0 0 0 0 0 0 0 1 0 0 -10 0 0 0 0 0 0 0 0 0 1 0 00 0 0 0 0 0 0 1 a 0 0 -a 00 0 0 0 0 0 0 0 a 0 1 a 00 0 0 0 0 0 0 0 0 0 0 a 1]A =Columns 1 through 80 1.0000 0 0 0 -1.0000 0 00 0 1.0000 0 0 0 0 00.7071 0 0 -1.0000 -0.7071 0 0 00.7071 0 -1.0000 0 -0.7071 0 0 00 0 0 1.0000 0 0 0 -1.00000 0 0 0 0 0 1.0000 00 0 0 0 0.7071 1.0000 0 00 0 0 0 0.7071 0 1.0000 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 01.00000 0 0 0 0 0 0 00 0 0 0 0 0 0 0Columns 9 through 130 0 0 0 00 0 0 0 00 0 0 0 00 0 0 0 00 0 0 0 00 0 0 0 0-0.7071 -1.0000 0 0 0-0.7071 0 0 0 00 1.0000 0 0 -1.00000 0 1.0000 0 00.7071 0 0 -0.7071 00.7071 0 1.0000 0.7071 00 0 0 0.7071 1.0000>> mydet(A)w =L =Columns 1 through 81.0000 0 0 0 0 0 0 00 1.0000 0 0 0 0 0 00 0 1.0000 0 0 0 0 01.0000 0 -1.0000 1.0000 0 0 0 00 0 0 0 1.0000 0 0 00 0 0 0 1.0000 1.0000 0 00 0 0 0 0 0 1.0000 00 0 0 1.0000 0 0 01.00000 0 0 0 0 0 0-1.00000 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 0Columns 9 through 130 0 0 0 00 0 0 0 00 0 0 0 00 0 0 0 00 0 0 0 00 0 0 0 00 0 0 0 00 0 0 0 01.0000 0 0 0 00 1.0000 0 0 00 0 1.0000 0 01.0000 0 1.0000 1.0000 00 0 0 0.5000 1.0000U =Columns 1 through 80.7071 0 0 -1.0000 -0.7071 0 0 00 1.0000 0 0 0 -1.0000 0 00 0 1.0000 0 0 0 0 00 0 0 1.0000 0 0 0 00 0 0 0 0.7071 1.0000 0 00 0 0 0 0 -1.0000 1.0000 00 0 0 0 0 0 1.0000 00 0 0 0 0 0 0 -1.00000 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 0Columns 9 through 130 0 0 0 00 0 0 0 00 0 0 0 00 0 0 0 0-0.7071 -1.0000 0 0 00 1.0000 0 0 00 0 0 0 00 0 0 0 00.7071 0 0 -0.7071 00 1.0000 0 0 -1.00000 0 1.0000 0 00 0 0 1.4142 00 0 0 0 1.0000p =31247865119101213sig =-1L =Columns 1 through 81.0000 0 0 0 0 0 0 00 1.0000 0 0 0 0 0 00 0 1.0000 0 0 0 0 01.0000 0 -1.0000 1.0000 0 0 0 00 0 0 0 1.0000 0 0 00 0 0 0 1.0000 1.0000 0 00 0 0 0 0 0 1.0000 00 0 0 1.0000 0 0 01.00000 0 0 0 0 0 0 -1.00000 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 0Columns 9 through 130 0 0 0 00 0 0 0 00 0 0 0 00 0 0 0 00 0 0 0 00 0 0 0 00 0 0 0 00 0 0 0 01.0000 0 0 0 00 1.0000 0 0 00 0 1.0000 0 01.0000 0 1.0000 1.0000 00 0 0 0.5000 1.0000U =Columns 1 through 80.7071 0 0 -1.0000 -0.7071 0 0 00 1.0000 0 0 0 -1.0000 0 00 0 1.0000 0 0 0 0 00 0 0 1.0000 0 0 0 00 0 0 0 0.7071 1.0000 0 00 0 0 0 0 -1.0000 1.0000 00 0 0 0 0 0 1.0000 00 0 0 0 0 0 0 -1.00000 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 0Columns 9 through 130 0 0 0 00 0 0 0 00 0 0 0 00 0 0 0 0-0.7071 -1.0000 0 0 00 1.0000 0 0 00 0 0 0 00 0 0 0 00.7071 0 0 -0.7071 00 1.0000 0 0 -1.00000 0 1.0000 0 00 0 0 1.4142 00 0 0 0 1.0000 p =31247865119101213sig =-1ans =-0.5000解:程序及运算结果:function [L,U,p] = lutx1(A)[n,n] = size(A);p = (1:n)';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],:);p([k m]) = p([m k]);endfor i=k+1:nA(i,k)=A(i,k)/A(k,k);endfor j=k+1:nA(i,j)=A(i,j)-A(i,k)*A(k,j);endendendL=tril(A,-1)+eye(n,n)U=triu(A)运行结果:>> lutx1(A)L =1 0 0 0 0 0 0 0 0 0 0 0 00 1 0 0 0 0 0 0 0 0 0 0 00 0 1 0 0 0 0 0 0 0 0 0 00 0 0 1 0 0 0 0 0 0 0 0 01 0 -1 0 1 0 0 0 0 0 0 0 00 0 0 0 -1 1 0 0 0 0 0 0 00 0 0 0 0 0 1 0 0 0 0 0 00 0 0 0 0 0 0 1 0 0 0 0 00 0 0 0 -1 0 1 0 1 0 0 0 00 0 0 0 0 0 0 0 0 1 0 0 00 0 0 0 0 0 0 0 0 0 1 0 00 0 0 0 0 0 0 0 -1 0 1 1 00 0 0 0 0 0 0 0 0 0 0 1 1 U =Columns 1 through 80.7071 0 0 -1.0000 -0.7071 0 0 00 1.0000 0 0 0 -1.0000 0 00 0 1.0000 0 0 0 0 00 0 0 1.0000 0 0 0 -1.00000 0 0 0 -0.7071 0 0 00 0 0 0 0 1.0000 0 00 0 0 0 0 0 1.0000 00 0 0 0 0 0 01.00000 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 0Columns 9 through 130 0 0 0 00 0 0 0 00 0 0 0 00 0 0 0 00 0 0 0 0-0.7071 -1.0000 0 0 00 0 0 0 00.7071 0 0 -0.7071 0-0.7071 0 0 0 00 1.0000 0 0 -1.00000 0 1.0000 0 00 0 0 0.7071 00 0 0 0 1.0000ans =1 0 0 0 0 0 0 0 0 0 0 0 00 1 0 0 0 0 0 0 0 0 0 0 00 0 1 0 0 0 0 0 0 0 0 0 00 0 0 1 0 0 0 0 0 0 0 0 01 0 -1 0 1 0 0 0 0 0 0 0 00 0 0 0 -1 1 0 0 0 0 0 0 00 0 0 0 0 0 1 0 0 0 0 0 00 0 0 0 0 0 0 1 0 0 0 0 00 0 0 0 -1 0 1 0 1 0 0 0 00 0 0 0 0 0 0 0 0 1 0 0 00 0 0 0 0 0 0 0 0 0 1 0 00 0 0 0 0 0 0 0 -1 0 1 1 00 0 0 0 0 0 0 0 0 0 0 1 1。