Informatika2-2013/Gyakorlat11
A MathWikiből
(Változatok közti eltérés)
45. sor: | 45. sor: | ||
m2 = Matrix() # 5 x 5-ös csupa 0 mátrixot készít | m2 = Matrix() # 5 x 5-ös csupa 0 mátrixot készít | ||
</python> | </python> | ||
+ | |||
+ | |||
* '''__add__(self, jobboldal)''': az __add__ függvény akkor hívódik meg, ha egy ilyen objektummal összeadunk, tehát ha '''m1''' és '''m2''' is Matrix típusú, akkor '''m1 + m2''' utasításnál fut le. Méghozzá úgy, hogy '''m1'''-et veszi '''self'''-nek, az '''m2'''-t pedig a második paraméternek, szóval '''jobboldal'''-nak ebben az esetben. A függvénynek tehát egy Matrix típusú objektumot kell visszaadnia. (Ezt a függvényt megírtam, hogy példaként szolgáljon a továbbiakhoz.) | * '''__add__(self, jobboldal)''': az __add__ függvény akkor hívódik meg, ha egy ilyen objektummal összeadunk, tehát ha '''m1''' és '''m2''' is Matrix típusú, akkor '''m1 + m2''' utasításnál fut le. Méghozzá úgy, hogy '''m1'''-et veszi '''self'''-nek, az '''m2'''-t pedig a második paraméternek, szóval '''jobboldal'''-nak ebben az esetben. A függvénynek tehát egy Matrix típusú objektumot kell visszaadnia. (Ezt a függvényt megírtam, hogy példaként szolgáljon a továbbiakhoz.) | ||
+ | |||
+ | |||
* '''identity(self, n)''': ha meghívjuk egy már létezõ Matrix objektumon, akkor csináljon belõle n x n-es identitás mátrixot (fõátlóban egyesek, minden más 0). | * '''identity(self, n)''': ha meghívjuk egy már létezõ Matrix objektumon, akkor csináljon belõle n x n-es identitás mátrixot (fõátlóban egyesek, minden más 0). | ||
+ | |||
+ | |||
* '''__mul__(self, jobboldal)''': az __add__-hoz hasonló, ez a szorzáskor hívódik, mátrixszorzást kellene csinálnunk, kicsit (1 ciklussal) bonyolultabb mint az összeadás, de annak a mintájára lehet csinálni. | * '''__mul__(self, jobboldal)''': az __add__-hoz hasonló, ez a szorzáskor hívódik, mátrixszorzást kellene csinálnunk, kicsit (1 ciklussal) bonyolultabb mint az összeadás, de annak a mintájára lehet csinálni. | ||
+ | |||
+ | |||
* '''setMatrix(self, M)''': a bemenete '''M''' listák listája, írja át a mátrixot úgy, hogy ez a bemeneti '''M''' legyen. | * '''setMatrix(self, M)''': a bemenete '''M''' listák listája, írja át a mátrixot úgy, hogy ez a bemeneti '''M''' legyen. | ||
+ | |||
+ | |||
* '''__repr__(self)''': ez a függvény akkor hívódik meg, ha kiiratjuk az objektumot, szóval ha '''print m1'''-et írunk. A függvénynek egy str (string)-et kell visszaadnia, tehát az üres "" string-bõl kellene felépíteni a mátrix string-jét. Ehhez egy hasznos tudnivaló: | * '''__repr__(self)''': ez a függvény akkor hívódik meg, ha kiiratjuk az objektumot, szóval ha '''print m1'''-et írunk. A függvénynek egy str (string)-et kell visszaadnia, tehát az üres "" string-bõl kellene felépíteni a mátrix string-jét. Ehhez egy hasznos tudnivaló: | ||
<python> | <python> | ||
54. sor: | 64. sor: | ||
print str(a) + str(24) # 1524-et ír ki | print str(a) + str(24) # 1524-et ír ki | ||
</python> | </python> | ||
+ | |||
+ | |||
* '''__len__(self)''': | * '''__len__(self)''': | ||
* '''__sub__(self, jobboldal)''': | * '''__sub__(self, jobboldal)''': |
A lap 2013. április 23., 03:33-kori változata
Ismétlés
- Osztályok:
class Test: def fv(self, n): # self mindig az elsõ paramétere a metódusoknak self.v = n # ha itt csak azt írnám, hogy v = n az nem jó, mert a v egy lokális változó lenne t = Test() # Test típusú objektum létrehozása t.fv(4) # meghívjuk a fv metódusát t-nek print t.v # ekkor a v adattagja 4 lesz print t.__dict__ # megnézhetjük az adattagokat
- Hibakezelés:
l = [1, 2, 3] try: print l[1] except: print "ide nem jutunk, mer nem lesz hiba" try: print l[5] except: print "ide jutottunk, de nem lett futas kozben hiba"
- Mátrix osztály:
Elkezdtünk írni egy mátrix osztályt, jelenleg elég kezdetleges, ezt fogjuk folytatni a mai gyakorlaton.
Feladat
Mátrix folytatása
Innnen letölthetitek az eddigi osztályt, a következõ sorokban leírt metódusok leírásának fejeivel kiegészítve.
- __init__(self, n = 5): az __init__ metódus akkor fut le amikor létrehozunk egy objektumot (tehát pl az ismétlésben amikor azt írjuk t = Test()), ezzel tudjuk egy kezdõállapotba állítani az objektumunkat. Itt most az lenne a feladat, hogy a kapott n számnak megfelelõen egy n x n-es csupa 0 mátrix legyen a létrehozott mátrixunk. Mint korábban most is az A adattagjába tároljuk a mátrixot (listák listája). Most még pluszban vegyünk fel egy n adattagot is, amiben a mátrix dimenzióját tároljuk. A függvénydefiniálásban az n = 5 azt jelenti, hogy ha nem adjuk meg ezt a paramétert, akkor automatikusan 5-nek veszi, tehát írhatjuk ezeket:
m1 = Matrix(2) # 2 x 2-es csupa 0 mátrixot készít m2 = Matrix() # 5 x 5-ös csupa 0 mátrixot készít
- __add__(self, jobboldal): az __add__ függvény akkor hívódik meg, ha egy ilyen objektummal összeadunk, tehát ha m1 és m2 is Matrix típusú, akkor m1 + m2 utasításnál fut le. Méghozzá úgy, hogy m1-et veszi self-nek, az m2-t pedig a második paraméternek, szóval jobboldal-nak ebben az esetben. A függvénynek tehát egy Matrix típusú objektumot kell visszaadnia. (Ezt a függvényt megírtam, hogy példaként szolgáljon a továbbiakhoz.)
- identity(self, n): ha meghívjuk egy már létezõ Matrix objektumon, akkor csináljon belõle n x n-es identitás mátrixot (fõátlóban egyesek, minden más 0).
- __mul__(self, jobboldal): az __add__-hoz hasonló, ez a szorzáskor hívódik, mátrixszorzást kellene csinálnunk, kicsit (1 ciklussal) bonyolultabb mint az összeadás, de annak a mintájára lehet csinálni.
- setMatrix(self, M): a bemenete M listák listája, írja át a mátrixot úgy, hogy ez a bemeneti M legyen.
- __repr__(self): ez a függvény akkor hívódik meg, ha kiiratjuk az objektumot, szóval ha print m1-et írunk. A függvénynek egy str (string)-et kell visszaadnia, tehát az üres "" string-bõl kellene felépíteni a mátrix string-jét. Ehhez egy hasznos tudnivaló:
a = 15 print str(a) + str(24) # 1524-et ír ki
- __len__(self):
- __sub__(self, jobboldal):
- transpose(self):
- __pow__(self, jobboldal):
- random(self, n, m):
- subMatrix(self, kihagyott):
- det(self):