Vektor * Matrix * Vektor ableiten





  • Solche Ableitungen bestimmen ist oft mühsam. Mir laufen in letzter Zeit häufiger solche Kollegen im R^3 über den Weg: (φ kreuz x)^T * (nabla f(x))

    Wenn man keine gute Seite parat ist oder selbst nachrechnen will, ist es meist der mühsamste, aber direkteste Weg, einfach alles auszumultiplizieren und dann den Gradienten zu bilden.

    Besonders die englische Wikipedia kennt aber auch viele nützlich Formeln ( siehe oben von dot, oder auch http://en.wikipedia.org/wiki/Vector_calculus_identities )

    Falls du noch nicht weißt, was ein Gradient ist, schaust du auch in der Wikipedia unter Gradient und partielle Ableitung nach 🙂



  • shisha schrieb:

    Was tue ich da?
    Ableitung verbinde ich mit Steigung, aber was macht dann die Ableitung nach einem kompletten Vektor?

    Die Ableitung stellt ja die Steigung der Funktion dar. In mehreren Dimensionen nennt man dies Gradient. Nun stell dir eine topologische Landkarte vor (also eine auf der die Höhenlinien eingezeichnet sind). Wenn du auf dieser Landkarte einen Punkt markierst, dann gibt der Gradient an dem Punkt die Richtung der höchsten Steigung an. Wenn du den Punkt auf eine der Höhenlinie setzt, dann zeigt die Ableitung praktischertweise immer genau im rechten Winkel von dieser Höhenlinie weg.

    In höheren Dimension wirds schwierig mit der Vorstellungskraft.



  • Also bedeutet nach einem Vektor ableiten einfach nur, nach allen Elementen desselben zu differenzieren?

    Sind die Rechenregeln, die ich vom "normalen" Ableiten kenne denn alle gültig?

    (Standardableitungen, Quotientenregel und Co)

    zB x^T * y, beides Vektoren, nach y abgeleitet ergibt x^T, wie ich es erwarten würde ...



  • Das Ergebnis beim Ableiten ist ja ein Vektor, der Gradient genannt wird. Normalerweise wird definiert, dass der Gradient ein Spaltenvektor ist (für dein Beispiel ist der Gradient also x, aber nicht x^T)

    Bevor du Gradienten direkt mit "Vektorschreibweise" bildest, versuche mal von solchen Funktionen den Gradienten zu bestimmen:

    f(x,y) = x^2 + 3*x*y + y^2/x
    f(x,y,z) = sin(x*y)*z
    f(x,y,z) = exp(sin(x+y))

    Wenn du das kannst, verstehst du den ganzen Rest auch 🙂



  • Achso, deine Fragen: Im Prinzip gelten alle "normalen" Rechenregeln auch für partielle Ableitungen. Der Gradient hat in jeder Komponenten die partielle Ableitung nach einer Variablen drin stehen.

    Es wird nur schwierig, wenn die Variablen von einander abhängen (zb Orts- und Zeitvariablen). Dann muss man ganz doll aufpassen, dass man die verschiedenen Arten von Ableitungen nicht durcheinander bringt.



  • So danke bis hierher nochmal.

    Also ich kenne den Gradienten und ich habe kein Problem ihn zu berechnen. Ich weiß was er aussagt und wofür ich ihn brauchen kann, zumindest teilweise.
    @Mups: ich benutze Gradient immer als Zeilenvektor, das ist aber egal

    Neu ist für mich die Schreibweise in Matrix/Vektorform.

    Wenn ich nun nochmal das Ausgangsbeispiel

    x^T * A * x

    betrachte, komme ich mit meinem "Standard-Mathe" nciht darum herum das auszuformulieren

    f(x) = summe summe x_i * A_ij * x_j

    das mühsam abzuleiten.

    Und zu allem Überfluss bin ich dann nicht mehr in der Lage aus dem Ergebnis wieder eine Matrix zu machen.

    Viel lieber wäre mir, wenn ich direkt auf den Matrizen operieren könnte, was aber nicht ganz so einfach scheint, wie ich es mir vorstelle.

    Hauptproblem ist dabei in diesem Beispiel x^T:

    Ich würde in der Formel x^T A x knallhart
    x^T A (so nach dem Motto a *b *x nach x -> a*b)
    draus machen und gnadenlos ignorieren dass x^T ja auch irgendwie x ist.
    Wie gehe ich jetzt also mit diesem x^T um?

    Ich fühle mich irgendwie wieder wie in der 10. Klasse als ich noch Formeln für
    Abbildungen von Vektoren in der Form x1 = , x2=, x3=
    hatte und erst später in den meines Erachtens wesentlich effizienteren Umgang mit Matritzen eingeführt wurde.

    Und nun will ich nicht wieder einen Schritt zurück, und Matriten/Vektoren in ihre Bestandteile zerlegen, sondern will sie direkt ableiten können 🙂



  • x^T A x nach x abgeleitet müsste wenn ich mich nicht irre so etwas wie A x + A^T x sein. Bei symmetrischem A also 2 A x, was ja im skalaren Fall dann auch gut passt. Herleiten tut man es am einfachsten so, wie Du gesagt hast. Ax = y und dann das Skalarprodukt von x und y nach den Komponenten von x ableiten, oder einfach eine der Identitäten aus Wikipedia nehmen. Ist ein bisschen Arbeit, aber das kriegt man schon hin 🙂 .



  • ok da ich zu den ganz begriffs-stutzigen gehöre:

    Kann jmd mal alle Zwischenschritte / Rechenregeln aufschreiben, die für diese Ableitung notwendig sind?

    Ich weiß partout nicht wo das "+" und das A^T herkommt.



  • Naja, Du definierst Dir y = Ax, also yi = sum_j aij * xj. Dann sieht man schön, dass x^T A x = x^T y = sum_i xi*yi = sum_i (x_i * (sum_j aij * xj)). Davon willst Du jetzt die Ableitung nach xk haben.

    (d/dx (x^T A x))_k
    = d/dxk x^T A x
    = d/dxk (sum_i (x_i * (sum_j aij * xj)))
    < jetzt Produktregel >
    = (sum_i d/dxk x_i * (sum_j aij * xj)) + (sum_i x_i * (sum_j aij * d/dxk xj))
    < jetzt ist d/dxk x_i = 1 wenn i=k und sonst 0 >
    = ((sum_j aij * xj)) + (sum_i x_i * aij))
    = (A x)_k + (A^T x)_k

    Das sollte Dir die k-te Komponente vom Gradienten liefern, also ist der volle Gradient Ax+(A^T)x, wenn ich mich nicht vertan habe... Tut mir Leid, ist ziemlich sloppy aufgeschrieben, aber ich hab beim besten Willen grad keine Lust das in TeX zu schreiben.



  • Zur Kontrolle hilft es meistens, den n=1-Fall zu prüfen.
    Dann ist (x*A*x)' = (A*x^2)' = 2*A*x

    Damit siehst du schonmal, dass dein erster Versuch gar nicht gut aussieht, weil du die 2 vergessen hast. Wallis Formeln passen aber prima (merke, dass A für n=1 natürlich symmetrisch ist). Die Herleitung wäre mir aber viel zu mühsam 🤡

    Wenn du mit den ganzen Summenzeichen etc. nicht gut klar kommst, versuche mal zuerst den n=2 fall und schreibe ihn dir länglich aus:

    x^T*A*x = a11 * x1^2 + a12 * x1*x2 + a21 * x1*x2 + a22 * x2^2

    Klingelt jetzt was bei dir?



  • Ich empfehle Dir, ein Buch über Tensorrechnung zu lesen. Auf komponentenweises Rechnen kann man nämlich in höheren Dimensionen nicht verzichten. Daß die bekannten Resultate aus der Schule so einfach aussehen, liegt eben an der niedrigen Raumdimension (i.A. dim = 1). Das ständige Mitschleppen von Summenzeichen kann aber mithilfe der Einsteinschen Summenkonvention recht einfach umgangen werden.


Anmelden zum Antworten