Ableitung eines Polynoms

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
lalalu
User
Beiträge: 13
Registriert: Freitag 1. Juni 2012, 08:56

Freitag 1. Juni 2012, 09:11

Hallo Leute,
da ich ein absoluter Neuling bin in der Programmierung, wollte ich euch mal fragen ob ihr mir helfen könnt.
Nun zur Aufgabe:
Schreiben Sie eine Funktion abl zur Ableitung eines Polynoms. Das Polynom soll durch ein Dictionary beschrieben werden. Die Funktion abl erhält als Funktionargument das Polyno in Form eines Dictionaries und gibt das abgeleitete Polynom wieder in Form eines Dictionaries zurück.

Um ehrlich zu sein habe ich überhaupt keine Ahnung wie man das machen soll. Und währe euch sehr dankbar wenn ihr mir helfen könntet. :K
BlackJack

Freitag 1. Juni 2012, 09:37

@lalalu: Was hast Du denn bis jetzt? Hast Du das Tutorial aus der Python-Dokumentation schon mindestens bis vor Klassen durchgearbeitet, oder etwas was Dich auf einen vergleichbaren Wissensstand bringt?

Wie sieht ein Polynom allgemein aus? Wie eine Ableitung davon? Wie kann man ein Polynom als Wörterbuch darstellen? Beantworte (Dir) diese Fragen und dann ist das eigentlich ganz einfach.
lalalu
User
Beiträge: 13
Registriert: Freitag 1. Juni 2012, 08:56

Freitag 1. Juni 2012, 09:51

naja ein Polynom wäre doch zb. x²+3x-2 ... und die erste Ableitung wäre doch 2x+3...
In einem Dictionary können beliebige Typen als Werte verwendet werden. Dort werden doch praktisch wie bei einer Variablen Werte zugewiesen oder nicht?...

Und Allgemein lautet die Ableitungsregel doch ... y=a*x(hoch n) ... y'=n*a*x(hoch n-1)

und wie soll ich das ganze jetzt in ein dictionary bringen?...
EyDu
User
Beiträge: 4874
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Freitag 1. Juni 2012, 09:55

Indem du die Exponenten und die Koeffizienten in dem Dictionary codierst. Jetzt musst du dir nur noch überlegen, welchen der beiden du als Schlüssel verwendest und welchen als Wert.
Das Leben ist wie ein Tennisball.
deets

Freitag 1. Juni 2012, 09:57

Eine Moeglichkeit waere zB die Schluessel als Koeffizienten aufzufassen, und die Werte alt Potenz. Also

y = a**n + b**n-1 + c**n - 2 + ...

Damit ergibt sich ein dict

{ a : n, b : n - 1, c : n - 2, ...}

Und danach das abgeleitete:

{ n*a : n - 1, b * (n - 1), ... }

Sollte sich fast schon in einer einzigen List-Comprehension ausdruecken lassen.
lalalu
User
Beiträge: 13
Registriert: Freitag 1. Juni 2012, 08:56

Freitag 1. Juni 2012, 10:14

Vielen dank für eure Antworten aber ich seh da grad überhaupt nicht durch. Wäre echt nett wenn ihr mir einen Quelltext zukommen lassen könntet...
EyDu
User
Beiträge: 4874
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Freitag 1. Juni 2012, 10:21

deets hat geschrieben:Eine Moeglichkeit waere zB die Schluessel als Koeffizienten aufzufassen, und die Werte alt Potenz.
Zumindest für den Spezialfall, dass alle Koeffizienten != 0 verschieden sind ^^
deets hat geschrieben:y = a**n + b**n-1 + c**n - 2 + ...
Du meintest wohl: y = a*x**n + b*x**(n-1) + c*x**(n-2) + ...
lalalu hat geschrieben:Vielen dank für eure Antworten aber ich seh da grad überhaupt nicht durch. Wäre echt nett wenn ihr mir einen Quelltext zukommen lassen könntet...
Dann zeig doch mal, was du bisher versucht hast. Deine Hausaufgaben wird hier sicher niemand für dich machen, auch wenn es nur ein Einzeiler ist.
Das Leben ist wie ein Tennisball.
lalalu
User
Beiträge: 13
Registriert: Freitag 1. Juni 2012, 08:56

