Gauss-Jordan消去法中完全选主元法求解线性方程组
Gauss-Jordan消去法中完全选主元法求解线性方程组
代码
public class GuassJ {
// 4 * 4 coefficient matrix a
double[][] a = {
{0.0, 2.0, 0.0, 1.0},
{2.0, 2.0, 3.0, 2.0},
{4.0, -3.0, 0.0, 1.0},
{6.0, 1.0, -6.0, -5.0}
};
// 4 * 1 coefficient matrix b
double[][] b = {
{0.0},
{-2.0},
{-7.0},
{6.0}
};
private void gaussj(double[][] a, int anrow,
double[][] b, int bncol) {
int icol = 0, irow = 0;
double big, dum, pivinv;
int n = anrow;
int m = bncol;
int[] indxr = new int[n],
indxc = new int[n],
ipiv = new int[n];
System.out.println("Coefficident matrix :");
output(a,4,b,1);
for (int i = 0; i < n; i++) ipiv[i] = 0;
for (int i = 0; i < n; i++) {
big = 0.0;
for (int j = 0; j < n; j++) {
if (ipiv[j] != 1) {
for (int k = 0; k < n; k++) {
if (ipiv[k] == 0) {
if (Math.abs(a[j][k]) >= big) {
big = Math.abs(a[j][k]);
irow = j;
icol = k;
}
}
}
}
}
ipiv[icol]= ipiv[icol] + 1;
if (irow != icol) {
for (int l = 0; l < n; l++) {
double mid = a[irow][l];
a[irow][l] = a[icol][l];
a[icol][l] = mid;
}
for (int l = 0; l < m; l++) {
double mid = b[irow][l];
b[irow][l] = b[icol][l];
b[icol][l] = mid;
}
}
indxr[i] = irow;
indxc[i] = icol;
if (a[icol][icol] == 0.0) System.out.println("gaussj: Singular Matrix");
pivinv = 1.0 / a[icol][icol];
a[icol][icol] = 1.0;
for (int l = 0; l < n; l++) {
if (l != icol) {
a[icol][l] *= pivinv;
}
}
for (int l = 0; l < m; l++) b[icol][l] *= pivinv;
for (int ll = 0; ll < n; ll++) {
if (ll != icol) {
dum = a[ll][icol];
a[ll][icol]=0.0;
for (int l = 0; l < n; l++) {
if (l != icol) {
a[ll][l] -= a[icol][l]*dum;
}
}
for (int l = 0; l < m; l++) b[ll][l] -= b[icol][l]*dum;
}
}
System.out.println("After " + (i + 1) + " time(s) elimination:");
output(a,4,b,1);
}
for (int l=n-1;l>=0;l--) {
if (indxr[l] != indxc[l]) {
for (int k = 0; k < n; k++) {
double mid = a[k][indxr[l]];
a[k][indxr[l]] = a[k][indxc[l]];
a[k][indxc[l]] = mid;
}
}
}
System.out.println("The final solution matrix:");
output(a,4,b,1);
}
private void output(double a[][], int anrow, double b[][], int bncol) {
for (int i = 0; i < anrow; i++) {
System.out.println(" | " + a[i][0] + " " +
a[i][1] + " " +
a[i][2] + " " +
a[i][3] + " | " + b[i][0] + " | ");
}
System.out.println("-----------------------------------------------");
}
public GuassJ() {
gaussj(a, 4, b, 1);
}
public static void main(String[] args) {
new GuassJ();
}
}
Gauss-Jordan消去法中完全选主元法求解线性方程组相关推荐
- 全选主元高斯消去法 matlab程序,[VB]全选主元高斯消去法求解线性方程组
功能: 使用全选主元高斯消去法求解线性方程组 ' 参数 n - Integer型变量,线性方程组的阶数 ' dblA - Double型 n x n 二维数组,线性方程组的系数矩 ...
- 主元分析法 matlab,数值分析实习作业之不选主元法高斯分解(Matlab)
1,用不选主元法今儿选主元法的高斯消去法求解下列方程组,并记下变换后的增广矩阵: (3) 0.729x1+0.81x2+0.9x3 = 0.6867 X1+x2+x3 = 1 1.331x1+1.21 ...
- 牛顿-拉普森法求解线性方程组原理及matlab程序
牛顿-拉普森法求解线性方程组原理及matlab程序 牛顿-拉普森法原理 Nowton-Raphson方法matlab程序? 牛顿-拉普森法原理 在多变量微积分和矩阵理论的交叉点是求解非线性代数方程 ...
- 数值计算(一)之解线性方程组(高斯消去法,列选主元消去法,全选主元消去法,杜立特尔分解,克洛特分解,乔里斯基分解)
解线性方程组即解一个多元一次方程组,例如 目录 消去法 分解法 消去法 原理 没有学过高级的解法也没关系,凭借我们初高中的知识足以解决这个问题 这是一个多元一次方程组,拥有n个未知量,也有n方程 我们 ...
- 部分主元法求解线性方程组
!//---------------原方程------------- !// x + y + z + w = 10 !// 2x + 3y + z + w = 15 !// 3x - y + 2z - ...
- 初等变换法求解线性方程组
初等变换:通过初等行(列同理)变换把增广矩阵变为简化阶梯型矩阵的线性方程组求解算法 具体步骤: 枚举每一列,找到枚举的当前列绝对值最大数的所在行 将该行换到最上面一行(第r行) 将该行第一个数(该 ...
- matlab逆矩阵/初等变换法求解线性方程组
线性方程组是线性代数学课的考虑范畴,会使用matlab解决,可以效率更快.matlab种逆矩阵是左除和右除.初等变换法就是一个rref函数 逆矩阵 两种格式熟记即可 X=A\B % 表示求解矩阵方程A ...
- 不选主元Gauss消去法
1.不选主元Gauss消去法原理 设Ax=b,其中A∈Rn×n. (1) 如果akk(k)≠0(k=1,2,···,n),则可以通过高斯消去法将Ax=b约化为等价的三角形线性方程组,如下: [a11( ...
- 线性代数 --- Gauss消元的部分主元法和完全主元法
Gauss消元的部分主元法和完全主元法 心怀二意的人,在他一切所行的路上都没有定见.----雅各书1章8节 笔者的一些话:刚开始写这篇文章的时候,我觉得高斯消元很简单.因为,这时的我已经完成了我一直想 ...
最新文章
- C++:运算符重载函数之成员运算符重载函数
- Golang 标准库提供的Log(一)
- arm汇编解析—tengine winograd_nhwc卷积实现
- 基于JavaWeb实现的研究室综合系统
- 源代码电影涉及的计算机思想,关于电影源代码的结局解释
- 抑制过拟合的方法之Dropout(随机删除神经元)
- 树莓派(Linux)与镜像源
- js中的extend
- 【LeetCode】【数组】题号:*48,旋转图像
- 洛谷 P3951 小凯的疑惑
- 北京自贸区国际商务服务片区挂牌 总面积48平方公里
- iPhone X改11Pro在线/免越狱QQ空间任意iPhone机型虚拟定位
- Qt QListView QStringListModel用法详解
- 第10章第4节:使用iSlide的统一色彩命令统一修改某个颜色 [PowerPoint精美幻灯片实战教程]
- ES 索引mapping之keyword;term查询添加keyword查询;更改mapping keyword类型
- 感恩母亲节主题活动照片作品征集小程序
- 程序流程图、N-S图、PAD图
- 【Python】PEP8规范中一些需要注意的地方
- 如何设置计算机自动连接宽带,宽带连接怎么设置,怎么设置宽带自动连接
- C语言入门:猴子吃桃问题