最简行阶梯矩阵生成器

描述:给一个矩阵AAA,输出其最简行阶梯矩阵R=rref(A)R=rref(A)R=rref(A).
输入:第一行两个正整数NNN和MMM,表示矩阵的行数和列数。
第i(2<=i<=N+1)i(2<=i<=N+1)i(2<=i<=N+1)行MMM个整数,表示AAA的第i−1i-1i−1行的MMM个数。整数在 intintint 范围内。
输出:R=rref(A)R=rref(A)R=rref(A),其中整数输出本身,若为分数则输出u/vu/vu/v,其中u、vu、vu、v分别为该项分子分母。
C++实现:

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define MAXN 1005
#define re register int
struct shu{ll u,v;}a[MAXN][MAXN];
int n,m,ppos[MAXN];
ll gcd(ll x,ll y){x=abs(x),y=abs(y);return !y?x:gcd(y,x%y);}
void yuefen(ll &u,ll &v){ll t=gcd(u,v);u/=t;v/=t;if(v<0)u=-u,v=-v;}
void add(ll &x,ll &y,ll s,ll t){// x/y + = s/tll tx=x,ty=y;x=t*tx+s*ty;y=t*ty;yuefen(x,y);}
void jian(ll &x,ll &y,ll s,ll t){add(x,y,-s,t);}
void times(ll &x,ll &y,ll s,ll t){// x/y * = s/tx*=s;y*=t;yuefen(x,y);}
void devide(ll &x,ll &y,ll s,ll t){times(x,y,t,s);}
int findp(int x){for(re i=1;i<=m;i++)if(a[x][i].u)return i;return m+1;}
void guiyi(int x){int t=findp(x);if(a[x][t].u==1&&a[x][t].v==1)return;for(re i=t+1;i<=m;i++)devide(a[x][i].u,a[x][i].v,a[x][t].u,a[x][t].v);a[x][t].u=a[x][t].v=1;}
void eij(int x,int y,ll k1,ll k2){//row x - = row y * k1/k2for(re i=1;i<=m;i++)jian(a[x][i].u,a[x][i].v,a[y][i].u*k1,a[y][i].v*k2);}
void swaprow(int x,int y){for(re i=1;i<=m;i++)swap(a[x][i].u,a[y][i].u),swap(a[x][i].v,a[y][i].v);}
void init(){ll x;for(re i=1;i<=n;i++)for(re j=1;j<=m;j++)scanf("%lld",&a[i][j].u),a[i][j].v=1;}
int main(){freopen("rref.in","r",stdin);freopen("rref.out","w",stdout);scanf("%d%d",&n,&m);init();for(re i=1;i<=n;i++){ppos[i]=findp(i);guiyi(i);}for(re i=1;i<n;i++)for(re j=i+1;j<=n;j++)if(ppos[i]>ppos[j])swaprow(i,j),swap(ppos[i],ppos[j]);for(re i=1;i<=n;i++){ppos[i]=findp(i);guiyi(i);for(re j=i+1;j<=n;j++){guiyi(j);if(!a[j][ppos[i]].u)break;eij(j,i,a[j][ppos[i]].u,a[j][ppos[i]].v);}for(re j=i+1;j<=n;j++)ppos[j]=findp(j);for(re j=i+1;j<n;j++)for(re k=j+1;k<=n;k++)if(ppos[j]>ppos[k])swaprow(j,k),swap(ppos[j],ppos[k]);}for(re i=n;i>1;i--){if(ppos[i]==m+1)continue;for(re j=i-1;j>=1;j--)eij(j,i,a[j][ppos[i]].u,a[j][ppos[i]].v);}for(re i=1;i<=n;i++){for(re j=1;j<=m;j++){if(a[i][j].v==1){printf("%lld ",a[i][j].u);continue;}printf("%lld/%lld ",a[i][j].u,a[i][j].v);}printf("\n");}
}

最简行阶梯矩阵生成器相关推荐

  1. Python3 矩阵求最简行阶梯矩阵

    由于在Python numpy库中没有直接对Matrix求RREF的方法,度娘了好久发现在另一个科学计算包sympy中可以利用A.rref()的方法对Matrix直接求RREF,但是有另一个问题,大家 ...

  2. RREF 最简行阶梯型矩阵

    最简行阶梯矩阵 最简行阶梯矩阵-百度百科 Python numpy + sympy import numpy as np from sympy import Matrix A = np.array([ ...

  3. rref--计算行阶梯矩阵

    [功能简介]求行阶梯形式矩阵. [语法格式] 1.R=rref(A) 用高斯-约旦消元法和行主元法求A的行阶梯矩阵R.用默认误差(max(size(A))*eps *norm(A,inf))测试可以忽 ...

  4. 可逆矩阵的秩等于矩阵的阶数_为什么矩阵的秩等于其行阶梯行矩阵非零行的行数?详细一点哈?谢了。...

    行阶梯矩阵非零行的首非零元(个数=非零行数)所在的列是线性无关的, 且其余向量可由它们线性表示. 所以它们是A的列向量组的一个极大无关组. 所以A的列秩 = 非零行的行数 所以A的秩 = 非零行的行数 ...

  5. matlab求矩阵行最简形,计算矩阵行最简行的命令

    初等行变换之互换两行 Public Sub Matrix_Specify_Tow_Row_Exchange(Row_A_Index As Integer, Row_B_Index As Integer ...

  6. 行阶梯型矩阵,行最简形矩阵,标准形矩阵

    行阶梯形矩阵: 行最简形矩阵: 标准形矩阵:

  7. 《 线性代数及其应用 (原书第4版)》——1.2 行化简与阶梯形矩阵

    本节书摘来自华章出版社< 线性代数及其应用 (原书第4版)>一书中的第1章,第1.2节,作者:(美)戴维C. 雷(David C. Lay)马里兰大学帕克学院 著刘深泉 张万芹 陈玉珍 包 ...

  8. 1.2 行化简和阶梯形矩阵(线性代数及其应用-第5版-系列笔记)

    内容概述 本节首先讲解了矩阵变换的两种形式:阶梯形和简化阶梯形,并讲述了这两种变换之间的关系(最重要的关系是二者的主元位置和主元列是相同的).之所以引入这两种变换,是为了给解线性方程组和研究线性方程组 ...

  9. MATLAB入门之rref计算简化矩阵行阶梯形式

    rref 计算简化矩阵行阶梯形式 例如: 求解线性方程组的解 %3x+7y+2z=3 %6x+8y+10z=5 %5x+6y+14z=7 >> A=[3,7,2;6,8,10;5,6,14 ...

  10. Python实现用初等行变换将矩阵化为最简行形式

    python实现用初等行变换将矩阵化为最简行形式 代码如下: # -*- coding: utf-8 -*- """ Created on Fri Mar 15 15:0 ...

最新文章

  1. HDU Problem - 6396 Swordsman(优先队列,模拟)
  2. 【C# interface接口】对接口的理解、接口的使用方式(最通俗的解释)
  3. [C++11]返回值类型后置
  4. java swing 案例详解_《Java Swing图形界面开发与案例详解》PDF_IT教程网
  5. MySQL InnoDB Engine--数据预热
  6. 29.卷1(套接字联网API)---数据链路访问
  7. ARC098E Range Minimum Queries
  8. 装微软原版win10系统
  9. 计算机网络应用ppt,1分钟骚操作顶别人10分钟!不可不懂的PPT神技
  10. Java实现文件搜索
  11. 华为鸿蒙电视保修终身,华为全新鸿蒙OS新品来了!刷新电视“N年不变”固有认知...
  12. 大数据技术就在生活中: 登机牌、阅卷与 Map-Reduce(归约)
  13. ORACLE中的INTERVAL
  14. RabbitMQ 6种应用场景
  15. yocs_velocity_smoother速度平滑库知识
  16. 把握SDN研发方向,展望未来发展趋势
  17. python 手部识别与位置跟踪
  18. 关于电脑电流滋滋声解决方法
  19. 简历快投啊!!!!!!!!!!!!!!!(转自水木)
  20. 检索式对话系统在美团客服场景的探索与实践

热门文章

  1. 基于堡垒主机概念的运维审计系统
  2. java行转列,列转行,二维数据x轴y轴互换
  3. python的注释符号有哪些_python注释符号
  4. 花都平安保险应该找谁?
  5. 计算机函数乘法word,【2人回答】Word里相乘的函数是什么?-3D溜溜网
  6. ubuntu 日常使用问题记录
  7. 智能驾驶相关—DMS系统数据解决方案
  8. 计算机桌面文件为何不能剪贴,电脑不能复制粘贴是什么原因【方法介绍】
  9. 惊恐!监控拍到神秘人形机器人凌晨三点出逃
  10. 【EMI测试】如何选择近场电磁干扰故障诊断的测试设备/探头