C 语言课程设计
设计题目:矩阵 LU 分解
1、设计内容
用 C 语言实现矩阵的 lu 分解,该程序主要应用于矩阵分解,包括输
入一个方阵、输出输入的方针、对输入的方阵进行 ldu 分解、输出分解后
的结果。
2、设计目的
我的课题为《矩阵 lu 分解》,要求为输入一个方阵、输出输入的方针、
对输入的方阵进行 lu 分解、输出分解后的结果。
做这次设计是为了进一步巩固《C 语言程序设计》所学的知识,特别
加强数组,指针,结构体,文件数据类型的应用,熟悉面向过程的结构化
和面向对象可视化程序设计方法,培养结构化程序设计的思想,加深对高
级语言基本语言要素和控制结构的理解,锻炼程序设计的能力,以及 C 语
言解决实际问题的能力,为以后后续课程的学习打好基础。
3、设计思路
3.1、程序主要功能模块
3.1.1 输入一个方阵
应用二维数组输入一个方阵,并应用一个二维数组输出这个输入
的矩阵
3.1.2、计算过程
程序会对使用者输入的矩阵进行 LDU 分解,分别输出进行 LDU 分解后
的 L.D.U 可视性强。
程序由多个 for 语句组成,条理清晰,方便扩展,各个功能模块被主
函数组织起来,逐步进行,输出地结果清晰明了。
3.2、输出结果
3.3、调试分析
3.3.1、编写程序要规范
3.3.2、输入矩阵
输入矩阵时给让使用者有清晰的、明确的视觉感受,让使用者能够知
道自己输入的数据在矩阵中的位置,不至于输入错误!
4、程序代码
#include
#define
N 4
void main()
{
double
a[N][N];//={{4,2,1,5},{8,7,2,10},{4,8,3,6},{12,6,11,20}};
double L[N][N],U[N][N],D[N][N];
int n=4;
1
int k,i,j;
double s,t;
printf("请输入一个方阵\n");
for(i=0;i
{
}
a[0][j]=a[0][j];///////////////输出第一行作为 U 的第一行
for(i=1;i
t=t+a[k][j]*a[j][i];
}
a[k][i]=(a[k][i]-t)/a[i][i];
}
}
for(i=0;i
j)
{
L[i][j]=a[i][j];
U[i][j]=0;
D[i][j]=0;
}
else
{
if(ielse
L[i][j]=1;
D[i][j]=a[i][j];
U[i][j]=1;
{
}
}
}
}
printf("\nL[N][N]=");
////////////////////////////输出 L 矩阵
for(i=0;i
printf("\n");
for(j=0;j
5.2、输入一个 4*4 的矩阵,运行结果为:
5.3、进行 LDU 分解后,运行结果为:
7