8.27 矩阵乘法

本文介绍了矩阵的基本概念,包括定义、同型矩阵、秩和等价性,以及矩阵乘法的规则和物理意义。重点讲解了矩阵乘法在解决线性方程组中的应用,通过Gauss消元算法举例说明。

我只是一个可怜的小女孩,为什么要让我接触线性代数(阴暗地爬走

矩阵的概念

定义

矩阵,数学术语。在数学中,矩阵(Matrix)是一个按照长方阵列排列的复数或实数集合,最早来自于方程组的系数及常数所构成的方阵。这一概念由19世纪英国数学家凯利首先提出。通俗的来说, m ∗ n m*n mn个数组成的 m ∗ n m*n mn大小的数表,称为一个矩阵。

名词解释

同型: 两个矩阵行数相同,列数也相同。

:一个矩阵A的列秩是A的线性独立的纵列的极大数,一般表示为 r ( A ) r(A) r(A)

等价: 同型矩阵,并且秩相等

相等: 同型矩阵,并且对应元素都相等


矩阵乘法

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

因此,给出如下解释:
令矩阵 A A A = m ∗ n m * n mn, 若矩阵A与矩阵B可相乘,则矩阵 B B B= n ∗ k n * k nk, k k k为任意实数。

变换方式

变换的方式,就是用A的每一行,去乘以B的每一列。
在这里插入图片描述
解释:

11 − A 11 ∗ B 11 + A 12 ∗ B 21 11- A11 * B11+A12 * B21 11A11B11+A12B21

矩阵 C [ 1 , 1 ] C[1,1] C[1,1]存储的,是 A [ 1 , 1 ] ∗ B [ 1 , 1 ] + A [ 1 , 2 ] ∗ B [ 2 , 1 ] A[1,1] * B[1,1] + A[1,2] * B[2,1] A[1,1]B[1,1]+A[1,2]B[2,1]

具体的可以看视频:

矩阵乘法

变换本质

物理学上,它的本质之一是对空间的基向量进行旋转,剪切等操作。
数学上,它可以用于解m个方程n个未知数的线性方程组。
(对我来说,这个比较好理解,当然也有其他的解释。)

例题

AcWing883 高斯消元解方程组
在这里插入图片描述

核心代码

const int N=110;

const double eps=1e-8;

int n;

double a[N][N];

int gauss(){

    int c,r;

    for (c=0,r=0;c<n;c++){

        int t=r;

        for(int i=r;i<n;i++){  //筛选出所在列元素最大的行
            if(fabs(a[i][c])>fabs(a[t][c])) t=i;
        }

        if(fabs(a[t][c])<eps) continue;  //正对角线中有元素为0,这时有无穷解和无解

        if(t!=r) for(int i=c;i<=n;i++) swap(a[t][i],a[r][i]);  //若t改变,则交换两行

        for(int i=n;i>=c;i--) a[r][i]/=a[r][c];  //将所在行所在列元素变为1

        for(int i=r+1;i<n;i++){  //将所在行所在列的下方的行的所在列元素变为0
            if(fabs(a[i][c])>eps){
                for(int j=n;j>=c;j--) a[i][j]-=a[r][j]*a[i][c];
            }
        }

        r++;

    }

    if(r<n){  //row<n,即对角线中元素为0的行未被算上
        for(int i=r;i<n;i++){
            if(fabs(a[i][n])>eps) return 2;
        }
        return 1;
    }

    for(int i=n-1;i>=0;i--){  //将非主元位置的A系数矩阵的其他x消去
        for(int j=i+1;j<n;j++) a[i][n]-=a[j][n]*a[i][j];
    }

    return 0;

}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值