A második feladatban definiált polinomosztályból származtassunk egy alosztályt, mely rendelkezik egy új metódussal.
Az új metódus
x_0
változóval rendelkezzen, mely egy valós szám,x_0
gyöke-e a polinomnak,True
értékkel, ha x_0
gyöke a polinomnak,x_0
nem gyök, akkor a metódus térjen vissza False
értékkel, és írja ki a polinom értékét az x_0
helyen.x_0
gyök vagy nem, azt egy tol
tolerancia osztályváltozó alapján döntsük el, ami egy kicsi pozitív szám, azaz ha f(x_0)<tol
, akkor fogadjuk el x_0
-t gyöknek.Mivel ebben a feladatban a pylab
több funkcióját használni fogjuk, először ezt töltsük be!
%pylab inline
Ezután bemásoljuk a 2_feladatban elkészített polinom
osztályt:
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)
Majd megírjuk a kívánt alosztályt, ami már tartalmazza az új metódust is:
class alpolinom(polinom):
'''Ez a polinom osztály alosztálya'''
tol = 0.01 # A tolerancia osztályváltozó
def ujmetodus(self, x_0):
if abs(self.kiszamol(x_0)) < self.tol: # Ha a polinom értéke megfelelő, a visszatérési érték True
return True
else: # Ha nem, akkor kiírjuk, és a visszatérési érték False
print(self.kiszamol(x_0)[0])
return False
És végül, egy egy teszt polinommal kipróbáljuk a helyes működést:
teszt = alpolinom(1,2,2,2)
teszt.ujmetodus(-0.643)
teszt.ujmetodus(5.0)