Matematické Fórum


1. 8. 2026 (L) Fórum bude brzy uzavřeno 😿

Nejste přihlášen(a). Přihlásit

#1 03. 05. 2014 12:44

cof3
Zelenáč
Příspěvky: 1
Škola: fs
Pozice: student
Reputace:   
 

Gaussova-Seidelova metoda

Ahoj,  potřeboval bych pomoct s příkladem do školy, jsem úplně ztracený. Zde je zadání://forum.matweb.cz/upload3/img/2014-05/13773_V%25C3%25BDst%25C5%2599i%25C5%25BEek.JPG

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

 

#2 03. 05. 2014 13:22 Příspěvek uživatele Bati byl skryt uživatelem Bati. Důvod: moje blbost

#3 03. 05. 2014 13:28 — Editoval Jj (03. 05. 2014 13:29)

Jj
Příspěvky: 8769
Škola: VŠB, absolv. r. 1970
Pozice: Důchodce
Reputace:   599 
 

Re: Gaussova-Seidelova metoda

↑ 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.


Pokud se tedy nemýlím.

Offline

 

#4 03. 05. 2014 15:27 — Editoval Brano (03. 05. 2014 15:49)

Brano
Příspěvky: 2673
Reputace:   232 
 

Re: Gaussova-Seidelova metoda

↑ 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

 

#5 31. 05. 2014 23:36

Eratosthenes
Příspěvky: 3111
Reputace:   140 
 

Re: Gaussova-Seidelova metoda

ahoj ↑ Brano:, ↑ Jj:

to, co navrhujete, je sice hezké, ale není to Gauss-Seidlova metoda.


Budoucnost patří aluminiu.

Offline

 

#6 31. 05. 2014 23:48

Eratosthenes
Příspěvky: 3111
Reputace:   140 
 

Re: Gaussova-Seidelova metoda

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;


Budoucnost patří aluminiu.

Offline

 

#7 01. 06. 2014 10:12

Brano
Příspěvky: 2673
Reputace:   232 
 

Re: Gaussova-Seidelova metoda

↑ Eratosthenes:
pravda, nejak som sa nechal uniest iba prvym menom a pisal som o Gaussovej eliminacnej metode

Offline

 

#8 01. 06. 2014 11:36

Jj
Příspěvky: 8769
Škola: VŠB, absolv. r. 1970
Pozice: Důchodce
Reputace:   599 
 

Re: Gaussova-Seidelova metoda

↑ Eratosthenes:

Zdravím, taky jsem reagoval hned na Gausse, dík za upozornění.


Pokud se tedy nemýlím.

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson