博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
总结一下矩阵的基本操作
阅读量:5155 次
发布时间:2019-06-13

本文共 1363 字,大约阅读时间需要 4 分钟。

总结一下矩阵的基本操作

同步更新于

  • 加减法

    非常简单,只要对应位置相加就行了(余老师:这不是今天的重点!!!

  • 数乘

    嗯,把所有元素同时乘以那个数就行了

  • 矩阵乘矩阵

    比较复杂,

    A*B首先要A的列数=B的行数

    然后看图意会一下,A横着过,B竖着过,

    C[i][j]=A[i][k]*A[k][j]相加,1<=k<=A的列数(或B的行数)

    (汉字表示结果的第i行,数字表示结果的第j列。

    乘法图示

    稍微写了一个代码

    #include
    using namespace std;const int MAXN=1e4+5;int a[MAXN][MAXN],b[MAXN][MAXN],c[MAXN][MAXN];int main(){ int h1,l1,h2,l2; cin>>h1>>l1>>h2>>l2; if(l1!=h2){ cout<<"算不了\n"; return 0; } for(int i=1;i<=h1;++i){ for(int j=1;j<=l1;++j){ cin>>a[i][j]; } } for(int i=1;i<=h2;++i){ for(int j=1;j<=l2;++j){ cin>>b[i][j]; } } for(int i=1;i<=h1;++i){ for(int j=1;j<=l2;++j){ int s=0; for(int k=1;k<=l1;++k){ s=s+a[i][k]*b[k][j]; } c[i][j]=s; } } for(int i=1;i<=h1;++i){ for(int j=1;j<=l2;++j){ cout<
    <<" "; } cout<<'\n'; } return 0;}
  • 转置

    把行变成列,列变成行

    然后有一些性质

    矩阵转置

  • 求递推

    把递推式写成只有一行的矩阵。

    比如斐波拉切,f[i]=f[i-1]+f[i-2]

    写成[f[i],f[i-1]

    那么[f[i-1],f[i-2]]乘上一个特定的n*n(元素个数)的矩阵A就可以成为[f[i],f[i-1]]

    这里可以求出这个A是

    1 11 0

    那么第i项就是[1,0]*A^(i-1)

  • 快速幂

    原理跟整数的差不多,代码如下(需自行重载*运算符)

    juzhen pow(int k){    juzhen res=*this;    juzhen ret(h,l);    ret.cleanForPow();    while(k){        if(k&1){          ret=ret*res;      }      res=res*res;      k>>=1;    }    return ret;}

转载于:https://www.cnblogs.com/buringstraw/p/10229184.html

你可能感兴趣的文章
oracle数据库连接池查看
查看>>
cocostudio 在VS模拟器中加载资源显示混乱问题
查看>>
LeetCode 141 Linked List Cycle
查看>>
dubbo ----> 入门
查看>>
类的继承和扫描顺序
查看>>
侠客行 - 李白
查看>>
Unix系统编程()发送信号kill
查看>>
js 时间与时间戳的转换
查看>>
推荐一款接口文档在线管理系统-MinDoc
查看>>
node拦截器设置
查看>>
知识点备忘笔记
查看>>
[修正] Firemonkey Windows 控件有虚线残影问题
查看>>
intellij jsp 中文乱码
查看>>
js编码
查看>>
计算机硬件基础
查看>>
[Leetcode] candy 糖果
查看>>
[Leetcode] single number ii 找单个数
查看>>
STL: string:erase
查看>>
apache如何解决跨域资源访问
查看>>
json序列化和反序列化
查看>>