资源简介
利用初等行变换求解矩阵满秩分解,可选择由系统自动生成随机矩阵或自行输入待求解矩阵。
代码片段和文件信息
#include
#include
#include
#include
void info(void);
int choose(void);
int input_row(void);
int input_col(void);
double** input_matrix(int rowint col);
double** rand_matrix(int rowint col);
double** init_mat(double** aint rowint col);
void disp_aug_mat(double** matint rowint col);
double** elem_trans(double** matint rowint col);
int detect_zero(double** aint row);
double** reg(double** aint rowint col);
void disp_trans_mat(double** matint rowint col);
int get_rank(double** matint rowint col);
double** get_c(double** matint rowint colint rank);
void disp_c(double** bint rankint col);
double** init_b(double** matint rowint col);
double** get_inv(double** matint nint rank);//n=rowb=mat
double th=0.00000001;//判断浮点数是否为零用
int main(int argcchar** argv)
{
int rowcoloptrank;
double** a**mat**b**c;
info();
opt=choose();
row=input_row();
col=input_col();
switch(opt)
{
case 1:
a=input_matrix(rowcol);
break;
case 2:
a=rand_matrix(rowcol);
break;
}
mat=init_mat(arowcol);
disp_aug_mat(matrowcol);
mat=elem_trans(matrowcol);
disp_trans_mat(matrowcol);
rank=get_rank(matrowcol);
c=get_c(matrowcolrank);
disp_c(crankcol);
b=init_b( matrowcol);
b=get_inv(browrank);
system(“pause“);
return 0;
}
void info(void)
{
printf(“\n本程序基本思想对[A I]进行初等行变换,当A化为阶梯阵C时I就成为B的逆矩阵.\n“);
}
int choose(void)
{
int opt;
printf(“\n请选择是 1:自己输入矩阵;2:系统随机生成矩阵.选择输入1或2.\n“);
scanf(“%d“&opt);
fflush(stdin);
if(opt!=1&&opt!=2)
{
printf(“非法输入!\n“);
exit(0);
}
return opt;
}
int input_row(void)
{
int n;
printf(“请输入矩阵的行数:\n“);
scanf(“%d“&n);
fflush(stdin);
if(n<=0)
{
printf(“非法输入!\n“);
exit(0);
}
return n;
}
int input_col(void)
{
int n;
printf(“请输入矩阵的列数:\n“);
scanf(“%d“&n);
fflush(stdin);
if(n<=0)
{
printf(“非法输入!\n“);
exit(0);
}
return n;
}
double** input_matrix(int rowint col)
{
int ij;
double** a;
a=new double*[row];
for(i=0;i
a[i]=new double[col];
printf(“请输入矩阵元素:\n“);
for(i=0;i
for(j=0;j scanf(“%lf“&a[i][j]);
printf(“输入的矩阵为:\n“);
for(i=0;i
for(j=0;j {
printf(“%10lf“a[i][j]);
if(j==col-1)
printf(“\n“);
}
return a;
}
double** rand_matrix(int rowint col)
{
int ij;
double** a;
a=new double*[row];
for(i=0;i
a[i]=new double[col];
srand(int(time(0)));
for(i=0;i
for(j=0;j {
a[i][j]=rand()%100;
}
printf(“随机生成的矩阵为:\n“);
for(i=0;i
for(j=0;j {
printf(“%10lf“a[i][j]);
if(j==col-1)
printf(“\n“);
}
return a;
}
double** init_mat(double** aint rowint col)
{
double** mat;
int ij;
mat=new double*[row];
for(i=0;i
mat[i]=new double[row+col];
for(i=0;i
for(j=0;j mat[i][j]=a[i][j
- 上一篇:C++二级考试试题含答案和解析
- 下一篇:MFC实现可拖动的按钮
相关资源
- 操作系统c语言模拟文件管理系统844
- C语言开发实战宝典
- C++中头文件与源文件的作用详解
- C语言代码高亮html输出工具
- 猜数字游戏 c语言代码
- C语言课程设计
- 数字电位器C语言程序
- CCS FFT c语言算法
- 使用C语言编写的病房管理系统
- 通信过程中的RS编译码程序(c语言)
- 计算机二级C语言上机填空,改错,编
- 用回溯法解决八皇后问题C语言实现
- 简易教务管理系统c语言开发文档
- 操作系统课设 读写者问题 c语言实现
- 小波变换算法 c语言版
- C流程图生成器,用C语言代码 生成C语
- 3des加密算法C语言实现
- 简单的C语言点对点聊天程序
- 单片机c语言源程序(51定时器 八个按
- 个人日常财务管理系统(C语言)
- c语言电子商务系统
- 小甲鱼C语言课件 源代码
- 将图片转换为C语言数组的程序
- C语言实现的一个内存泄漏检测程序
- DES加密算法C语言实现
- LINUX下命令行界面的C语言细胞游戏
- 用单片机控制蜂鸣器播放旋律程序(
- 学校超市选址问题(数据结构C语言版
- 电子时钟 有C语言程序,PROTEUS仿真图
- 尚观培训linux许巍老师关于c语言的课
评论
共有 条评论