天天看点

矩阵乘法、转置矩阵、对称矩阵

个人网站:Geek交流圈

程序实现随机生成N阶方阵,然后求转置矩阵,利用对称矩阵与原矩阵相乘,构造对称矩阵。

代码如下:

/*
方阵,转置矩阵,对称矩阵
程序说明:
    利用随机数生成随机的 N阶方阵    GeneratedMatrix函数
    将生成的 N阶方阵 转置,得到转置方阵    TransposeMatrixAi函数
    将原方阵与转置方阵相乘 得到 对称矩阵    MatrixMutiply函数
    输出矩阵   OutputMatrixAi函数
*/
#include <stdio.h>
#include <time.h>
#include <stdlib.h>

#define N 3 //确定方阵的阶数
int i = 0;
int j = 0;
int t = 0;
int OriginalMatrix[N][N] = { 0 };
int TransposeMatrix[N][N] = { 0 };
int SymmetricMatrix[N][N] = { 0 };
//输出矩阵内容
void OutputMatrixAi(int TransposeMatrix[N][N]);
//随机生成矩阵
void GeneratedMatrix();
//转置矩阵算法
void TransposeMatrixAi(int TransposeMatrix[N][N]);
//矩阵相乘算法
void MatrixMutiply(int m, int n, int p, int Matrix1[N][N], int Matrix2[N][N], int MatrixResult[N][N]);
int main(void)
{

    //随机生成原矩阵
    GeneratedMatrix();
    //输出原矩阵
    printf("原矩阵:\n");
    OutputMatrixAi(OriginalMatrix);


    //将原矩阵转置,调用转置算法
    TransposeMatrixAi(TransposeMatrix);
    //输出转置矩阵
    printf("转置矩阵:\n");
    OutputMatrixAi(TransposeMatrix);


    //求对称矩阵,调用矩阵相乘函数
    MatrixMutiply(N, N, N, TransposeMatrix, OriginalMatrix, SymmetricMatrix);
    //输出对称矩阵
    printf("对称矩阵:\n");
    OutputMatrixAi(SymmetricMatrix);


    system("pause");
    return 0;
}
void MatrixMutiply(int m, int n, int p, int Matrix1[N][N], int Matrix2[N][N], int MatrixResult[N][N])
{
    int i, j, k;
    int Sum;

    /*嵌套循环计算结果矩阵(m*p)的每个元素*/
    for (i = 0; i < m; i++)
        for (j = 0; j < p; j++)
        {
            /*按照矩阵乘法的规则计算结果矩阵的i*j元素*/
            Sum = 0;
            for (k = 0; k < n; k++)
                Sum += Matrix1[i][k] * Matrix2[k][j];
            MatrixResult[i][j] = Sum;
        }
}
void GeneratedMatrix()
{
    srand(time(NULL));
    for (i = 0; i < N; i++)
    {
        for (j = 0; j < N; j++)
        {
            OriginalMatrix[i][j] = rand() % 10;
            TransposeMatrix[i][j] = OriginalMatrix[i][j];
        }
    }
}
void TransposeMatrixAi(int TransposeMatrix[N][N])
{
    for (i = 0; i < N; i++)
    {
        for (j = 0; j < N; j++)
        {
            if (i > j)
            {
                t = TransposeMatrix[i][j];
                TransposeMatrix[i][j] = TransposeMatrix[j][i];
                TransposeMatrix[j][i] = t;
            }
        }
    }
}
void OutputMatrixAi(int TransposeMatrix[N][N])
{
    for (i = 0; i < N; i++)
    {
        for (j = 0; j < N; j++)
        {
            printf("%d ", TransposeMatrix[i][j]);
        }
        putchar('\n');
    }
}




           

继续阅读