📄 用java来编写列主元gauss消去法解方程组.txt
字号:
public class Solve {
public static void main(String[] args) {
//double[][] a; double[] b, x;
//int n;
//n = 3;
//a = new double[n][n];
//b = new double[n];
//x = new double[n];
//You might like to input data from a text file and comment the following paragraph.
double[][] a = {{2,0,0},{3,1,0},{0,4,1}};
double[] b = {2,4,5};
double[] x = {0,0,0};
int n;
n = b.length;
if (GaussEliminate(a,b,x))
{ for (int i=0; i<n; i++)
{ System.out.println(x[i]);
}
}
else
{ System.out.println("This is a single matrix!");
}
}
static boolean GaussEliminate(double[][] a, double[] b, double[] x) {
//Gaussian elimination method, coded by www.dayi.net btef (please let this line remain)
int maxI, i, j, n, n1;
double maxV, s1;
n = b.length;
n1 = n-1;
for (int ii=0; ii<n; ii++)
{ maxV = Math.abs(a[ii][ii]);
maxI = ii;
for (i=ii+1; i<n; i++)
{ if (Math.abs(a[i][ii])>maxV)
{ maxV = Math.abs(a[i][ii]);
maxI = i;
}
}
if (maxV == 0.0)
{ return(false);
}
if (ii!=maxI)
{ for (j=ii; j<n; j++) //exchange rows
{ s1 = a[maxI][j]; a[maxI][j] = a[ii][j]; a[ii][j] = s1;
}
s1 = b[maxI]; b[maxI] = b[ii]; b[ii] = s1;
}
for (i=ii+1; i<n; i++) //elemination
{ s1 = a[i][ii]/a[ii][ii];
for (j=ii+1; j<n; j++)
{ a[i][j] -= a[ii][j]*s1;
}
b[i] -= b[ii]*s1;
}
}
x[n1] = b[n1]/a[n1][n1]; //back substitution
for (i=n1; i>=0; i--)
{ s1 = 0.;
for (j=i+1; j<n; j++)
{ s1 += a[i][j]*x[j];
}
x[i] = (b[i]-s1)/a[i][i];
}
return(true);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -