【最新】lu分解步骤-word范文模板 (11页)

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

本文部分内容来自网络整理,本司不为其真实性负责,如有异议或侵权请及时联系,本司将立即删除!
== 本文为word格式,下载后可方便编辑和修改! ==
lu分解步骤
篇一:选主元LU分解过程中的步骤
1
PA=LUP=PN-1PN-2?P1
-1-1-1-1PN-1PN-2?P1A=LUA=(P1P2?PN-2PN-1)LU=(PN-1PN-2?P1)LU
-1而方阵置换矩阵Pm=P,则有
A=(P1P2?PN-2PN-1)LU-1m
2
A
-1=U-1L(P1P2?PN-1)-1-1=U-1LPN-1?P2P1-1-1-1-1=U-1LPN-1?P2P1-1 篇二:LU分解法程序及其运行结果
实验报告线性方程组的求解
一.上机题目
已知方程组为:
x1-2*x2+2*x3=-2;
2*x1-3*x2-3*x3=4;
4*x1+x2+6*x3=3;
分别用矩阵的三角分解法和高斯列主元消去法求方程组
的解
二.目的要求
掌握用矩阵的三角分解法和高斯列主元消去法设计程序,从而实现对线性方程组的求解。

三.方法原理
1.高斯消去法是通过逐步消元的方法把原方程组化为等价的上三角形方程组,然后回代的求解过程。

高斯列主元消去法是在高斯消去法第k步时,不取
a[k][k]作为主元,而是取满足|a[r][k]|=max|a[i][k]|(k<=i<=n)的a[r][k]作为主元,若有多个r满足则取最小的,然后再去交换第r行与第k行;最后利用高斯消元法求解。

2. 矩阵的三角分解法是方程组的系数矩阵A可以分解为一个下三角阵L和一个上三角阵U的乘积,即A=LU,则AX=b为LUX=b,根据Ly=b和UX=y求出方程组的解。

其中求L,U的过程为:先计算U的第一行和L的第一列
U[1][j]=a[1][j](1<=j<=n),L[i][1]=a[i][1]/U[1][1];然后根据
U[k][j]=a[k][j]-∑L[k][r]*U[r][j](1<=r<=k-1;j=k,k+1,…n)
和L[i][k]=(a[i][k]-∑L[i][r]*U[r][k])/U[k][k](1<=r<k-1;i=k+1,…n)计算出U的第k行和L的第k列,从而求出L和U矩阵
四.算法步骤(N-S流程图)
1.矩阵的三角分解法算法步骤如下:
Step1:计算U的第一行和L的第一列
U的第一行:i=1时a[1][j]=L[1][1]*U[1][j]则U[1][j]=a[1][j]L[1][1]=1 (j=1,2,…n );
L的第一列:j=1时 a[i][1]=L[i][1]*U[1][1]则L[i][1]=a[i][1]/a[1][j] (i=2,3,…n);
Step2:计算U的第二行和L的第二列
U的第二行:i=2时a[2][j]=L[2][1]*U[1][j]+L[2][2]*U[2][j]L[2][2]=1则U[2][j]=a[2][j] –L[2][1]*U[1][j](j=2,3,…n);
L的第二列:j=2时 a[i][2]=L[i][1]*U[1][2]]+L[i][2]*U[2][2]则
L[i][2]=(a[i][2]-L[i][1]*U[1][2])/U[2][2] (i=3,4,…n);
Step3:假设已经进行了(k-1)步,得到了U的前k-1行和L的前k-1列,则计算U的第k行和L的第k列
U的第k行:i=k时 U[k][j]=a[k][j]-∑L[k][r]*U[r][j]
(1<=r<=k-1;j=k,k+1,…n)
L的第k列:j=k时 L[i][k]=(a[i][k]-∑
L[i][r]*U[r][k])/U[k][k] (1<=r<k-1;i=k+1,…n)
Step4:利用L,U求解方程组的解
根据A=L*U,A*X=y,从而得到 Ly=b和UX=y,然后根据高斯消元法的回代部分即可分别求出y和x
2. 高斯列主元消去法算法步骤如下:
Step1:选出列主元
a[r][k]=max|a[i][k]| (k<=i<=n);
Step2:判断方程组是否适合使用该方法求解
若a[r][k]<e,则方程组不适合使用该方法求解,程序结束,否则进行下一步
Step3:若r不等于k,交换r,k行
Step4:高斯消元求解过程
消元过程:当k=0,i=1时,令a[1][0]=a[1][0]/a[0][0]; b[1]=b[1]-
a[1][0]*b[1]; j=1时a[1][1]=a[1][1]-a[1][0]*a[0][1]
当消元进行到第k次时,令
a[k][k-1]=a[k][k-1]/a[k-1][k-1]; b[k]=b[k]-a[k][k-1]*b[k]; j=k时
a[k][k]=a[k][k]-a[k][k-1]*a[k][k-1]
回代求解过程:b[n-1]=b[n-1]/a[n-1][n-1];
当k=n-1时,b[k]=(b[k]-∑a[k][j]*b[j])/a[k][k]
(k+1<=j<=n;k=n-1,n-2,...1);
返回值b[k]即为所求解。

五.C语言程序及变量说明
<1>利用矩阵的三角分解法即LU分解法求解线性方程组的解程序部分:
/*矩阵的三角分解法即Lu分解法*/
#include<stdio.h>
#include<math.h>
int i,j,k,r;
double m=0,p=0;
double a[3][3];
void lu(double a[3][3])
{
for(i=1;i<=2;i++)
{
if(a[0][0]!=0)
a[i][0]=a[i][0]/a[0][0];
}
/*先求出第一行和第一列的仍就放在a[][]数组中*/ for(k=1;k<=2;k++)
{
for(j=k;j<=2;j++)
{
{
for(r=0;r<=k-1;r++)
m=m+a[k][r]*a[r][j];
}
a[k][j]=a[k][j]-m;
m=0;
}。

相关文档
最新文档