JAVA求解线性方程组-列主元高斯消去法
package MyMath;
import java.util.Scanner;
public class Gauss {
/**
* @列主元高斯消去法
*/
static double x[];
static double a[][];
static double b[];
static double m;
static int n;
//选主元
public static void SelectAndChangeLine(int k){
int maxline=k;
for(int i=k+1;i<n;i++){
if(Math.abs(a[i][k])>a[maxline][k]){
maxline=i;
}
}
if(maxline!=k){
for(int j=0;j<n+1;j++){
b[j]=a[k][j];
a[k][j]=a[maxline][j];
a[maxline][j]=b[j];
}
}
}
//消元计算
public static void Elimination(int k){
for(int i=k+1;i<n;i++){
m=a[i][k]/a[k][k];
a[i][k]=0;
for(int j=k+1;j<n+1;j++){
a[i][j]=a[i][j]-m*a[k][j];
//System.out.println("tt="+m*a[k][j]);
}
}
}
//回代计算
public static void BacksSubstitution(){
for(int i=n-1;i>=0;i--){
for(int j=n-1;j>i;j--){
a[i][n]=a[i][n]-x[j]*a[i][j];
}
System.out.println(a[i][n]);
x[i]=a[i][n]/a[i][i];
}
}
//打印行
public static void PrintLine(double[] args){
for(int j=0;j<args.length;j++){
System.out.print(args[j]+" ");
}
}
//打印矩阵
public static void PrintMatrix(double[][] args){
for(int i=0;i<args.length;i++){
for(int j=0;j<args[i].length;j++){
System.out.print(args[i][j]+" ");
}
System.out.println();
}
}
public static void main(String[] args) {
Scanner as=new Scanner(System.in);
System.out.println("输入方程组的元数:");
n=as.nextInt();
System.out.println("输入方程组的系数矩阵a:");
a=new double[n][n+1];
b=new double[n+1];
x=new double[n];
for(int i=0;i<n;i++){
for(int j=0;j<n+1;j++){
a[i][j]=as.nextDouble();
}
}
as.close();
for(int i=0;i<n-1;i++){
SelectAndChangeLine(i);
System.out.println("第"+(i+1)+"次换主元");
PrintMatrix(a);
Elimination(i);
System.out.println("第"+(i+1)+"次消元");
PrintMatrix(a);
}
BacksSubstitution();
PrintLine(x);
}
}
代入求解:

验证正确:

JAVA求解线性方程组-列主元高斯消去法的更多相关文章
- [Matlab]求解线性方程组
转自:http://silencethinking.blog.163.com/blog/static/911490562008928105813169/ AX=B或XA=B在MATLAB中,求解线性方 ...
- matlab 求解线性方程组之LU分解
线性代数中的一个核心思想就是矩阵分解,既将一个复杂的矩阵分解为更简单的矩阵的乘积.常见的有如下分解: LU分解:A=LU,A是m×n矩阵,L是m×m下三角矩阵,U是m×n阶梯形矩阵 QR分解: 秩分解 ...
- 【原创】开源Math.NET基础数学类库使用(06)直接求解线性方程组
本博客所有文章分类的总目录:[总目录]本博客博文总目录-实时更新 开源Math.NET基础数学类库使用总目录:[目录]开源Math.NET基础数学类库使用总目录 前言 ...
- python 求解线性方程组
Python线性方程组求解 求解线性方程组比较简单,只需要用到一个函数(scipy.linalg.solve)就可以了.比如我们要求以下方程的解,这是一个非齐次线性方程组: 3x_1 + x_2 - ...
- Numpy库进阶教程(一)求解线性方程组
前言 Numpy是一个很强大的python科学计算库.为了机器学习的须要.想深入研究一下Numpy库的使用方法.用这个系列的博客.记录下我的学习过程. 系列: Numpy库进阶教程(二) 正在持续更新 ...
- matlab中求解线性方程组的rref函数
摘自:http://www.maybe520.net/blog/987/ matlab中怎么求解线性方程组呢? matlab中求解线性方程组可应用克拉默法则(Cramer's Rule)即通过det( ...
- Numpy计算逆矩阵求解线性方程组
对于这样的线性方程组: x + y + z = 6 2y + 5z = -4 2x + 5y - z = 27 可以表示成矩阵的形式: 用公式可以表示为:Ax=b,其中A是矩阵,x和b都是列向量 逆矩 ...
- Numpy求解线性方程组
Numpy求解线性方程组 对于Ax=b,已知A和b,怎么算出x? 1. 引入包 2. 求解 验证
- Lapack求解线性方程组
可参见这两个页面: 1. http://www.culatools.com/dense/lapack/ 2. http://www.netlib.org/lapack/lug/node1.html 根 ...
随机推荐
- SQLServer : EXEC和sp_executesql的区别
MSSQL为我们提供了两种动态执行SQL语句的命令,分别是EXEC和sp_executesql.通常,sp_executesql则更具有优势,它提供了输入输出接口,而EXEC没有.还有一个最大的好处就 ...
- mybatis执行批量更新update
Mybatis的批量插入这里有http://ljhzzyx.blog.163.com/blog/static/38380312201353536375/.目前想批量更新,如果update的值是相同的话 ...
- C# 异常处理 <-> 连接远程数据库遇到的问题
PS : 移植类库需要重新生成解决方案:(要不然不能将类库添加进项目)
- window7下karma 报 nodejs request TypeError: The header content contains invalid characters BUG
这个BUG 估计只有中国人才 遇到 打开你的依赖node_modules\karma\node_modules\connect\lib\patch.js 将里面的setHeader方法改成下面这样,干 ...
- 深入浅出讲解:php的socket通信
对TCP/IP.UDP.Socket编程这些词你不会很陌生吧?随着网络技术的发展,这些词充斥着我们的耳朵.那么我想问:1. 什么是TCP/IP.UDP?2. Socke ...
- JavaScript DOM编程艺术读书笔记(二)
第五章 最佳实践 平稳退化(graceful degradation):如果正确使用了JavaScript脚本,可以让访问者在他们的浏览器不支持JavaScript的情况下仍能顺利地浏览你网站.虽然某 ...
- ubuntu 安装mysql-python和 python-ldap,navicate 问题
1.Ubuntu 下 pip install mysql-python 报错 EnvironmentError: mysql_config not found 原因是缺少mysqlclient 包,执 ...
- Altium Designer15 卡在登陆界面解决办法:
Altium Designer15 卡在登陆界面解决办法: 在我的电脑系统盘中找到下面目录(注:如果看不到,需要取消隐藏文件选项.) C:\Documents and Settings\Adminis ...
- jquery版本清单
PM> Install-Package jQuery -Version 1.11.2 jQuery 2.1.3 (latest stable) 315444 Wednesday, Decembe ...
- selenium--环境搭建步骤
1.安装Python 2.安装setuptools 3.安装pip(Python3.X自带pip) 4.安装selenium(步骤在另一个博客中已提及)