JAVA求解线性方程组-列主元高斯消去法

时间:2023-02-11 08:13:37
 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求解线性方程组-列主元高斯消去法

验证正确:

JAVA求解线性方程组-列主元高斯消去法

JAVA求解线性方程组-列主元高斯消去法的更多相关文章

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

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

  2. 【原创】开源Math&period;NET基础数学类库使用&lpar;06&rpar;直接求解线性方程组

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

  3. python 求解线性方程组

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

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

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

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

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

  6. Lapack求解线性方程组

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

  7. java求解第N个素数&lpar;质数&rpar;

    面试中,遇到一个题目:求解第N个素数. import java.util.Scanner; public class GetPrimeNumber { public static int NthPri ...

  8. JAVA求解全排列

    一,问题描述 给定一个字符串,求出该字符串的全排列. 比如:"abc"的全排列是:abc.acb.bac.bca.cab.cba 二,实现思路 采用递归的方式求解.每次先选定一个字 ...

  9. Java求解迷宫问题:栈与回溯算法

    摘要: 使用栈的数据结构及相应的回溯算法实现迷宫创建及求解,带点JavaGUI 的基础知识. 难度: 中级 迷宫问题是栈的典型应用,栈通常也与回溯算法连用. 回溯算法的基本描述是: (1)  选择一个 ...

随机推荐

  1. gulp&plus;Babel 搭建ES6环境

    Gulp是什么? Gulp是一个工作流的构建系统,开发者可以使用它在网站开发过程中自动执行常见任务.Gulp是基于Node.js构建的,因此Gulp源文件和你用来定义任务的Gulp文件都被写进了Jav ...

  2. &lbrack;解决&rsqb;Kali Linux DHCP自动获取IP失败 坑爹的VMWare桥接

    root@kali:~# service networking restart [....] Running /etc/init.d/networking restart is deprecated ...

  3. sgu 108 Self-numbers II

    这道题难在 hash 上, 求出答案很简单, 关键是我们如何标记, 由于 某个数变换后最多比原数多63 所以我们只需开一个63的bool数组就可以了! 同时注意一下, 可能会有相同的询问. 我为了防止 ...

  4. 【HDOJ】1053 Entropy

    构造huffman编码,果断对字符进行状态压缩. #include <iostream> #include <cstdio> #include <cstring> ...

  5. Java Web项目(Extjs)报错七

    1.Java Web项目(Extjs)报错七 具体报错如下:

  6. Qt中OpenGL模块下将图片转化为纹理,并传入shader中

    QImage texture, buffer; buffer.load("C:/Users/wukesong/Pictures/flower.jpg"); texture = QG ...

  7. 编程实现将一个N进制数转换成M进制数

    问题:编程实现将一个N进制数转换成M进制数.(c/c++.Java.Javascript.C#.Python) 1.Python 手写算法版 def conversion_num(num, src, ...

  8. order by having group by

    1.group by 和having 的使用 SELECT *, count(`sku_quantity`)  as quantity FROM products  group by sku  hav ...

  9. Java字符串与文件的互转操作

    Java中有时候需要读取一个文本类的文件,将其转换为字符串,然后做进一步处理.Java中没有现成的API方法.   一.字符串转换为文件 /** * 将字符串写入指定文件(当指定的父路径中文件夹不存在 ...

  10. 数据结构与算法分析java——线性表3 &lpar;LinkedList&rpar;

    1. LinkedList简介 LinkedList 是一个继承于AbstractSequentialList的双向链表.它也可以被当作堆栈.队列或双端队列进行操作.LinkedList 实现 Lis ...