资源简介
利用初等行变换求解矩阵满秩分解,可选择由系统自动生成随机矩阵或自行输入待求解矩阵。
代码片段和文件信息
#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++二级考试试题含答案和解析
- 序列比对打分矩阵C++(实验报告+源程
- c语言关键字汇总
- C语言实现ARP攻击
- C++矩阵变换操作平移、旋转、镜像
- 用C语言写的坡度算法
- c语言实现找零钱问题
- C语言课程设计-汉诺塔的演示
- C语言C++通用自定义log打印函数
- 基于c语言的图书管理系统毕业论文
- 实现追赶法求解三对角矩阵方程组的
- c语言 图书管理系统87261
- C语言实现心跳包Heart Beat
- Modbus源码(PIC单片机版)
- 表达式求值C语言实现
- 井字棋用C语言写的源代码
- C语言画图程序代码
- 计算机图形学大作业 二维图形变换
- 矩阵运算C语言实现
- Yuneec ST24解码器C语言源码
- 最新快速傅里叶计算,C语言的FFT程序
- c语言矩阵运算程序
- 纯C语言实现工资管理系统
- c语言实现获取文件的md5哈希值
- 4X4矩阵键盘+LCD1602显示
- C语言求first集sellect集follow集
- C语言编程规范个人规约
- 51单片机驱动步进电机(含电路图和
- C语言课程设计—运动会管理系统(
- c语言课程设计 简易通讯录 源代码
评论
共有 条评论