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.
BlackJack

@lalalu: Nein so kannst Du das nicht schreiben:

Code: Alles auswählen

In [158]: d = { a : n, b : n - 1, c : n - 2}
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)

/home/bj/<ipython console> in <module>()

NameError: name 'n' is not defined
Was auch irgendwie klar sein sollte wenn man auch nur ein ganz bisschen Python verstehen würde. So wird das wohl nichts, wenn es echt darauf hinausläuft dass Du nur fertige Lösungen erbetteln möchtest.
lalalu
User
Beiträge: 13
Registriert: Freitag 1. Juni 2012, 08:56

Wenn ichs verstehen würde, würde ich wohl kaum euch fragen...
BlackJack

@lalalu: Was Dir hier an Wissen fehlt kann Dir niemand auf magische Weise in den Kopf einpflanzen.

Du brauchst ein mathematisches Grundverständnis, hier insbesondere über Polynome. Und ein Grundverständnis was programmieren ist, die Bedeutung von grundlegender Syntax von Python, und wie so ein Programm abgearbeitet wird. Und sowohl für den mathematischen als auch den Programmierteil die Fähigkeit vom konkreten Problem, also zum Beispiel ein konkretes Polynom oder den Vorgang eine Ableitung davon zu erstellen, auf eine allgemeine Darstellung eines Polynoms und eine formale Beschreibung des Ableitungsvorgangs zu abstrahieren, so dass Du beides einem Rechner in einer Programmiersprache vermitteln kannst.

Ein Polynom allgemein und konkret inklusive der konkreten Ableitung und der allgemeinen Ableitungsregel hast Du ja schon gegeben. Und ja, Wörterbücher bilden Objekte (Schlüssel) auf andere Objekte (Werte) ab. Dabei müssen die Schlüssel einmalig sein, genau wie man zu jeder gegebenen Zeit nur ein Objekt an einen (Variablen)Namen binden kann.

Jetzt musst Du Dir anschauen wie Du ein allgemeines Polynom in seine Bestandteile zerlegen kannst, die veränderlich sind, und die das Polynom eindeutig beschreiben. Dann wie man die Bestandteile zu (Schlüssel, Wert)-Paaren aufteilt, und was davon der Schlüssel und was der Wert sein muss. Dann weisst Du wie Du x²+3x-2 als Wörterbuch aufschreiben kannst. Kleiner Tipp: Schreibe Dir beim Überlegen die Polynome so regelmässig wie möglich auf, damit sie der allgemeinen Form am nächsten kommen. Bei dem Beispiel x²+3x-2 wird dabei ja so einiges weg gelassen.

Wenn Du Polynome als Wörterbücher kodieren kannst, muss Du eine Funktion entwickeln, die ein solches Wörterbuch als Argument bekommt und daraus ein neues Wörterbuch mit der Ableitung erstellt. Da reicht es nicht das irgendwie so ähnlich hin zu schreiben wie es in der allgemeinen Vorschrift zum ableiten aussieht, und zu hoffen das der Rechner oder die Programmiersprache schon irgendwie wissen was man möchte und das richtige tun. Du musst Dir überlegen wie die einzelnen Schritte bei einer Ableitung aussehen und diese dann mit Mitteln ausdrücken, welche die Programmiersprache zum Beschreiben von Abläufen anbietet.
lalalu
User
Beiträge: 13
Registriert: Freitag 1. Juni 2012, 08:56

sooo... was sagt ihr denn hierzu?

Code: Alles auswählen

def abl(a, b, c, n):
    abl = {n*a:n-1, b*(n-1):n-2, c*(n-2):n-3}
    return abl
... er schmeißt jetzt ein dic raus aber verkehrt herum warum?
Zuletzt geändert von Anonymous am Sonntag 3. Juni 2012, 21:32, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Code-Tags gesetzt.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Dictionaries sind nicht "sortiert". Wenn Du eine bestimmte Ausgabeform haben willst, musst Du Dir z.B. mittels `sorted` die Schlüssel des Dicts in eine sortierte Liste übertragen, mit deren Hilfe Du Dir dann die Elemente sortiert anzeigen lassen kannst. Oder Du holst Dir die Tupel mittels `dict.items` und sortiert diese.

Deine "Lösung" ist wenig generisch. Zum einen muss man da eine andere Struktur übergeben, als man zurück bekommt, zum anderen klappt das ja nur für Polynome 2. Grades. Alles in allem also wenig flexibel.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
BlackJack

@lalalu: Dazu sage ich das geht an der Aufgabenstellung vorbei. Es soll nicht ein konkretes Polynom abgeleitet werden, sondern eine Funktion geschrieben werden, die jedes beliebige Polynom als Wörterbuch kodiert übergeben bekommen kann, und davon die Ableitung bildet. Das Grundgerüst muss so aussehen:

Code: Alles auswählen

def differentiate(polynome):
    result = dict()
    # 
    # Differentiate the `polynome` and put the result into `result`.
    # 
    return result
Was meinst Du mit verkehrt herum? Die Schlüssel/Wert-Paare in einem Wörterbuch haben keine feste Reihenfolge.
lalalu
User
Beiträge: 13
Registriert: Freitag 1. Juni 2012, 08:56

Code: Alles auswählen

n = 3   # Anzahl der einzelnen Elemente
p = {0: -3, 3: 2,5: -1} #x**5
g = []
l = []
m = []
abl = p.items()
b = 2*n
for a in range(0,n,1):
        c = abl[a]
        for d in range(0,2,1):
                e = c[d]
                g.append(e)
for f in range(0,b,2):
        i = g[f]
        h = g[f+1]
        j = h*i
        k = i - 1
        l.append(j)
        m.append(k)
for q in range(1,n,1):
        o = l[q]
        r = m[q]
        s = zip(m,l)
        t = dict(s)
print t
.... was meint ihr hier zu? ... da fehlt wieder die funktion richtig?...
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Vielleicht hilft dir die Session hier weiter:

Code: Alles auswählen

In [1]: # 2x^2+3x+42

In [2]: p = {2 : 2, 1 : 3, 0: 42}

In [3]: dict((exp - 1, coeff*exp) for exp, coeff in p.items() if exp > 0)
Out[3]: {0: 3, 1: 4}
Zu deinem Code kann ich leider nichts sagen, da er mir bei weitem zu undurchsichtig ist. Man sollte keine Legende brauchen, um Variablen zu verstehen ..
deets

Das sieht alles ziemlich krude aus. Was ist denn bei dir der Schluessel im Dict, und was der Wert?
Antworten