Partielle Ableitung < Mathematica < Mathe-Software < Mathe < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 11:08 Di 09.09.2008 | Autor: | matjes |
Ich möchte gerne diese Formel:
[mm] L \left[a, r, x, y, \lambda, \tau, d, N, M \right]~:=~
\sum _{n=1}^N \sum _{m=1}^M \log \left(\sum _{j=1}^d \sum _{i=1}^d x[[n,i]] y[[n,j]] a[[m,j,i]]\right) r[[n,m]]+\sum _{m=1}^M \sum _{j=1}^d \lambda [[m,j]] \left(1-\sum
_{i=1}^d a[[m,j,i]]\right)+\sum _{m=1}^M \sum _{i=1}^d \tau [[m,i]] \left(1-\sum _{j=1}^d a[[m,j,i]]\right)
[/mm]
nach [mm]a[[m,j,i]] [/mm] ableiten. Wie kann ich das mit den indizierten Größen dem Differential Operator verklickern?
[mm] D[L, a[[m,j,i]] ] [/mm] funktioniert nicht so richtig!
Vielen dank im Voraus
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
|
|
|
|
Hallo matjes,
für die Fälle, dass die Indices der Variablen, nach der abgeleitet werden soll, innerhalb eines Summanden nur in einer Reihenfolge vorkommen (also nicht [mm] $\sum_{i=1}^n{\sum_{j=1}^m a_{i,j}*a_{j,i}}$ [/mm] oder dergleichen), könnte der folgende Code helfen:
1: | Unprotect[Sum];
| 2: | Sum /: D[HoldPattern[Sum[expr_, r__]], (x_)[k__]] :=
| 3: | Block[{rul =
| 4: | Thread[Rule @@
| 5: | Append[Union[Cases[expr, x[ix__] :> {ix}, Infinity]], {k}]]},
| 6: | Piecewise[{{D[expr /. rul, x[k]],
| 7: |
| 8: | And @@ Thread[
| 9: | LessEqual @@
| 10: | Insert[Transpose[{r}[[All, {2, 3}]]], {k}, 2]]}}] //
| 11: | Simplify
| 12: | ];
| 13: | Protect[Sum]; |
Ein Notebook hängt dran.
Gruß,
Peter
P.S.: Das mit den Logarithmen klappt so leider nicht. Ich probiere es aber weiter....
P.P.S: Im zweiten Anhang ist eine Version, die für Deine Summe funktionieren müsste. Alles natürlich ohne Garantie (bin mir selber noch etwas unsicher). Die Aufrufe der Funktionen (Print[#];#)&[...] dienen dem Debugging und können bis auf den "..."-Teil gelöscht werden.
Dateianhänge: Anhang Nr. 1 (Typ: nb) [nicht öffentlich] Anhang Nr. 2 (Typ: nb) [nicht öffentlich]
|
|
|
|