Ich habe eine Schulaufgabe eingereicht und den Code als Artikel gespeichert.
Die wesentliche Pivot-Gauß-Eliminierungsmethode und der Code der Gauß-Eliminierungsmethode sind separate Artikel.
Bedingungen:
・ Löse ax = b
.
A A
ist eine Zufallsmatrix von 500 * 500 (Komponenten 1 bis 9)
・ Die 2 Normen von "(b-ax)" werden als Fehler in "err1 (Gauss)" und "err2 (Pivot Gauss)" geworfen.
・ Sprache ist Java.
Ganze Quelle
public static void main(String[] args) {
//TODO automatisch generierter Methodenstub
long t0;
long time;
int n =500;
int m=100;
double [][]a =new double[n][n];
double []b =new double[n];
double []x1 =new double[n];
double []x2 =new double[n];
double err1=0.0;
// double []err2 =new double[n];
// double []err1 = new double[n];
double err2 =0.0;
//Problem err1
t0 = System.currentTimeMillis();
for(int s=0;s<m;s++){
for(int j=0;j<n;j++){
for(int i=0;i<n;i++){
a[i][j]=Math.abs((Math.random()));
b[i] =Math.abs((Math.random()));
}
}
x1 =Calc.Gauss(a, b);
err1 = Calc.vecNorm2(Calc.subVec(b,Calc.matVec(a, x1)));
x2 =Calc.pivotGauss(a, b);
err2 =Calc.vecNorm2(Calc.subVec(b,Calc.matVec(a, x2)));
System.out.println(err1);
System.out.println(err2);
//System.out.println("\n"+err2);
}
//System.out.println(Math.abs((Math.random())));
time = System.currentTimeMillis()-t0;
System.out.println("\n Bearbeitungszeit:"+time);
//Calc.printVec2(err1);
}