C++如何实现矩阵运算
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章将为大家详细讲解有关C++如何实现矩阵运算,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。利用C++实现矩阵的构造,通过运算符的重载实现矩阵的乘法、加法等。并
千家信息网最后更新 2026年11月01日C++如何实现矩阵运算
这篇文章将为大家详细讲解有关C++如何实现矩阵运算,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
利用C++实现矩阵的构造,通过运算符的重载实现矩阵的乘法、加法等。并且实现矩阵形状的打印,矩阵的打印。
#include#include #include #include using namespace std;class Matrix{ public: Matrix(int row, int col); //构造函数 Matrix(int row, int col, int num);//构造函数重载 ~Matrix(); //析构函数 Matrix(const Matrix & other); //赋值函数 Matrix operator*(const Matrix& other); //矩阵相乘 Matrix operator+(const Matrix& other); //矩阵相加 Matrix operator-(const Matrix& other); //矩阵相减 int **a = nullptr; //初始化一共空指针 int row, col; void shape(); //打印矩阵形状 void Ma_pri(); //打印矩阵};int main(){ Matrix a(2,1); //构造一个(2,1)矩阵 Matrix b(1,2); //构造一个(1,2)矩阵 a.a[0][0] = 4; //初始化矩阵 a.a[1][0] = 2; b.a[0][0] = 3; b.a[0][1] = 5; a.shape(); //矩阵形状打印 b.shape(); Matrix c = a*b; //矩阵相乘 c.shape(); c.Ma_pri(); //矩阵打印 Matrix d(3,3,1); d.Ma_pri(); system("pause"); return 0;}Matrix::Matrix(int row, int col){ this->row = row; this->col = col; this->a = new int*[row]; for(int i=0;i row;i++){ a[i] = new int[this->col]; }}Matrix::Matrix(int row, int col, int num){ this->row = row; this->col = col; this->a = new int*[row]; for(int i=0;i row;i++){ a[i] = new int[this->col]; } for(int i = 0; i < this->row; i++){ for(int j =0; j row; j++){ this->a[i][j] = num; } }}Matrix::~Matrix(){ for(int i=0;i row;i++){ if(a[i] != nullptr){ delete[] a[i]; a[i] = nullptr; } } if(a != nullptr){ delete[] a; a = nullptr; }}Matrix::Matrix(const Matrix& other){ row = other.row; col = other.col; a = new int*[row]; for(int i=0;i col != other.row){ cout<<"shape error"<
row,other.col); for(int i=0; i row; i++){ for(int j=0;j col;k++){ sum += this->a[i][k] * other.a[k][j]; } m.a[i][j] = sum; } } return m;}Matrix Matrix::operator+(const Matrix& other){ if(this->col != other.col or this->row != other.row){ cout<<"shape error"< row,this->col); for(int i = 0;i < this->row; i++){ for(int j = 0; j < this-> col; j++){ m.a[i][j] = this->a[i][j] + other.a[i][j]; } } return m;}Matrix Matrix::operator-(const Matrix& other){ if(this->col != other.col or this->row != other.row){ cout<<"shape error"< row,this->col); for(int i = 0;i < this->row; i++){ for(int j = 0; j < this-> col; j++){ m.a[i][j] = this->a[i][j] - other.a[i][j]; } } return m;}void Matrix::shape(){ cout<<"("< row<<","< col<<")"< row; i++){ for(int j =0; j row; j++){ cout< a[i][j]<<" "; } cout< 矩阵求逆算法及程序实现
在做课题时,遇到了求多项式问题,利用了求逆方法。矩阵求逆一般使用简单的算法,还有快速算法 如全选主元高斯-约旦消元法,但本文程序主要写了简单的矩阵求逆算法定义法之伴随矩阵求逆公式如下,其中A可逆:A^{-1}=\frac{A^*}{|A|},其中A^*是A的伴随矩阵。。
1.给定一个方阵,非奇异(不是也可,程序有考虑);
2.由矩阵得到其行列式,求其值如|A|;
3.求其伴随矩阵A^*;
4.得到其逆矩阵。
主要函数如下:
//得到给定矩阵src的逆矩阵保存到des中。bool GetMatrixInverse(double src[N][N],int n,double des[N][N]){ double flag=getA(src,n); double t[N][N]; if(flag==0) { return false; } else { getAStart(src,n,t); for(int i=0;i计算|A|:
//按第一行展开计算|A|double getA(double arcs[N][N],int n){ if(n==1) { return arcs[0][0]; } double ans = 0; double temp[N][N]={0.0}; int i,j,k; for(i=0;i=i)?k+1:k]; } } double t = getA(temp,n-1); if(i%2==0) { ans += arcs[0][i]*t; } else { ans -= arcs[0][i]*t; } } return ans;} 计算伴随矩阵:
//计算每一行每一列的每个元素所对应的余子式,组成A*void getAStart(double arcs[N][N],int n,double ans[N][N]){ if(n==1) { ans[0][0] = 1; return; } int i,j,k,t; double temp[N][N]; for(i=0;i=i?k+1:k][t>=j?t+1:t]; } } ans[j][i] = getA(temp,n-1); if((i+j)%2 == 1) { ans[j][i] = - ans[j][i]; } } }} 关于"C++如何实现矩阵运算"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
矩阵
函数
算法
j++
C++
运算
形状
程序
篇文章
m.a
一行
更多
a.a
b.a
不错
实用
奇异
乘法
元素
公式
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技公司简介
云信互联网科技有限公司
科技类互联网
互联网与新科技
广州宏创互联网科技
广州善班互联网科技
互联网科技有限公司 翻译
科技类的互联网平台
互联网 科技馆
互联网和高科技公司
天速互联网络科技有限公司
威龙国际互联网科技公司
工业互联网等科技实现智能化赋能
互联网科技圈年度人物
互联网金融科技元年
杭州融税互联网科技有限公司
优雇互联网科技有限公司
东风日产互联网科技公司叫什么
伍佰万互联网科技是干嘛的
广州全民伙伴互联网科技有限公司
广州为想互联网科技有限公司
奇酷互联网科技
奇酷互联网络科技
中国最先进互联网科技公司
智腾互联网科技有限公司
群盈汇互联网科技有限公司
互联网科技新闻
互联网金融运营模式中的金融科技
互联网科技对化妆品行业
长沙易易互联网科技有限公司