Freitag 1. Juni 2012, 10:24

also bisher habe ich das hier...

bsp.: -3x+2x**3-x**5

polynom = {0: -3, 3: 2, 5: -1}

def abl(polynom):
return sum([polynom[p]*x**p for p in polynom])
Rekrul
User
Beiträge: 78
Registriert: Dienstag 7. Dezember 2010, 16:23

Freitag 1. Juni 2012, 10:32

deets hat geschrieben:y = a**n + b**n-1 + c**n - 2 + ...

Damit ergibt sich ein dict

{ a : n, b : n - 1, c : n - 2, ...}
So müssten doch die Koeffizienten eindeutig sein. --> { n : a, n-1 : b, n-2 : c, ...}
Das riecht dann natürlich nach Liste .... aber soll wohl eine Übungsaufgabe zu Dictionaries sein (um jeden Preis) ...
Benutzeravatar
cofi
Moderator
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Freitag 1. Juni 2012, 10:39

@Rekrul: Damit musst du allerdings alle Potenzen aufbauen deren Koeffizient = 0 ist.

@lalalu: Ich sehe da nur Code, der ein Polynom auswerten wuerde, aber in einem NameError resultiert, weil `x` nicht bekannt ist. Wenn da wieder ein Dictionary rauskommen soll, musst du auch eines erstellen. deets hat dir die Loesung ja eigentlich schon gezeigt, auch wenn du Keys und Values vertauschen solltest.
deets

Freitag 1. Juni 2012, 10:47

Rekrul hat geschrieben:
deets hat geschrieben:y = a**n + b**n-1 + c**n - 2 + ...

Damit ergibt sich ein dict

{ a : n, b : n - 1, c : n - 2, ...}
So müssten doch die Koeffizienten eindeutig sein. --> { n : a, n-1 : b, n-2 : c, ...}
Das riecht dann natürlich nach Liste .... aber soll wohl eine Übungsaufgabe zu Dictionaries sein (um jeden Preis) ...
Ups (und EyDu auch) - stimmt. Ich finde ehrlich gesagt auch, das ein dict da voellig ungeeignet ist. Ich hatte erstmal ueber die Potenzen nachgedacht, und da ergibt sich natuerlich dasselbe Problem. Kann aber natuerlich sein, dass die per Definition eindeutig sind. Damit dreht sich das dict dann um. Auch nicht wirklich viel anders :)
EyDu
User
Beiträge: 4874
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Freitag 1. Juni 2012, 11:01

Wenn wir einfach mal dünn besetzte Polynome mit einem sehr hohen Grad annehmen, dann ist ein Dictionary schon gar nicht mehr die schlechteste Lösung.
Das Leben ist wie ein Tennisball.
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Samstag 2. Juni 2012, 10:11

Ich denke für den Fall wär eine Liste eine deutlich einfachere Lösung. Für dünn besetzte Polynome ist ein Dictionary besser, aber ich denk das ist eher eine Hausaufgabe und da muss man jetzt nicht Overengineeren ;) Oh Listen, da war ja was... richtig, in der SICP-Vorlesung wird vorgemacht wie man sowas in Scheme implementiert, mit Listen natürlich :)
My god, it's full of CARs! | Leonidasvoice vs Modvoice
BlackJack

Samstag 2. Juni 2012, 10:20

Zitat Aufgabenstellung: „Das Polynom soll durch ein Dictionary beschrieben werden.” Den Freiheitsgrad eine Liste zu wählen haben wir also nicht. Also *wir* schon, aber der OP nicht. ;-)
lalalu
User
Beiträge: 13
Registriert: Freitag 1. Juni 2012, 08:56

Samstag 2. Juni 2012, 17:24

y = a**n + b**n-1 + c**n - 2

und so muss ich das jetzt schreiben? d = { a : n, b : n - 1, c : n - 2}

und so gibt er mir das denn nachher aus oder wie? { n*a : n - 1, b * (n - 1)}
aber wie printe ich das denn?...

... Das Fach Programmierung habe ich mir auch nicht ausgesucht, das ist ein Semester was ich da überstehen muss, vielleicht erbarmt sich ja doch jemand und kann mir ein Quelltext zeigen.
Antworten