| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1005 人关注过本帖
标题:C语言求矩阵的乘法!!!!!!!!!
取消只看楼主 加入收藏
追寻XT
Rank: 2
等 级:论坛游民
威 望:1
帖 子:37
专家分:32
注 册:2014-8-20
结帖率:83.33%
收藏
已结贴  问题点数:5 回复次数:3 
C语言求矩阵的乘法!!!!!!!!!
有没有一种 我输入N,程序就求出矩阵M的N次方的程序????我自己写了一个,多一次方就多一个for循环,理论上何以求到N次,但是觉得不够简洁。。。。。。。
程序代码:
#include<stdio.h>
#include<conio.h>
void main(void){
int M[5][5],Mk[5][5],MKK[5][5],MKKK[5][5],i,j,p;
M[0][0]=0;M[0][1]=0;M[0][2]=0;M[0][3]=0;M[0][4]=1;
M[1][0]=1;M[1][1]=0;M[1][2]=1;M[1][3]=0;M[1][4]=0;
M[2][0]=0;M[2][1]=0;M[2][2]=0;M[2][3]=0;M[2][4]=1;
M[3][0]=1;M[3][1]=0;M[3][2]=1;M[3][3]=0;M[3][4]=0;
M[4][0]=0;M[4][1]=1;M[4][2]=0;M[4][3]=1;M[4][4]=0;
for(i=0;i<5;i++){
  for(j=0;j<5;j++){Mk[i][j]=0;
    for( p=0;p<5;p++)
        Mk[i][j]=Mk[i][j]+M[i][p]*M[p][j];
  }
}
for(i=0;i<5;i++){
  for(j=0;j<5;j++){MKK[i][j]=0;
    for( p=0;p<5;p++)
        MKK[i][j]=MKK[i][j]+Mk[i][p]*M[p][j];
  }
}
for(i=0;i<5;i++){
  for(j=0;j<5;j++){MKKK[i][j]=0;
    for( p=0;p<5;p++)
        MKKK[i][j]=MKKK[i][j]+MKK[i][p]*M[p][j];
  }
}
for(i=0;i<5;i++){
  for(j=0;j<5;j++)
     printf("%8d",MKKK[i][j]);
     printf("\n");}
getch();
}
搜索更多相关主题的帖子: C语言 color 
2014-09-15 16:41
追寻XT
Rank: 2
等 级:论坛游民
威 望:1
帖 子:37
专家分:32
注 册:2014-8-20
收藏
得分:0 
回复 2 楼 wyw19880809
谢谢,我在根据这个思路想想
2014-09-15 17:31
追寻XT
Rank: 2
等 级:论坛游民
威 望:1
帖 子:37
专家分:32
注 册:2014-8-20
收藏
得分:0 
回复 5 楼 魑魅魍魉!
一个个赋值,便于查找修改,等程序写的成功了,就该用定义时赋值,如果写函数的话,矩阵的幂不知道怎么表示?有的人说用循环,有的人说递归,搞不懂了。。。
2014-09-16 11:18
追寻XT
Rank: 2
等 级:论坛游民
威 望:1
帖 子:37
专家分:32
注 册:2014-8-20
收藏
得分:0 
经过几天思考,现在来结贴,以下是关于矩阵N次幂的求法:
程序代码:
#include<stdio.h>
#include<conio.h>
#define A  5
#define B  5//A,B的值可根据具体的矩阵来确定;
void main(void){
    int M[A][B]={0,0,0,0,1,1,0,1,0,0,0,0,0,0,1,1,0,1,0,0,0,1,0,1,0},MT[A][B],
       ME[A][B]={0,0,0,0,1,1,0,1,0,0,0,0,0,0,1,1,0,1,0,0,0,1,0,1,0},i,j,p,c,k;//M[A][B]为初始矩阵,MT[A][A]为中转矩阵;ME[A][B]为结果矩阵
printf("M的()次幂:");
scanf("%d",&k);
for(c=0;c<k-1;c++){
    for(i=0;i<5;i++){
      for(j=0;j<5;j++){
         MT[i][j]=0;
         for( p=0;p<5;p++)
             MT[i][j]=MT[i][j]+ME[i][p]*M[p][j];//迭代
          }
          } 
for(i=0;i<5;i++){
      for(j=0;j<5;j++){
        ME[i][j]=*(MT[i]+j);}
      
    }
}
for(i=0;i<5;i++){
      for(j=0;j<5;j++){
        printf("%4d",ME[i][j]);}
      printf("\n");}
getch();
}


[ 本帖最后由 追寻XT 于 2014-9-17 14:34 编辑 ]
2014-09-17 14:27
快速回复:C语言求矩阵的乘法!!!!!!!!!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017996 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved