求一个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 ]

最新文章

  1. Java SCP copy local file to remote implementation
  2. memcached基于socket访问memcache缓存服务器
  3. oracle触发器及异常处理 简单例子
  4. MUMmer 3使用方法
  5. Qt 窗口属性简介之Qt::WA_DeleteOnClose
  6. lsb_release 提示命令不存在
  7. Grunt构建工具能做哪些事?
  8. 达尔稳usb转RJ45的接口转换器(usb2.0接口)在ubuntu16.04中驱动(r8152)编译安装与使用
  9. Python使用Mysql官方驱动(取出dict类型的数据)
  10. python --(链表)
  11. vue中使用动画vue-particles
  12. python data science handbook1
  13. [总结]JS操作DOM常用API详解
  14. do-while语句及for语句(初学者)
  15. DispatcherServlet源码分析
  16. Hadoop生态圈-CDH与HUE使用案例
  17. docker 下安装mssql-server-linux
  18. uva 10344 23 out of 5 凑运算结果 全排列+dfs
  19. Git HEAD 意思详解 和版本回退
  20. python开发_tkinter_自己做的猜数字小程序

热门文章

  1. 1.单机部署hadoop测试环境
  2. U盘安装RedHat linux 5.3
  3. CodeForces 346A Alice and Bob (数学最大公约数)
  4. mysql - 简单的触发器和存储过程
  5. Hadoop压缩之CompressionCodecFactory
  6. TinyMCE3.x整合教程-Xproer.WordPaster
  7. vs下C# WinForm 解决方案里面生成的文件都是什么作用?干什么的?
  8. Linux或者window装svn
  9. maven中pom.xml中的scope讲解
  10. delphi Table切换控件顺序问题