Informatika1-2016/HF5

A MathWikiből
(Változatok közti eltérés)
 
(2 szerkesztő 9 közbeeső változata nincs mutatva)
1. sor: 1. sor:
= Octave házi feladat=
+
= Octave házi feladat (3 pont) =
 +
<!--
 +
Adjunk meg <tt>octave</tt>-ban egy
 +
x = megoldas(n,c,d)
 +
alakban hívható függvényt, ami megadja egy <math>n</math>-ismeretlenes, homogén lineáris egyenletrendszer egy megoldását. Ez az egyenletrendszer <math>n=6</math> 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
  
Írjatok egy <tt>Octave</tt> függvényt, ami kiszámolja a komplex <math>f: z\mapsto e^z-1</math> függvényt.
+
Az első argumentumban megadott <math>n</math> változótól függjön az <tt>A</tt> mátrix mérete (<math>n\times n</math>-es) és egyben a jobb oldali vektor mérete is (<math>n\times1</math>-es)!<br>
A függvény bemenete egy <math>d</math> lépésköz legyen, aminek hatására le kell generálni az alábbi <math>(n+1)\times(n+1)</math>-es mátrixot:
+
Az <tt>A</tt> mátrix rangja <math>n - 2</math> (tesztelés közben ellenőrizzük), így nulltere 2-dimenziós, tehát az összes megoldás <math>c\mathbf{x}_1 + d\mathbf{x_2}</math> alakba írható, ahol <math>\mathbf{x}_1, \mathbf{x}_2</math> a nullteret kifeszítő vektorok. A függvény tehát az <math>(n,c,d)</math> bemenetre az <math>c\mathbf{x}_1 + d\mathbf{x}_2</math> megoldást adja vissza.
  
<math>A_{i,j} = i\cdot d + j\cdot d\cdot\sqrt{-1}</math> ahol <math>i,j=0,1,2\ldots n</math>
+
Segítség:
 +
* Használhatjátok a <tt>null</tt> vagy <tt>rref</tt> parancsot!
  
majd ennek minden elemére elvégezni ''f''-et. A függvény ezt azt eredményül kapott <math>(n+1)\times(n+1)</math>-es mátrixot adja vissza!
+
Formai követelmények:
 +
* A megoldást egy <tt>.m</tt> 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
  
A házit a szokásos email-címre küldjétek és egyetlen csatolmányt tartalmazzon
+
'''Beadási határidő: 2016. november  24. 23:59 CET'''
  
  KURZUS_HF5_felhasználónév.m
+
Tanács:
 +
* A <tt>megoldas</tt> függvény belsejében minden parancsot pontosvesszővel ('''<tt>;</tt>''') zárjunk le.
 +
* Érdemes [[Putty_haszn%C3%A1lata|Putty]]-al belépni a <tt>leibniz</tt>-re és ott használni az <tt>octave</tt>-ot és [[WinScp_haszn%C3%A1lata|WinScp]]-vel szerkeszteni a beküldendő fájlt.
 +
* Teszteléshez használhatjuk az <tt>octave</tt>-ot parancssorból így:
 +
  borbely@leibniz:~$ <b>octave T9_HF5_borbely.m</b>
  
névvel, melyben a megadott függvényt valósítjátok meg. [https://en.wikibooks.org/wiki/Octave_Programming_Tutorial/Writing_functions Segítség itt]!
+
== 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 <math>n\times(2n)</math> 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 <math>n=4</math> 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 <math>n</math>-dimenziós '''b''' vektort, melynek elemei 2-hatvány plusz 1 alakúak <math>2^0+1</math>-től indulva, például esetünkben
 +
  2
 +
  3
 +
  5
 +
  9
 +
Aki kicsit utánaszámol, láthatja, hogy a <math>\mathbf{Px}=\mathbf b</math> 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 <math>n</math>, é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 <math>n<8</math>. Ha <math>n\ge8</math>, a program csak annyit írjon ki, hogy "Túl nagy adat!". Például <math>n=4</math> 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 <tt>.m</tt> 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 <tt>megoldas</tt> függvény belsejében minden parancsot pontosvesszővel ('''<tt>;</tt>''') zárjunk le.
 +
* Aki nem telepítette az octave-ot, az megoldhatja a feladatot otthonról a [[Putty_haszn%C3%A1lata|Putty]]-al, belépve a <tt>leibniz</tt>-re és ott használva az <tt>octave</tt>-ot és [[WinScp_haszn%C3%A1lata|WinScp]]-vel szerkesztve a beküldendő fájlt. Teszteléshez használhatjuk az <tt>octave</tt>-ot parancssorból így:
 +
borbely@leibniz:~$ <b>octave T0_HF5_borbely.m</b>

A lap jelenlegi, 2016. november 15., 16:08-kori változata

Octave házi feladat (3 pont)

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 parancsot pontosvesszővel (;) zárjunk le.
  • Aki nem telepítette az octave-ot, az megoldhatja a feladatot otthonról a Putty-al, belépve a leibniz-re és ott használva az octave-ot és WinScp-vel szerkesztve a beküldendő fájlt. Teszteléshez használhatjuk az octave-ot parancssorból így:
borbely@leibniz:~$ octave T0_HF5_borbely.m
Személyes eszközök