内容发布更新时间 : 2024/12/28 15:47:13星期一 下面是文章的全部内容请认真阅读。
数值分析实验报告
姓 名 燕江弟 学 号 指 导 教 师 课题二 2015– 2016第二学期 评定人签字 评 定 日 期 20144671 冯男 班 级 软件1404班 实验名称 开 设 学 期 评 定 成 绩
东北大学
一、实验要求
1) 建立矩阵求逆的算法公式
2) 编制下三角部分消元,上三角部分消元和对角元单位化等子程序 3) 应用结构程序设计编程出求n阶矩阵的逆矩阵的通用程序
二、实验目的与意义
1) 通过该课题的实验,掌握求逆矩阵的程序设计方法
2) 学会利用矩阵求逆运算求解线性方程组的方法,提高数值方法的运用和
编程的能力
三、实验环境
编译环境:Visual C++6.0。 编译语言:C++
四、实验过程与分析:
(1)求已知矩阵的逆:(以四阶为例) #include
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 < n; j++){ printf(\printf(\ 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 (i=0;i 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;i { 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矩阵的逆