Informatika1-2016/HF5

A MathWikiből
A lap korábbi változatát látod, amilyen Wettl (vitalap | szerkesztései) 2016. november 13., 11:56-kor történt szerkesztése után volt.

Octave házi feladat

Adjunk meg octave-ban egy

x = megoldas(n,c,d)

alakban hívható függvényt, ami megadja egy n-ismeretlenes, homogén lineáris egyenletrendszer egy megoldását. Ez az egyenletrendszer n = 6 esetén a következő alakot ölti:

A*x = b

ahol

b = [0; 0; 0; 0; 0; 0]
A =
  1 -2  1  0  0  0
  1 -2  1  0  0  0
  0  1 -2  1  0  0
  0  0  1 -2  1  0
  0  0  0  1 -2  1
  0  0  0  1 -2  1

Az első argumentumban megadott n változótól függjön az A mátrix mérete (n\times n-es) és egyben a jobb oldali vektor mérete is (n\times1-es)!
Az A mátrix rangja n − 2 (tesztelés közben ellenőrizzük), így nulltere 2-dimenziós, tehát az összes megoldás c\mathbf{x}_1 + d\mathbf{x_2} alakba írható, ahol \mathbf{x}_1, \mathbf{x}_2 a nullteret kifeszítő vektorok. A függvény tehát az (n,c,d) bemenetre az c\mathbf{x}_1 + d\mathbf{x}_2 megoldást adja vissza.

Segítség:

  • Használhatjátok a null vagy rref parancsot!

Formai követelmények:

  • A megoldást egy .m kiterjesztésű szövegfájlban küldjétek el.
  • A fájl a feladatban kitűzött egyetlen függvény definícióját tartalmazza és semmi mást
  • A fájl végén legyen egy üres sor.
  • A fájl neve a következő formátumú legyen:
T<tankör>_HF5_<felhasználónév>.m

Beadási határidő: TBD

Tanács:

  • A megoldas függvény belsejében minden parancsot pontosvesszővel (;) zárjunk le.
  • Érdemes Putty-al belépni a leibniz-re és ott használni az octave-ot és WinScp-vel szerkeszteni a beküldendő fájlt.
  • Teszteléshez használhatjuk az octave-ot parancssorból így:
borbely@leibniz:~$ octave T9_HF5_borbely.m

Másik lehetőség

Mielőtt a beadandó házi feladat megoldásához kezdenétek, végezzétek el a következő lépéseket, melyek segítenek a feladat megoldásában!

Adjatok pozitív egész értéket egy változónak, pl.

>> n = 4

Nézzétek meg mi történik a pascal(n) és a pascal(n,-1) parancsok hatására! Állítsatok elő egy n\times(2n) méretű mátrixot, melynek első blokkja egy Pascal-háromszög (alsó háromszögmátrix), mellette egy egységmátrix, azaz például $n=4$ esetén

  1   0   0   0   1   0   0   0
  1   1   0   0   0   1   0   0
  1   2   1   0   0   0   1   0
  1   3   3   1   0   0   0   1

Nevezzétek el e mátrixot P-nek. Ezután képezzetek egy n-dimenziós b vektort, melynek elemei 2-hatvány plusz 1 alakúak 20 + 1-től indulva, például esetünkben

  2
  3
  5
  9

Aki kicsit utánaszámol, láthatja, hogy a \mathbf{Px}=\mathbf b egyenletrendszer megoldható, egy megoldása a csupa 1-esből álló vektor. Határozzátok meg ennek a sortérbe eső egyetlen megoldását (mátrixosztás!). Az összes megoldáshoz meg kell még határozni a nullteret kifeszítő vektorokat. Ezt az octave a

null(P) 

paranccsal megadja.

Végül a beadandó feladat: Írjatok egy függvényt, melynek egyetlen paramétere n, és amely válaszul kiírja a fenti egyenletrendszer egyetlen sortérbe eső megoldását és a nullteret generáló vektorok mátrixát abban az esetben, ha n < 8! Ha n\ge8, a program csak annyit írjon ki, hogy "Túl nagy adat!". Például n = 4 esetén

  1.3333e+00
  1.3333e+00
  1.0000e+00
  3.3333e-01
  6.6667e-01
  3.3333e-01
  4.4409e-16
  3.3333e-01
 -0.616696  -0.106047  -0.043625   0.021813
  0.399665  -0.409452  -0.144854  -0.010906
 -0.165320   0.570204  -0.172812  -0.163594
 -0.067442  -0.293872   0.778499  -0.389249
  0.616696   0.106047   0.043625  -0.021813
  0.217031   0.515499   0.188479  -0.010906
 -0.017314   0.354746   0.506146   0.163594
 -0.018896  -0.082339   0.218125   0.890937

Formai követelmények:

  • A megoldást egy .m kiterjesztésű szövegfájlban küldjétek el. Igyekezzetek a szövegfájlt a program értelme szerint formázni 2 szóközzel beljebb húzva a sorokat (ez nem kötelező). Például így:
function ...
  if ...
    ...
  else
    ...
  endif
endfunction

  • A fájl a feladatban kitűzött egyetlen függvény definícióját tartalmazza és semmi mást! (pl. ne legyen benne prompt sem, azaz >>)
  • A fájl végén legyen egy üres sor.
  • A fájl neve a következő formátumú legyen:
T<tankör>_HF5_<felhasználónév>.m

Beadási határidő: TBD

Tanács:

  • A megoldas függvény belsejében minden olyan parancsot pontosvesszővel (;) zárjunk le.
  • Aki nem töltötte le az octave-ot, megoldhatja a feladatot otthonról a Putty-al, belépve a leibniz-re és ott használni az octave-ot és WinScp-vel szerkeszteni a beküldendő fájlt. Teszteléshez használhatjuk az octave-ot parancssorból így:
borbely@leibniz:~$ octave T9_HF5_borbely.m
Személyes eszközök