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 根 ...
随机推荐
- netstat命令
netstat命令会罗列出当前所有的网络连接.连接统计以及路由表信息.默认情况下,netstat命令将罗列出本地计算机所有开启的端口情况,以及它所连接的外部计算机情况. 端口就像一所房子的房门一样.数 ...
- Unix目录结构的来历(转)
原文:http://www.ruanyifeng.com/blog/2012/02/a_history_of_unix_directory_structure.html Unix(包含Linux)的初 ...
- js关于页面坐标api
网页可见区域宽: document.body.clientWidth;网页可见区域高: document.body.clientHeight;网页可见区域宽: document.body.offset ...
- [MAC]2015款MACBOOK使用BOOTCAMP安装WIN8.1+多分区
注意事项: 2013年以前,带光驱的,请使用WinClone安装WIN7或WIN8,或可使用BOOTCAMP制作WINDOWS安装光盘 13-14年,不带光驱的,也能使用WinClone安装WIN7和 ...
- Asp.Net 4.0 FormAuthentication 原理
建立一个使用Asp.Net Membership管理登陆登出信息的网站 1. 创建一个Asp.Net Mvc 3 示例网站. 2. 创建自定义的MemberShipProvider,并在Web.CON ...
- Java画图程序设计
本文讲述一个画图板应用程序的设计,屏幕抓图如下: 『IShape』 这是所有图形类(此后称作模型类)都应该实现接口,外部的控制类,比如画图板类就通过这个接口跟模型类“交流”.名字开头的I表示它是一个接 ...
- 查linux端口连接情况用命令netstat
查linux端口连接情况用命令netstat netstat -apn |grep cdnbest 或netstat –apn | grep 3320
- fiddler 配置
fiddler 是一个抓包工具: 配置模拟器:(逍遥游安卓模拟器) 逍遥参考:http://www.xyaz.cn/thread-163-1-1.html 1.启动模拟器后,点击设置,点击进入Wi-F ...
- Python--Argparse学习感悟
笔者在https://docs.python.org/2/howto/argparse.html#id1上,学习到了argparse的基本概念和使用规范,学习过后忍不住将自己的一些体会和大家分享一下. ...
- [转载] Android Bander设计与实现 - 设计篇
本文转载自: http://blog.csdn.net/chenxiancool/article/details/17454593 摘要 Binder是Android系统进程间通信(IPC)方式之一. ...