Jacobi-Matrix in Matlab < Matlab < Mathe-Software < Mathe < Vorhilfe
|
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
Hallo zusammen.
Ich habe folgendes kleines Problem.
Ich möchte eine Jacobi-Matrix in Matlab aufstellen (für Mehrdimensionales Newton Verfahren).
Matlab bringt praktischer Weise gleich eine eigenen Funktion mit, mit deren Hilfe sich das schnell erledigen lässt (wobei man sich auch relativ einfach eine kleine Funktion selber schreiben kann).
Das Problem ist nur, dass ich aus der Jacobi-Matrix, die mir die Matlab Funktion liefert nicht ohne weiteres wieder eine Inline Funktion machen kann, da es sich bei der zurückgelieferten Matrix um ein symbolisches Objekt handel. Normalerweise lässt sich ein symbolisches Objekt einfach in einen String wandeln, um daraus eine Funkion zu erstellen, da dieses Objekt aber eine Matrix ist geht das leider nicht so einfach.
Ich habe mir jetzt eine kleine Funktion geschrieben, mit der sich das Problem umgehen lässt, jedoch ist die Lösung nicht grade elegant.
Gibt es eine Möglichkeit das Problem auf elegante und einfache Art zu lösen, also das von der Matlab Funktion gelieferte symbolische Objekt direkt in eine Funktion zu wandeln?
|
|
|
|
Hallo,
ohne Umweg geht es meines Wissens nicht.
Etwas kürzer als mit Funktionen zu hantieren könnte es so gehen:
syms x y z;
J = jacobian(...,[]);
x=1; y=3; z=11;
ausgewertet = eval(J);
Also einfach den symbolischen Variablen nach der Berechnung der Jacobni-Matrix Werte zuweisen und per eval auswerten.
Gruß
Martin
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 09:26 Di 16.01.2007 | Autor: | Quigon |
Na schön mein Prof behauptet das es geht ohne den rref Befehl
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 12:22 Di 16.01.2007 | Autor: | Martin243 |
Hallo,
wo ist den hier rref? Falscher Thread?
Gruß
Martin
|
|
|
|
|
Jo besten Dank, das tuts wunderbar.
Aber lässt sich das irgend wie in einer Funktion "automatisieren"? So das man es nicht immer von Hand eingeben muss bzw. das ganze dann in ein Skript als Funktion einbinden könnte?
|
|
|
|
|
Hallo,
äääähm, ich habe gerade herumprobiert und die Hilfe bestätigt meinen experimentellen Befund:
Man kann inline-Funktionen direkt aus symbolischen Ausdrücken erzeugen, ohne den Umweg mit Strings machen zu müssen. Also ist z.B. möglich:
syms x y z;
J=inline(jacobian([x*y*z; y; x+z],[x y z]));
ausgewertet = J(1,2,3);
Da hatten wir wohl beide Tomaten auf den Augen...
Gruß
Martin
|
|
|
|