c语言实现两个3阶矩阵相乘

c语言实现两个3阶矩阵相乘,第1张

#include <stdioh>
void main()
{
   int i,j,k;
   int a[3][3]={7,-5,3,2,8,-6,1,-4,-2};
   int b[3][3]={3,6,-9,2,-8,3,5,-2,-7};
   int c[3][3]={0,0,0,0,0,0,0,0,0};//要初始化
   for(i=0;i<=2;i++)
   {
          for(j=0;j<=2;j++)
          {
                  for(k=0;k<=2;k++)
                  {
                          c[i][j]=c[i][j]+a[k][i]b[j][k];
                  }
          }
   }
   for(i=0;i<=2;i++)
   {
          for(j=0;j<=2;j++)
          {
                 printf("%d ",c[i][j]);//有&代表取地址的意思
          }
   }
}

1、矩阵相乘需要前面矩阵的行数与后面矩阵的列数相同方可相乘。第一步先将前面矩阵的每一行分别与后面矩阵的列相乘作为结果矩阵的行列。第二步算出结果即可。

2、矩阵相乘最重要的方法是一般矩阵乘积。它只有在第一个矩阵的列数(column)和第二个矩阵的行数(row)相同时才有意义 。一般单指矩阵乘积时,指的便是一般矩阵乘积。一个m×n的矩阵就是m×n个数排成m行n列的一个数阵。由于它把许多数据紧凑的集中到了一起,所以有时候可以简便地表示一些复杂的模型。

我认为应该是两个矩阵的相乘,因为两个行列式的相乘是数乘数,没多大意义。下面的代码是两个3阶矩阵相乘。
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
    int a[3][3],b[3][3],c[3][3];
    cout<<"按行优先输入矩阵a的元素"<<endl;
    for(int i=0;i<3;i++)
        for(int j=0;j<3;j++)
            cin>>a[i][j];
    cout<<"按行优先输入矩阵b的元素"<<endl;
    for(int i=0;i<3;i++)
        for(int j=0;j<3;j++)
            cin>>b[i][j];
    /求矩阵c的每个元素/
    for(int m=0;m<3;m++)
        for(int n=0;n<3;n++)
        {
            c[m][n]=a[m][0]b[0][n]+a[m][1]b[1][n]+a[m][2]b[2][n];
        }
    /输出矩阵c的每个元素/
    cout<<"输出ab所得的矩阵"<<endl;
    int i=0; //定义变量就是为了输出换行的完美
    for(int x=0;x<3;x++)
        for(int y=0;y<3;y++)
        {
            cout<<c[x][y]<<" ";
            i++;
            if(i%3==0)
                cout<<endl;
        }
    cout<<endl;
    return 0;
}

输出结果:

23和33矩阵乘法公式:aA+bB+cC。矩阵相乘最重要的方法是一般矩阵乘积。它只有在第一个矩阵的列数(column)和第二个矩阵的行数(row)相同时才有意义。一般单指矩阵乘积时,指的便是一般矩阵乘积。


乘法(matrix multiplication)是一种根据两个矩阵得到第三个矩阵的二元运算。

矩阵乘法只有在第一个矩阵的列数和第二个矩阵的行数相同时才有意义。它能把许多数据集中在一起,可以表示一些复杂的模型,如电力系统网络模型。

23和33矩阵乘法公式:aA+bB+cC。矩阵相乘最重要的方法是一般矩阵乘积。它只有在第一个矩阵的列数(column)和第二个矩阵的行数(row)相同时才有意义。

一般单指矩阵乘积时,指的便是一般矩阵乘积。一个m×n的矩阵就是m×n个数排成m行n列的一个数阵。由于它把许多数据紧凑地集中到了一起,所以有时候可以简便地表示一些复杂的模型,如电力系统网络模型。

基本性质:

1结合性 (AB)C=A(BC)。

2对加法的分配性 (A+B)C=AC+BC,C(A+B)=CA+CB。

3对数乘的结合性 k(AB)=(kA)B =A(kB)。

4关于转置 (AB)'=B'A'。

#include<stdioh>
void main()
{
 int i,j,k=0; //一位数组初始化
 int a[9]={12,34,23,34,45,34,35,45,34};     
 int b[9]={45,26,34,45,87,34,98,45,90};
    //输出一位数组a[9]  b[9]
 printf("a[9]:");
 for(i=0;i<9;i++)
  printf("%d ",a[i]); printf("\n\n");
    
 printf("b[9]:");
 for(i=0;i<9;i++)
  printf("%d ",b[i]);
 //定义33二维数组
 int c[3][3];
    
 //依照33矩阵格式打印结果
 printf("\n结果为:\n\n");
 for(i=0;i<3;i++)
 {
  for(j=0;j<3;j++)
  {
   //两个一位数组相乘的结果存入二维数组c[3][3]
   c[i][j]=a[k]b[k];  
    //k的主要目的是控制a[k]b[k],
    //这样可以取出a[0]-a[8],b[0]-[8]的值相乘存入数组
   k++;    
   // %-6d只是控制输出格式好看点,没什么作用,直接写%d就可以
      printf("%-6d",c[i][j]);    
  }
  printf("\n");
 }
}

33矩阵与32矩阵相乘结果:

AB=aA+bB+cC    aD+bE+cF 

dA+eB+fC    dD+eE+fF  

gA+hB+iC    gD+hE+iF 

A=a    b    c 

d    e    f  

g    h    i  

B=A    D 

B    E   

C    F 

扩展资料:


矩阵是高等代数学中的常见工具,也常见于统计分析等应用数学学科中。

在物理学中,矩阵于电路学、力学、光学和量子物理中都有应用;计算机科学中,三维动画制作也需要用到矩阵。 矩阵的运算是数值分析领域的重要问题。

将矩阵分解为简单矩阵的组合可以在理论和实际应用上简化矩阵的运算。对一些应用广泛而形式特殊的矩阵,例如稀疏矩阵和准对角矩阵,有特定的快速运算算法。

关于矩阵相关理论的发展和应用,请参考矩阵理论。在天体物理、量子力学等领域,也会出现无穷维的矩阵,是矩阵的一种推广。

参考资料:

百度百科:矩阵


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/10262686.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存