Mathematica 5.0 Weterverwenden < Mathematica < Mathe-Software < Mathe < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 12:14 Do 04.11.2004 | Autor: | dummy |
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
Ich habe folgendes Problem welches sich glaube ich relativ leicht lösen lässt, ich aber bisher nicht drauf komme:
Ich möchte in Mathematica ein Schleife ca. 100 mal berechnen lassen. Innerhalb dieser Schleife soll eine Ableitung und anschließend die Nullstelle bestimmt werden. Soweit so gut. Als Ergebnis liefert mir bisher Mathematica so etwas wie {{d-> 0.5}}. Jetzt möchte ich diesen Wert allerdings weiterverwenden, da er die Ursprüngliche Variable verändern soll und danach die schleife wieder neu berechnen.
Bisher gelingt es mir nicht den Output aus der Maximierung irgendwie weiterzuverwenden bzw. einer neuen Variable den wert des outputs (also alles nach dem ->) zuzuweisen.
Bitte helft mir, falls ihr eine Lösung kennt. Ich versuche seit 2 Tagen irgendwie weiter zukommenn.
Vielen Dank
Arne
|
|
|
|
Hallo Arne,
Solve und FindRoot (und einige andere Funktionen) geben als Ergebnis Listen von Regellisten zurück. Um eine Regel(liste) einzusetzen, brauchst Du die Funktion Replace (oder verwandte); Kurzschreibweise: /.
Wenn Du also die Regel x0->3 hast, kannst du mit z.B. [mm] x0^2 [/mm] /. x0->3 das x0 in [mm] x0^2 [/mm] durch 3 ersetzen. Damit man auf einen Ausdruck mehrere Regeln auf einmal anwenden kann, gibt ges Regellisten:
[mm] x0^2+y0^2 [/mm] /. { x0->3, y0->17/4}. Nun ist es aber möglich, dass Solve mehrere Regellisten als Lösung findet ( z.B. Solve [ [mm] x^2==1,x [/mm] ] ergibt: {{ x->-1},{x->1}}. Oft gibt es aber nur eine Lösung, die - um das gleiche Ausgabeformat zu haben - auch als Liste mit einer Liste mit einer Regel als Element als Element ( ) ) zurück gegeben wird: Solve [ x+3==5,x ] gibt {{x->2}}. Es geht jetzt darum, das äußere Klammerpaar zu entfernen:
Nehmen wir an, dass Du das Ergebnis von Solve in der Variablen erg gespeichert hast und dass Du nach der Variablen x gelöst hast (mit Solve, FindRoot oder ähnlichem). Dann ergibt der Ausdruck x/.First[ erg ] den Wert, den Du brauchst.
Aber generell kann es auch nicht schaden, wenn nichts anderes mehr hilft, einen Blick in die mit Mathematica mitgelieferte Doku zu werfen
Gruß,
Peter
|
|
|
|