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求解线性方程组-列主元高斯消去法的更多相关文章

  1. [Matlab]求解线性方程组

    转自:http://silencethinking.blog.163.com/blog/static/911490562008928105813169/ AX=B或XA=B在MATLAB中,求解线性方 ...

  2. matlab 求解线性方程组之LU分解

    线性代数中的一个核心思想就是矩阵分解,既将一个复杂的矩阵分解为更简单的矩阵的乘积.常见的有如下分解: LU分解:A=LU,A是m×n矩阵,L是m×m下三角矩阵,U是m×n阶梯形矩阵 QR分解: 秩分解 ...

  3. 【原创】开源Math.NET基础数学类库使用(06)直接求解线性方程组

                   本博客所有文章分类的总目录:[总目录]本博客博文总目录-实时更新  开源Math.NET基础数学类库使用总目录:[目录]开源Math.NET基础数学类库使用总目录 前言 ...

  4. python 求解线性方程组

    Python线性方程组求解 求解线性方程组比较简单,只需要用到一个函数(scipy.linalg.solve)就可以了.比如我们要求以下方程的解,这是一个非齐次线性方程组: 3x_1 + x_2 - ...

  5. Numpy库进阶教程(一)求解线性方程组

    前言 Numpy是一个很强大的python科学计算库.为了机器学习的须要.想深入研究一下Numpy库的使用方法.用这个系列的博客.记录下我的学习过程. 系列: Numpy库进阶教程(二) 正在持续更新 ...

  6. matlab中求解线性方程组的rref函数

    摘自:http://www.maybe520.net/blog/987/ matlab中怎么求解线性方程组呢? matlab中求解线性方程组可应用克拉默法则(Cramer's Rule)即通过det( ...

  7. Numpy计算逆矩阵求解线性方程组

    对于这样的线性方程组: x + y + z = 6 2y + 5z = -4 2x + 5y - z = 27 可以表示成矩阵的形式: 用公式可以表示为:Ax=b,其中A是矩阵,x和b都是列向量 逆矩 ...

  8. Numpy求解线性方程组

    Numpy求解线性方程组 对于Ax=b,已知A和b,怎么算出x? 1. 引入包 2. 求解 验证

  9. Lapack求解线性方程组

    可参见这两个页面: 1. http://www.culatools.com/dense/lapack/ 2. http://www.netlib.org/lapack/lug/node1.html 根 ...

随机推荐

  1. dynamic 的使用 待续

    Dynamic 使用场景之一 : 替代反射 class Me { public string Blog { get; set; } public string GetName() { return&q ...

  2. 7.openssl enc

    对称加密工具.了解对称加密的原理后就很简单了. [root@xuexi tmp]# man enc NAME enc - symmetric cipher routines SYNOPSIS open ...

  3. Using Redis to store php session

    Using Redis to store php session 默认情况下,php将会将session信息存储在文件系统上,在单机情况下没有问题,但是当系统负载增大,或者在对系统可用性要求很高的场景 ...

  4. touches, targetTouches, changedTouches 区别

    1. touches: A list of information for every finger currently touching the screen2. targetTouches: Li ...

  5. JS,JQuery的扩展方法

    转 http://blog.csdn.net/tuwen/article/details/11464693 //JS的扩展方法: 1 定义类静态方法扩展 2 定义类对象方法扩展            ...

  6. 防御病毒邮件得看U-Mail邮件网关

    其实在邮件通讯中,那些病毒.垃圾邮件.钓鱼软件也相当危险,在海量邮件中,你没法确定什么时间.哪一封会发起进攻,攻击的目标都有谁?但是一旦得逞,造成的损失又特别大. 最近美国同行又发现了一个新骗局:美国 ...

  7. Rust的几个预测

    写程序多年,语言也用过不下十种,对于Rust有种亲人的感觉,就像在梦中见到过似的.现在对于Rust特做出以下一些预测,希望Rust会有更大的影响力. 1. 当前的Rust的核心功能现以比较稳定,可以用 ...

  8. Delphi 中记录类型 给记录指针赋值。

    PPersion=^TPersion;  TPersion=packed record     Name:string;     Sex:string;     Clasee:string;  end ...

  9. ubuntu apt 安装

    1. ./autogen.sh: libtoolize: not found sudo apt-get install aptitude sudo aptitude install libtool 2 ...

  10. 背包九讲 && 题目

    ★.背包求方案数的时候,多重背包是不行的,因为产生重复的背包会有多种情况. ★.背包记录路径的时候,其实是不行的,因为更新了12的最优解,如果它依赖于6这个背包,然后你后面改变了6这个背包,就GG 1 ...