Anonymní profil Honza – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil Honza – Programujte.comAnonymní profil Honza – Programujte.com

 

Příspěvky odeslané z IP adresy 37.48.51.–

Honza
Java › GEM - Dolni trojuhelnikovy t…
30. 12. 2013   #185792

#1 Honza
Oprava

Tady je část tý mojí nádhery, na eliminaci pro jedničky nad diagonálou:


"pro nuly nad diagonálou"

Honza
Java › GEM - Dolni trojuhelnikovy t…
30. 12. 2013   #185791

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.

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý