矩阵

矩阵
  • 矩阵在数学问题中有大量的问题需要通过矩阵问题进行求解,矩阵表示的是由NxM组成的一个矩阵,N和M不要求相等,如果等于就称为方阵;
  • 对于矩阵来数存在常见的几种运算,创建矩阵,矩阵相加,相乘,转置等;
  • 矩阵的创建可以使用二维数组来模拟矩阵;
int array[5][5] =
    {
        {1, 0, 0, 0, 1},
        {1, 5, 0, 0, 0},
        {2, 0, 0, 0, 0},
        {5, 6, 0, 1, 0},
        {0, 0, 0, 0, 3}
    };
  • 矩阵的相加元算表示的对应的元素相加,所以要求两个矩阵的行数和列数必须相等;
void add(int a[][MAX_SIZE], int b[][MAX_SIZE], int c[][MAX_SIZE],
         int rows, int cols)
{
    int i, j;
    for (i = 0; i < rows; i++)
    {
        for (j = 0; j < cols; j++)
            c[i][j] = a[i][j] + b[i][j];
    }
}
  • 矩阵的乘法:首先只介绍两种:
    • 对于第一种来说要求第一行乘第一列,然后将所得到的值相加,得到第一行第一列第一个元素,其余的元素以此类推,要求是第一个矩阵的行数必须和第二个矩阵的列数必须向等;
void multi(int a[][MAX_SIZE], int b[][MAX_SIZE], int c[][MAX_SIZE],
           int rows, int cols)
{
    int i, j;
    int k;
    for (i = 0; i < MAX_SIZE; i++)
    {
        for (j = 0; j < MAX_SIZE; j++)

            c[i][j] = 0;
        for (k = 0; k < MAX_SIZE; k++)
        {
            c[i][j] += a[i][k] * b[k][j];
        }
    }
}
* 对于第二种乘法就比较简单,对应元素相乘得到的是一个新的矩阵,要求行数和列数必须向等;
void Xmulti(int a[][MAX_SIZE], int b[][MAX_SIZE],
            int c[][MAX_SIZE], int rowsa, int colsb, int colsa)
{
    int i, j, k;
    for (i = 0; i < rowsa; i++)
    {
        for (j = 0; j < colsb; j++)
        {
            c[i][j] = 0;
            for (k = 0; k < colsa; k++)
                c[i][j] += a[i][k] * b[k][j];
        }
    }
}
  • 对于矩阵还存在转置操作,就是将第一行的元素和第一列的元素进行交换,同样的第二行的元素和第二列的元素进行交换,以此类推,比如B(i,j)元素进行转置后,就应该是B(j,i)
void transpose(int a[][MAX_SIZE]){
    int i,j,temp;
    for(i=0;i<MAX_SIZE;i++){
        for(j=0;j<MAX_SIZE;j++){
            swap(a[i][j],a[j][i]);
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值