#include<iostream>
//#include <stdlib.h>
//#include <math.h>
//#include <stdio.h>
#include <string.h>
void pluse (int a1[][3],int b1[][3]);//矩阵相加
void time(int a1[][3],int b1[][3]);//矩阵相乘
void minus(int a1[][3],int b1[][3]);//矩阵相减
void print(int a[][4]); //输出矩阵
void MatrixTranspose(double a[4][4],double b[4][4]);//转置矩阵
//int *JUZHEN(int *a,int *b,int i,int j,int m,int n);
double MatrixDeterminant(double *a,double *b,int m,int n);//矩阵行列式
//int * bansui(double *a,double *b,int m,int n);//求出伴随矩阵
//void JUZHEN1(double *a,double *b,int m,int n);//求出逆矩阵
void main()
{
double b[4][4];
int m,n;
int i,j;
int a1[3][3],b1[3][3];
//读取矩阵消息,两个矩阵大小3*3
printf("Enter A :");
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%d",&a1[i][j]);
printf("Enter B :");
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%d",&b1[i][j]);
//实现两个矩阵加减乘运算
pluse(a1,b1);
minus(a1,b1);
time(a1,b1);
//实现矩阵的转置和求逆运算
double a[4][4]={ {1,1,1,1},{2,2,2,2},{3,3,3,3},{4,4,4,4}};
MatrixTranspose(a,b); //矩阵转置
//JUZHEN1(a,b,4,4); //求出逆矩阵
}
//子函数
//输出矩阵
void print(double a[4][4])
{
int i,j;
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{ printf("%f",*(*(a+i)+j));
if((j+1)%4==0)
printf("\n");
}
}
}
/*加法*/
void pluse(int a1[3][3],int b1[3][3])
{
int i,j;
int c1[3][3];
printf("c=A+B=");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
c1[i][j]=a1[i][j]+b1[i][j];
printf("%d",c1[i][j]);
if((j+1)%3==0)
printf("\n");
}
}
//return c;
}
/*减法*/
void minus(int a1[3][3],int b1[3][3])
{
int i,j;
int c1[3][3];
printf("C=A-B=");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
c1[i][j]=a1[i][j]-b1[i][j];
printf(" %d",c1[i][j]);
if((j+1)%3==0)
printf("\n");
}
}
}
//乘法运算
void time(int a1[3][3],int b1[3][3])
{
int i,j;
int c1[3][3];
for(i=0;i<3;i++)
for(j=0;j<3;j++)
c1[i][j]=0;
printf("c=A*B=");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
for(int k=0;k<3;k++)
{
c1[i][j]+=a1[i][k]*b1[k][j];
}
printf("%d",c1[i][j]);
if((j+1)%3==0)
printf("\n");
}
}
}
//矩阵转置
void MatrixTranspose(double a[4][4],double b[4][4])
{
int i,j;
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
*(*(b+j)+i)=*(*(a+i)+j);
}
print(b);//输出函数
}
/*//求矩阵对应行列式的值
double MatrixDeterminant(double *a,double *b,int m,int n)
{
int i=0,j,*c=NULL,*d=NULL;
double mo=0;
c=(int *)calloc((m-1)*(n-1),sizeof(int));
d=(int *)calloc((m-1)*(n-1),sizeof(int));
for(j=0;j<n;j++)
{
if(n==1)
mo=(double)(*(a+i*n+j))*pow(-1,i+j+2);
c=JUZHEN(a,b,0,j,m,n);//这里要用到的函数是上面的函数
mo+=(double)*(a+i*n+j)*pow(-1,i+j+2)*MatrixDeterminant(c,d,m-1,n-1);//函数递归调用
}
return mo;
}
//求出伴随矩阵
int * bansui(double *a,double *b,int m,int n)
{
int i,j,*c=NULL,*d=NULL,*p=NULL;
double mo;
p=(int *)calloc(m*n,sizeof(int));
c=(int *)calloc((m-1)*(n-1),sizeof(int));
d=(int *)calloc((m-1)*(n-1),sizeof(int));
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
c=JUZHEN(a,b,i,j,m,n);
mo=pow(-1,i+j+2)*juzhenmc(c,d,m-1,n-1);
*(p+i*n+j)=mo;
}
}
return p;
}
//求矩阵的逆矩阵
void JUZHEN1(double *a,double *b,int m,int n)
{
int *p=NULL,i,j;
p=(int *)calloc(m*n,sizeof(int));
p=bansui(a,b,m,n); //求出伴随矩阵
juzhenzz(p,b,m,n); //矩阵转置
print(b,n,m); //输出函数
}
//删除矩阵中该元素所在的行和列,得到了新的二维数组
/*int *JUZHEN(int *a,int *b,int i,int j,int m,int n)
{
int I=0,J;
while(I<i)
{ J=0;
while(J<j)
{
*(b+I*(n-1)+J)=*(a+I*n+J);
J++;
}
J++;
while(J>j&&J<n)
{
*(b+I*(n-1)+J-1)=*(a+I*n+J);
J++;
}
I++;
}
I++;
while(I>i&&I<m)
{
J=0;
while(J<j)
{
*(b+(I-1)*(n-1)+J)=*(a+I*n+J);
J++;
}
J++;
while(J>j&&J<n)
{
*(b+(I-1)*(n-1)+J-1)=*(a+I*n+J);
J++;
}
I++;
}
return b;
}*/
没有合适的资源?快使用搜索试试~ 我知道了~
矩阵运算c语言实现经典(自编)
共23个文件
cpp:3个
opt:3个
dsp:2个
4星 · 超过85%的资源 需积分: 33 29 下载量 120 浏览量
2010-04-09
21:43:29
上传
评论
收藏 356KB RAR 举报
温馨提示
鉴于c语言的广泛运用,本人在此自己编写了基本的矩阵运算C语言实现,希望与大家一起享用
资源推荐
资源详情
资源评论
收起资源包目录
矩阵运算.rar (23个子文件)
矩阵运算
juzhenchengfa.cpp 2KB
juzhenchengfa.opt 48KB
yry.plg 4KB
chengfa.cpp 2KB
juzhenchengfa.ncb 41KB
yry.cpp 4KB
yry.dsw 514B
Debug
chengfa.obj 5KB
yry.exe 264KB
vc60.pdb 100KB
juzhenchengfa.pch 215KB
vc60.idb 121KB
yry.pdb 577KB
yry.opt 43KB
yry.obj 18KB
yry.pch 215KB
yry.ilk 370KB
juzhenchengfa.dsp 3KB
yry.ncb 49KB
yry.dsp 3KB
juzhenchengfa.dsw 534B
yry.opt 48KB
juzhenchengfa.plg 4KB
共 23 条
- 1
资源评论
- cj1181142013-06-26一般般,自己修改了一下才勉强运行
- LanceLeng2011-11-06下载后的代码很混乱。不好。只实现了矩阵乘法而已,谈不上矩阵运算。
- hejizhe2013-06-20有点乱,资源是对的,VC项目,只是方阵,勉强可以参考
wufeiyan19870518
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功