求一个n元一次方程的解,Gauss消元

const Matrix=require('./Matrix.js')

/*Gauss 消元
传入一个矩阵,传出结果
*/
function Gauss(matrix){
let l=[];//是否为自由元
let ans=[];//存储解
const n=matrix.Column-1;//解的个数
const EPS=0.00001;
let res=0,r=0;
for(let i=0;i<matrix.Column;i++){
for(let j=r;j<matrix.Row;j++){
if(Math.abs(matrix.getItem(j,i))>EPS){
if(j!==r){
//行交换位置
for(let k=i;k<=n;k++){
const temp1=matrix.getItem(j,k)
const temp2=matrix.getItem(r,k)
matrix.setItem(j,k,temp2)
matrix.setItem(r,k,temp1)
}
}
break;
}
}
// console.log(matrix.toString(),r,i)
if(Math.abs(matrix.getItem(r,i)<EPS)){
++res;
console.log('continue')
continue;
}
//方程相减,消除元
for(let j=0;j<matrix.Row;j++){
if(j!==r&&Math.abs(matrix.getItem(j,i))>EPS){
let tmp=matrix.getItem(j,i)/matrix.getItem(r,i);
for(let k=i;k<=n;k++){
const item=matrix.getItem(j,k)-tmp*matrix.getItem(r,k)
matrix.setItem(j,k,item)
} }
}
l[i]=true;
r++;
}
//输出答案
for(let i=0;i<n;i++){
if(l[i]){
for(let j=0;j<n;j++){
if(Math.abs(matrix.getItem(j,i))>0){
ans[i]=matrix.getItem(j,n)/a.getItem(j,i)
}
}
}
}
return ans;
} //x+y+z=6
//x+2y+z=8
//x+2y+3z=15 const a=new Matrix([
1,1,1,4,
1,2,1,6,
1,2,1,6,
1,2,3,10
],4,4);
console.log(Gauss(a))

[ 0, 2, 2 ]

求一个n元一次方程的解,Gauss消元的更多相关文章

  1. $Gauss$消元

    $Gauss$消元 今天金牌爷来问我一个高消的题目,我才想起来忘了学高消... 高斯消元用于解线性方程组,也就是形如: $\left\{\begin{matrix}a_{11}x_1+a_{12}x_ ...

  2. Gauss 消元(模板)

    /* title:Gauss消元整数解/小数解整数矩阵模板 author:lhk time: 2016.9.11 没学vim的菜鸡自己手打了 */ #include<cstdio> #in ...

  3. hdu 5755(Gauss 消元) &poj 2947

    Gambler Bo Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Tota ...

  4. POJ 1830 开关问题(Gauss 消元)

    开关问题 Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 7726   Accepted: 3032 Description ...

  5. poj 1681(Gauss 消元)

    Painter's Problem Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 5875   Accepted: 2825 ...

  6. 【Luogu】P3389高斯消元模板(矩阵高斯消元)

    题目链接 高斯消元其实是个大模拟qwq 所以就着代码食用 首先我们读入 ;i<=n;++i) ;j<=n+;++j) scanf("%lf",&s[i][j]) ...

  7. 高斯消元(Gauss消元)

    众所周知,高斯消元可以用来求n元一次方程组的,主要思想就是把一个n*(n+1)的矩阵的对角线消成1,除了第n+1列(用来存放b的)的其他全部元素消成0,是不是听起来有点不可思议??! NO NO NO ...

  8. gauss消元

    题意描述:有n个星球,m台望远镜.每台望远镜有一个开始时间和结束时间,但只给出了月.日的信息,没有给出年份,每台望远镜记录了它所观测的星球上发生的各类事件的次数.每类事件持续的时间是恒定的,且不会超过 ...

  9. POJ1830开关问题——gauss消元

    题目链接 分析: 第一个高斯消元题目,操作是异或.奇偶能够用0.1来表示,也就表示成bool类型的方程,操作是异或.和加法没有差别 题目中有两个未知量:每一个开关被按下的次数(0.1).每一个开关的转 ...

随机推荐

  1. JSTL详解实例

    JSTL标签库的使用是为类弥补html表的不足,规范自定义标签的使用而诞生的.在告别modle1模式开发应用程序后,人们开始注重软件的分层设计,不希望在jsp页面中出现java逻辑代码,同时也由于自定 ...

  2. Linux Basic学习笔记01

    介绍课程: 中级: 初级:系统基础 中级:系统管理.服务安全及服务管理.Shell脚本: 高级: MySQL数据库: cache & storage 集群: Cluster lb: 4laye ...

  3. Lucene.Net(转)

    出处:http://www.cnblogs.com/piziyimao/archive/2013/01/31/2887072.html 做过站内搜索的朋友应该对Lucene.Net不陌生,没做过的也许 ...

  4. Qt的QPixmap半透明

    QPixmap pix1(":/PixmapTest/Resources/Chrysanthemum.jpg"); QPixmap temp(pix1.size()); temp. ...

  5. Yii2 修改 breadcrumb 首页图标

    <?=Breadcrumbs::widget([ 'homeLink' => [ 'label' => '<i class="fa fa-home"> ...

  6. 利用APT实现Android编译时注解

    摘要: 一.APT概述 我们在前面的java注解详解一文中已经讲过,可以在运行时利用反射机制运行处理注解.其实,我们还可以在编译时处理注解,这就是不得不说官方为我们提供的注解处理工具APT (Anno ...

  7. FPGA的时钟质量对设计的影响

    小梅哥编写,未经许可严禁用于任何商业用途 近期,一直在调试使用Verilog编写的以太网发送摄像头数据到电脑的工程(以下简称以太网图传).该工程基于今年设计的一款FPGA教学板AC620.AC620上 ...

  8. CodeForces 343D water tree(树链剖分)

    Mad scientist Mike has constructed a rooted tree, which consists of n vertices. Each vertex is a res ...

  9. jmeter- 性能测试3:聚合报告(Aggregate Report )

    jmeter-监听器-聚合报告样例: 字段说明: label:请求名称,自己定义的 #Samples:这次测试中一共发出了多少个请求,如果模拟20个用户,每个用户迭代20次,那么就是400(未设置持续 ...

  10. 介绍自己以及github注册流程

    我叫何季生,来自网络工程141,学号是1413042027,我喜欢看一些动漫和游戏,对于编程并不是很厉害希望今年能够有所突破. github注册流程:在刚开始注册github时,我用的是qq浏览器,却 ...