数组矩阵广义表:Matrix矩阵介绍及乘法运算(附C语言实现代码)

2022-07-1713:23:11数据结构与算法Comments1,658 views字数 1583阅读模式

1. 矩阵概念文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/25134.html

在数学中,矩阵(Matrix)是一个按照长方阵列排列的复数或实数集合,最早来自于方程组的系数及常数所构成的方阵。这一概念由19世纪英国数学家凯利首先提出。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/25134.html

矩阵是高等代数学中的常见工具,也常见于统计分析等应用数学学科中。在物理学中,矩阵于电路学、力学、光学和量子物理中都有应用;计算机科学中,三维动画制作也需要用到矩阵,尤其是计算机的图像处理之中,利用矩阵表示图像元素十分常见。 矩阵的运算是数值分析领域的重要问题。将矩阵分解为简单矩阵的组合可以在理论和实际应用上简化矩阵的运算。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/25134.html

由 m × n 个数aij排成的m行n列的数表称为m行n列的矩阵,简称m × n矩阵。记作:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/25134.html

数组矩阵广义表:Matrix矩阵介绍及乘法运算(附C语言实现代码)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/25134.html

这m×n 个数称为矩阵A的元素,简称为元,数aij位于矩阵A的第i行第j列,称为矩阵A的(i,j)元,以数 aij为(i,j)元的矩阵可记为(aij)或(aij)m × n,m×n矩阵A也记作Amn。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/25134.html

注意:矩阵的概念很多,而且矩阵的运算属于计算机图形学,数学等学科的必备知识,其如果要完全写下来则完全可以写出一本书,本文知识简单介绍,矩阵的基本知识必备要了解加减乘除,其中以乘法在计算机中又使用众多。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/25134.html

2. 矩阵乘法文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/25134.html

两个矩阵的乘法仅当第一个矩阵A的列数和另一个矩阵B的行数相等时才能定义。如A是m×n矩阵和B是n×p矩阵,它们的乘积C是一个m×p矩阵  ,它的一个元素:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/25134.html

数组矩阵广义表:Matrix矩阵介绍及乘法运算(附C语言实现代码)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/25134.html

并将此乘积记为: C=AB文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/25134.html

例如:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/25134.html

数组矩阵广义表:Matrix矩阵介绍及乘法运算(附C语言实现代码)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/25134.html

3.矩阵乘法实现代码文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/25134.html

C语言中实现,核心思路在于利用for循环每一位的相乘,矩阵1的行与矩阵2的列相乘,逐步补全整个矩阵。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/25134.html

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
 
#define M 100
 
int main(){
    int i,j,k;
    int matrix1[M][M],matrix2[M][M],row1,col1,row2,col2;
    int ans[M][M];      //运算结果,矩阵输出
    printf("输入第一个矩阵的行高和列宽:"); 
    scanf("%d%d",&row1,&col1);
    printf("输入第一个矩阵:\n");
    for(i=0;i<row1;i++){
        for(j=0;j<col1;j++){
            scanf("%d",&matrix1[i][j]); 
        
    
    printf("输入第二个矩阵的行高和列宽:");
    scanf("%d%d",&row2,&col2);
    printf("输入第二个矩阵:\n");
    for(i=0;i<row2;i++){
        for(j=0;j<col2;j++){
            scanf("%d",&matrix2[i][j]); 
        
    }
 
    memset(ans,0,sizeof(ans));
    
    printf("运算结果为:\n"); 
    for(i=0;i<row1;i++){
        for(j=0;j<col2;j++){
            for(k=0;k<col1;k++){
                ans[i][j]=ans[i][j]+matrix1[i][k]*matrix2[k][j]; 
            
        
    }
    for(i=0;i<row1;i++){
        for(j=0;j<col2;j++){
            printf("%d ",ans[i][j]); 
        
        printf("\n"); 
    
    return 0;
}
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/25134.html
  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/suanfa/25134.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定