#1 Honza
Oprava
Tady je část tý mojí nádhery, na eliminaci pro jedničky nad diagonálou:
"pro nuly nad diagonálou"
Zdravim,
dělám semestrálku do školy, a vybral jsem si asi větší ořech, z kterýho mi jde hlava kolem. Dělám program pro práci s maticí a maticema. Zkrátka mám matici libovolného tvaru a potřebuju jí eliminovat na horní a dolní trojúhelníkový tvar a na jednotkovou matici. Klasicky se GEM dělá že jsou nuly pod diagonálou, s tim jsem si poradil, ale pokud chci nuly nad diagonálou (a matice neni čtvercovýho typu, to je pak jednodušší) jsem ztracenej. Zkoušel jsem různý možnosti i gůglit a tak nějak jsem se dostal až sem.
Tady je část tý mojí nádhery, na eliminaci pro jedničky nad diagonálou:
public double[][] dolni() {
double[][] p = this.matice;
double d = 0.0;
for (int i = p[0].length - 1; i > 0; i--) {
for (int k = p.length - 1; k > 0; k--) {
d = p[k-1][i] / p[k][i];
for (int j = p[0].length - 1; j > 0; j--) {
p[k-1][j] = p[k-1][j] - p[k][j] * d;
}
}
}
return p;
}
Problém je hlavně v tom, že se nepoposunuju po diagonále při výpočtu "d" a pak mi tam zbude NaN. Jenže nevim jak se posouvat, ten druhej index pole "i" s tim nijak nehnu tak aby to platilo pro obecnou matici.
Poprosil bych zkušenější pokud by mi mohli poradit co nejsem schopnej vidět.
Když to tak píšu, napadá mě, že tu jednotkovou si nejdíve zkusim na papír než se budu ptát na blbosti. :)
Děkuju předem za radu.