n维矩阵乘法:A B-1

来源:百度知道 编辑:UC知道 时间:2024/06/05 09:26:48
数据结构课程设计 这个比较麻烦
功能:
设计一个矩阵相乘的程序,首先从键盘输入两个矩阵a,b的内容,并输出两个矩阵,输出ab-1结果。
分步实施:
1.初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;
2.完成最低要求:建立一个文件,可完成2维矩阵的情况;
3.进一步要求:通过键盘输入维数n。有兴趣的同学可以自己扩充系统功能。
要求:
1.界面友好,函数功能要划分好
2.总体设计应画一流程图
3.程序要加必要的注释
4.要提供程序测试方案
5.程序一定要经得起测试,宁可功能少一些,也要能运行起来,不能运行的程序是没有价值的。

声名一点。不要现在网上已经有的答案~流程图也要~~可以追加分数~谢谢~
B-1就是B的逆矩阵的意思,用 C语言~~谢谢

求逆矩阵很费时间,我不知道太大的矩阵会有多慢。你自己试试吧。以下是代码:

#include <stdio.h>
#include <stdlib.h>

struct matrix{
int row;
int column;
double ***m;
};

typedef struct matrix Matrix;

double determinant(Matrix ma){
if(ma.row==1&&ma.column==1) return ***(ma.m);
else{
int i,j,k,l;
double sum=0;
for(i=0;i<ma.column;i++){
Matrix t;
t.row=ma.row-1;
t.column=ma.column-1;
t.m=(double ***)calloc(t.row,sizeof(double **));
for(j=0;j<t.row;j++){
*(t.m+j)=(double **)calloc(t.column,sizeof(double *));
k=0;l=0;
while(k<ma.column){
if(k!=i){
*(*(t.m+j)+l)=*(*(ma.m+j+1)+k);
l++;
}
k++;
}
}
double sign=i%2==0?1.0:-1.0;
sum=sum+(*(*(*ma.m+i)))*sign*determinant(t);

for(j=0;j<t.row;j++)
free(*(t.m+j));
free(t.m);