Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.
Nástěnka
❗22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
❗04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
❗23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.
Nejste přihlášen(a). Přihlásit
Ahoj, potřeboval bych pomoct s příkladem do školy, jsem úplně ztracený. Zde je zadání:
Matici mám udělanou ale potom se ztrácím v jednotlivých podmínkách, proto bych chtěl poprosit o pomoc.
Předem mockrát děkuji.
Offline
↑ cof3:
Dobrý den. Řekl bych, že pro Vás může být účelné zkusit, jak to po krocích dělá "Gauss Jordan Elimination Calculator" tady: Odkaz
Zkuste si udělat matici třeba 5 x 6 (tj. včetně pravé strany) spustit eliminaci - program popíše po krocích co dělá včetně zobrazení postupně upravovaných matic.
Předpokládám, že to bude dostatečně inspirující pro pohled do (s ohledem na tvar zadané matice) poměrně jednoduchého algoritmu.
Edit: Vidím, že jsem to dal pozdě, ale už to nechám.
Offline
↑ Bati:
ak som spravne pochopil implementaciu co uvadzas, tak ta nesplna podmienky zadania, lebo maju explicitnu poziadavku, ze nemaju ukladat nulove prvky matice A.
↑ cof3:
ja by som postupoval tak, ze by som v nejakom vektore a[0..n-1] drzal posledny stlpec matice A a vo vektore b[0..n-1] drzal pravu stranu rovnice.
Najprv by som si vyrobil na diagonale jednotky:
for(i=0;i<n;i++) {a[i]:=a[i]/4 ; b[i]:=b[i]/4;}
Potom riadkove upravy co by to previedli na hornu trojuholnikovu maticu bu mali byt nejake taketo:
for(i=0;i<n-2;i++) {a[i+2]:=a[i+2]-0.5*a[i] ; b[i+2]:=b[i+2]-0.5*b[i];}
a potom ked chceme diagonalny tvar, tak
b[n-1]:=b[n-1]/a[n-1];
for(i=0;i<n-1;i++) b[i]:=b[i]-a[i]*b[n-1];
a uz by si mal mat v b[] vysledok.
inak ak sa s tym pohras, tak by si si mal vsimnut, ze hodnoty a[] po prvych dvoch krokoch sa daju predpocitat t.j. vies napisat nejaky vzorcek a potom by si vlastne robil iba upravy s vektorom b[]
Offline
Offline
ahoj ↑ cof3:,
spáchal bych to asi takto:
const Pocet_Rovnic=5000;
Pocet_Iteraci=1000;
for i:=1 to Pocet_Rovnic do x[i]:=0;
for iterace:=1 to Pocet_Iiteraci do
begin
x[1]:=(-x[PocetRovnic]+b[1])/4;
x[2]:=(-x[PocetRovnic]+b[2])/4;
for i:=3 to Pocet_Rovnic-1 do
x[i]:=(-2*x[i-2]-x[PocetRovnic]+b[i])/4;
x[Pocet_Rovnic]:=(-2*x[Pocet_Rovnic-2]+b[PocetRovnic])/4;
end;
Offline
↑ Eratosthenes:
pravda, nejak som sa nechal uniest iba prvym menom a pisal som o Gaussovej eliminacnej metode
Offline
↑ Eratosthenes:
Zdravím, taky jsem reagoval hned na Gausse, dík za upozornění.
Offline