2. Feladat

class

Írj egy osztályt, melynek elemei polinomok.

  • Az objektumok inicializálásakor megadott lista tartalmazza az adott polinom együtthatóit (tetszőlegesen sok együttható lehet!).
  • Az objektumok inicializálásakor a megadott együthatók számát tároljuk el a fok_szam attribútumban.
  • Legyen az osztálynak egy olyan metódusa, ami a $[-1,1]$ intervallumban 100 pontban kiértékeli és ábrázolja a polinomot piros 3 vonalszélességű egyenletes vonallal. Legyen a metódus neve mutasd_meg!
  • Egy mintapéldával demonstráld, hogy az osztályod jól működik!

Megoldás

Mivel ebben a feladatban a pylab több funkcióját használni fogjuk, először ezt töltsük be!

In [1]:
%pylab inline
Populating the interactive namespace from numpy and matplotlib

Ezután létrehozzuk a polinom osztályt. Két változója van, az egyikben az együtthatókat tárolja, a másikban a fokszámot. Az inicializációkor mind a két változó megkapja az értékét a paraméterül kapott tömb alapján.

Ezen kívül, az osztály még két függvényt tartalmaz, a kiszamol és a mutasd_meg nevű függvényeket. A kiszamol függvény egy paraméterül kapott tömb értékeihez kiszámolja a polinom által hozzájuk rendelt értéket, és az eredményt szintén tömb formájában visszaadja. A mutasd_meg függvény pedig, a kért függvény, ami a $\left[ -1, 1 \right]$ intervallumon ábrázolja a polinomot.

In [2]:
class polinom:
    '''Ez egy polinom osztály'''
    
    def __init__(self, *args):               # Inicializációkor értéket ad a változóknak
        self.egyutthato = array(args)
        self.fok_szam = len(args)
        
    def kiszamol(self, *args):
        '''A paraméterül kapott tömb elemeihez hozzárendel értékeket'''
        eredmeny = zeros(len(args))          # A később visszaadandó eredmény-tömböt létrehozzuk
        for i in range(0, self.fok_szam):    # Majd az együtthatókon végigmenve, kiszámoljuk a függvényértékeket
            eredmeny += self.egyutthato[i]*(array(args)**i)
        return eredmeny                      # És végül a függvény visszaadja az eredményt
    
    def mutasd_meg(self):
        '''A [-1, 1] intervallumon ábrázolja a polinomot'''
        x = linspace(-1, 1, 100)
        plot(x, self.kiszamol(*x), 'r-', lw=3)
        xlabel("x tengely")
        ylabel("y tengely")

Végül, létrhozunk egy teszt-polinomot, hogy megvizsgáljuk, jól működik-e a létrehozott osztály:

In [3]:
teszt = polinom(1, 2, 2, 2)
In [4]:
teszt.mutasd_meg()