东北大学数值分析课题2实验报告 下载本文

内容发布更新时间 : 2024/12/28 15:47:13星期一 下面是文章的全部内容请认真阅读。

数值分析实验报告

姓 名 燕江弟 学 号 指 导 教 师 课题二 2015– 2016第二学期 评定人签字 评 定 日 期 20144671 冯男 班 级 软件1404班 实验名称 开 设 学 期 评 定 成 绩

东北大学

一、实验要求

1) 建立矩阵求逆的算法公式

2) 编制下三角部分消元,上三角部分消元和对角元单位化等子程序 3) 应用结构程序设计编程出求n阶矩阵的逆矩阵的通用程序

二、实验目的与意义

1) 通过该课题的实验,掌握求逆矩阵的程序设计方法

2) 学会利用矩阵求逆运算求解线性方程组的方法,提高数值方法的运用和

编程的能力

三、实验环境

编译环境:Visual C++6.0。 编译语言:C++

四、实验过程与分析:

(1)求已知矩阵的逆:(以四阶为例) #include #include #define N 4 int 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 < 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;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矩阵的逆