Erstellen einer Polynomklasse / Methode f. Ableitung
Verfasst: Freitag 10. Juli 2020, 12:54
Hallo zusammen,
für die Uni steht bei mir diesen Semester eine Einführung in Python an. Aufgrund der Corona-Situation ist allerdings der komplette Kurs in Eigenregie online zu erledigen. Das klappt soweit auch ganz gut mit den bereitgestellten Unterlagen, allerdings hänge ich jetzt seit Stunden an einer Aufgabe und befürchte, ich sehe den Wald vor lauter Bäumen einfach nicht. Nachfragen beim Dozenten sind auch schwierig, deswegen hoffe ich darauf, dass ihr mir vielleicht auf den Sprung helfen mögt, denn im Internet habe ich auch nichts gefunden, was mir weiterhilft.
Es geht darum, eine Klasse zu schreiben, die ein Polynom beschreibt. Zusätzlich soll es Methoden geben, die dieses Polynom an einer Stelle x auswerten und eine weitere, die die Ableitung bildet. Die Ableitung soll dabei ebenfalls wieder ein Polynom sein. Die Auswertung an Stelle x funktioniert. Problematisch ist die Ableitung, also die untere Methode. Offenbar funktioniert die Funktion an sich schon (zumindest gibt sie die richtigen Koeffizienten aus). Wenn ich allerdings dann versuche, die erhaltene Ableitung an einer Stelle x auszuwerten (müsste ja gehen, wenn sie ebenfalls ein Polynom ist), bekomme ich folgenden Fehler: "can't multiply sequence by non-int of type 'float'"
Daran verzweifle ich seit Stunden. Hat jemand einen Tipp für mich?
class Polynom:
"""Erstellen der Polynome mit Koeffizienten koeff, Eingabe in der Form ko_1*x**n, ko_2*x**(n-1), ..."""
def __init__(self, *koeff):
"""Speichern der eingegebenen Parameter als Liste"""
self.koeff = list(koeff)
def eval(self, x):
"""Auswertung des Polynoms an der Stelle x, Rueckgabewert y"""
y = 0
for i in range(len(self.koeff)):
y+=(self.koeff*x**(len(self.koeff)-i-1))
return(y)
def derivative(self):
"""Bilden einer Ableitung"""
diff = []
for i in range(len(self.koeff)-1):
diff.append((len(self.koeff)-(i+1))*self.koeff)
print(diff)
deriv = Polynom(diff)
return(deriv)
für die Uni steht bei mir diesen Semester eine Einführung in Python an. Aufgrund der Corona-Situation ist allerdings der komplette Kurs in Eigenregie online zu erledigen. Das klappt soweit auch ganz gut mit den bereitgestellten Unterlagen, allerdings hänge ich jetzt seit Stunden an einer Aufgabe und befürchte, ich sehe den Wald vor lauter Bäumen einfach nicht. Nachfragen beim Dozenten sind auch schwierig, deswegen hoffe ich darauf, dass ihr mir vielleicht auf den Sprung helfen mögt, denn im Internet habe ich auch nichts gefunden, was mir weiterhilft.
Es geht darum, eine Klasse zu schreiben, die ein Polynom beschreibt. Zusätzlich soll es Methoden geben, die dieses Polynom an einer Stelle x auswerten und eine weitere, die die Ableitung bildet. Die Ableitung soll dabei ebenfalls wieder ein Polynom sein. Die Auswertung an Stelle x funktioniert. Problematisch ist die Ableitung, also die untere Methode. Offenbar funktioniert die Funktion an sich schon (zumindest gibt sie die richtigen Koeffizienten aus). Wenn ich allerdings dann versuche, die erhaltene Ableitung an einer Stelle x auszuwerten (müsste ja gehen, wenn sie ebenfalls ein Polynom ist), bekomme ich folgenden Fehler: "can't multiply sequence by non-int of type 'float'"
Daran verzweifle ich seit Stunden. Hat jemand einen Tipp für mich?
class Polynom:
"""Erstellen der Polynome mit Koeffizienten koeff, Eingabe in der Form ko_1*x**n, ko_2*x**(n-1), ..."""
def __init__(self, *koeff):
"""Speichern der eingegebenen Parameter als Liste"""
self.koeff = list(koeff)
def eval(self, x):
"""Auswertung des Polynoms an der Stelle x, Rueckgabewert y"""
y = 0
for i in range(len(self.koeff)):
y+=(self.koeff*x**(len(self.koeff)-i-1))
return(y)
def derivative(self):
"""Bilden einer Ableitung"""
diff = []
for i in range(len(self.koeff)-1):
diff.append((len(self.koeff)-(i+1))*self.koeff)
print(diff)
deriv = Polynom(diff)
return(deriv)