第一范文网 - 专业文章范例文档资料分享平台

矩阵LU分解求逆详细分析与C语言实现

来源:用户分享 时间:2025/7/7 20:08:01 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

(3)求A的逆矩阵

由式(10)可计算得到矩阵A的逆,如下:A?1?u?l??0.25?0.166667?0.125?4.5????00.3333300???000.5?2??1?2?????0004???3??1.916667??8.833334?3.666675.5?4.5????0.666670.3333300???5.333333?2.666673?2????7.6666673.33333?54??由程序计算出的结果如下:

01?20.8333300?00?10???1.251??9

2、C语言程序设计及测试 2.1 算法c程序实现

#include #include #define N 4 void main() { float a[N][N];

float L[N][N],U[N][N],out[N][N], out1[N][N];

float r[N][N],u[N][N]; memset( a , 0 , sizeof(a)); memset( L , 0 , sizeof(L)); memset( U , 0 , sizeof(U)); memset( r , 0 , sizeof(r)); memset( u , 0 , sizeof(u)); int n=N; int k,i,j; int flag=1; float s,t;

////////////////////input a matrix//// printf(\ for(i=0;i

scanf(\//////////////////figure the input

matrix////////////////////////// printf(\输入矩阵:\\n\for(i=0;i

for(j=0;j

a[0][j]=a[0][j]; //计算U矩阵的第一行

for(i=1;i

a[i][0]=a[i][0]/a[0][0]; //计算L矩阵的第1列

for(k=1;k

for(j=k;j

for (i=0;i

10

s=s+a[k][i]*a[i][j]; //累加 a[k][j]=a[k][j]-s; //计算U矩阵的其他元素 }

for(i=k+1;i

for(j=0;j

t=t+a[i][j]*a[j][k]; //累加 a[i][k]=(a[i][k]-t)/a[k][k]; //计算L矩阵的其他元素 } }

for(i=0;ij)

{ L[i][j]=a[i][j]; U[i][j]=0;}//如果i>j,说明行大于列,计算矩阵的下三角部分,得出L的值,U的//为0 else

{ U[i][j]=a[i][j];

if(i==j) L[i][j]=1; //否则如果i

if(U[1][1]*U[2][2]*U[3][3]*U[4][4]==0){

flag=0;

printf(\逆矩阵不存在\ if(flag==1){

/////////////////////求L和U矩阵的逆

for (i=0;i

for (k=i-1;k>=0;k--) {s=0;

for (j=k+1;j<=i;j++) s=s+U[k][j]*u[j][i];

u[k][i]=-s/U[k][k];//迭代计算,按列倒序依次得到每一个值, } }

for (i=0;i

for (k=i+1;k

r[k][i]=r[k][i]-L[k][j]*r[j][i]; //迭代计算,按列顺序依次得到每一个值 } }

/////////////////绘制矩阵LU分解后的L和U矩阵///////////////////////

printf(\分解后L矩阵:\ for(i=0;i

printf(\ }

printf(\分解后U矩阵:\ for(i=0;i

printf(\ }

printf(\

////////绘制L和U矩阵的逆矩阵 printf(\矩阵的逆矩阵:\ for(i=0;i

printf(\ }

printf(\矩阵的逆矩阵:\ for(i=0;i

printf(\ }

printf(\

//验证将L和U相乘,得到原矩阵 printf(\矩阵和U矩阵乘积\\n\ for(i=0;i

11

}

for(i=0;i

for(j=0;j

{out[i][j]+=L[i][k]*U[k][j];} } }

for(i=0;i

for(j=0;j

printf(\ }

//////////将r和u相乘,得到逆矩阵 printf(\原矩阵的逆矩阵:\\n\ for(i=0;i

2.2 数据测试 (1)非满秩矩阵

1>、整数矩阵

for(j=0;j

for(i=0;i

for(i=0;i

printf(\ } } }

12

搜索更多关于: 矩阵LU分解求逆详细分析与C语言实现 的文档
矩阵LU分解求逆详细分析与C语言实现.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c58wpf7x3u844p5c1cp2i5zpak1cslt00d8z_3.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top