Gleichungssystem < Mathematica < Mathe-Software < Mathe < Vorhilfe
|
Hallo,
ich habe folgendes Problem.
Ich bastle mir eine Tabelle mittels
>> Column[Table[{l,
t = FindRoot[ftanA[l] == Sqrt[V0 - EnA], {EnA, 0.01}],
FindRoot[ftanB[l] == Sqrt[V0 - EnB], {EnB, 0.01}]}, {l, 20, 22}]]
dies liefert mir auch folgende Tabelle:
{
{{20, {EnA -> 0.30'}, {EnB -> 0.34'}}},
{{21, {EnA -> 0.29'}, {EnB -> 0.38'}}},
{{22, {EnA -> 0.28'}, {EnB -> 0.28'}}}
}
Was ich jetzt noch gerne hätte wäre, eine zusätzliche Spalte mit der SUMME von EnA und EnB, aber ich kann auf diese Elemente nicht mittels EnA+EnB zugreifen, also eine Tabelle wie folgt:
{
{{20, {EnA -> 0.30'}, {EnB -> 0.34'},0.64}},
{{21, {EnA -> 0.29'}, {EnB -> 0.38'},0.67}},
{{22, {EnA -> 0.28'}, {EnB -> 0.28'},0.56}}
}
geht das und wenn ja wie?
Hoffe es kann mir jemand helfen.
Lg, Martin
|
|
|
|
Hi Martin,
FindRoot gibt, wie ja auch zu sehen ist, keine bloßen Werte, sondern eine Liste mit sog. Rules zurück, die eigentlich dafür gedacht ist, per ReplaceAll Ersetzungen durchzuführen. Ich habe jetzt gerade kein Mathematica griffbereit, deshalb können sich hier kleine Tippfehler einschleichen - sorry:
In einer Liste kann man ja unterschiedliche Datentypen mischen; deshalb schlage ich mal folgendes vor
1: | Prepend[Table[ {l, EnA, EnB, EnA+Enb}/.
| 2: | FindRoot[{ftanA[l] == Sqrt[V0 - EnA], ftanB[l] == Sqrt[V0 - EnB]},{{EnA,.01},{EnB,.01}}],
| 3: | {l,20,22}], {"l","EnA","EnB","EnGesamt"}] |
Da muss dann nur noch ein TableForm drauf angewendet werden, um die Teilliste mit den Strings als Tabellenüberschrift auszugeben.
Die Form der Ausgabe musst Du natürlich selber bestimmen. Das Wichtige war eigentlich:
1.) man kann mehrere Gleichungen in mehreren Variablen mit FindRoot simultan lösen und erhält eine Liste von Regeln {EnA->Wert1,EnB->Wert2}, die man
2.) per "/." als Ersetzungsvorschrift für beliebige Ausdrücke - in diesem Fall eine Zeile der Tabelle - verwenden kann/sollte.
Ich hoffe, ein wenig geholfen zu haben,
Peter
|
|
|
|