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

时间:2022-02-19 00:57:03

求一个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. &dollar;Gauss&dollar;消元

    $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 消元) &amp&semi;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. enableEventValidation是干什么的&quest;

    回发或回调参数无效.在配置中使用 <pages enableEventValidation="true"/> 或在页面中使用 <%@ Page EnableEve ...

  2. Mac OSX 快捷键&amp&semi;命令行总览

    大家初用Mac OSX可能不习惯,特别收集总结了Mac OSX 上的快捷键,方便大家参考 ,请叫我雷锋. 一.Mac OSX 快捷键 ctrl+shift                       ...

  3. WP8教程

    http://www.maiziedu.com/courses-list?technology_category=6

  4. &lbrack;转&rsqb;mysql 5&period;6 存储过程&plus;事务&plus;游标&plus;错误异常抛出&plus;日志写入

    转自:http://www.wolonge.com/post/detail/118249 DELIMITER $$ USE `ecstore`$$ DROP PROCEDURE IF EXISTS ` ...

  5. UITableView的编辑(插入、删除、移动)

    先说两个方法beginUpdates和endUpdates,几点注意事项: 一般我们把行.块的插入.删除.移动写在由这两个方法组成的函数块中.如果你不是在这两个函数组成的块中调用插入.删除.移动方法, ...

  6. Java设计模式---工厂模式(简单工厂、工厂方法、抽象工厂)

    工厂模式:主要用来实例化有共同接口的类,工厂模式可以动态决定应该实例化那一个类.工厂模式的形态工厂模式主要用一下几种形态:1:简单工厂(Simple Factory).2:工厂方法(Factory M ...

  7. 数据结构C语言版 弗洛伊德算法实现

    /* 数据结构C语言版 弗洛伊德算法  P191 编译环境:Dev-C++ 4.9.9.2 */ #include <stdio.h>#include <limits.h> # ...

  8. 使用javascript正则表达式实现遍历html字符串

    最近在尝试实现一个js模板引擎,其中涉及到使用js解析html字符串的功能.由于我实现的这个模板不止是要能替换参数输出html字符串,还要可以解析出每个dom元素的名称及参数啥的. 网上找到了一个叫做 ...

  9. RMI方式Ehcache集群的源码分析

    Ehcache不仅支持基本的内存缓存,还支持多种方式将本地内存中的缓存同步到其他使用Ehcache的服务器中,形成集群.如下图所示: Ehcache支持多种集群方式,下面以RMI通信方式为例,来具体分 ...

  10. Web安全工具大汇聚

    http://www.owasp.org/index.PHP/Phoenix/Tools http://sebug.net/paper/other/Web安全工具大汇聚.txt =========== ...