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. varchar(n),nvarchar(n) 长度、性能、及所占空间的说明

    varchar(n),nvarchar(n) 中的n怎么解释: nvarchar(n)最多能存n个字符,不区分中英文. varchar(n)最多能存n个字节,一个中文是两个字节. 所占空间: nvar ...

  2. 虚拟机virtualBox设置共享文件后,linux配置

    1.在/mnt下创建共享目录 mkdir /mnt/share 2.关联外部目录 mount -t vboxsf 共享文件夹名 /mnt/share/ 如:mount -t vboxsf BaiduS ...

  3. Halcon学习之条形码实时扫描

    dev_open_window(1,1,400,400,'blue',ThisHandle) create_bar_code_model([], [], BarCodeHandle) set_bar_ ...

  4. CentOS 7 安装 MySQL

    转自:http://www.centoscn.com/mysql/2016/0315/6844.html 环境 CentOS 7.1 (64-bit system) MySQL 5.6.24 Cent ...

  5. 【python】函数之内置函数

    Python基础 内置函数 今天来介绍一下Python解释器包含的一系列的内置函数,下面表格按字母顺序列出了内置函数: 下面就一一介绍一下内置函数的用法: 1.abs() 返回一个数值的绝对值,可以是 ...

  6. VS工程里的文件都是啥?如何打包? 2015-03-04

    打完补充:以下内容全部是我一家之言,只是愿意分享,内容如有不妥还请见谅. ====================================================== 刚才接收了一份代 ...

  7. OpenLDAP,一登录系统就修改密码

    http://guodayong.blog.51cto.com/263451/d-2 郭大勇的博客   1:修改配置文件 在前面打开注释 moduleload ppolicy.la modulepat ...

  8. 树莓派 config.txt

    树莓派开机默认配置文件:/boot/config.txt # For more options and information see # http://www.raspberrypi.org/doc ...

  9. python之socket 网络编程

    提到网络通信不得不复习下osi七层模型: 七层模型,亦称OSI(Open System Interconnection)参考模型,是参考模型是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互 ...

  10. Android笔记:如何在Fragment里使用findViewById()方法?

    在Activity中,可以直接用findViewById(int id),通过xml的id来找到对应的View. 查找官方的api,具体如下: https://developer.android.go ...