Nach Variable auflösen < Matlab < Mathe-Software < Mathe < Vorhilfe
|
Status: |
(Frage) reagiert/warte auf Reaktion | Datum: | 17:29 Fr 04.12.2009 | Autor: | Cspr |
Hallo zusammen! :)
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
Ich habe ein kleines Problem in Matlab, da ich nicht weiß, wie ich eine Gleichung nach einer bestimmten Variable umstelle. Konkret sieht das Ganze bei mir so aus:
[mm]theta[2a12dest] = theta[2e12dest]+epsilon2dest*((theta[1a11dest]+T_e_dest)*(1/2)-theta[2e12_dest])[/mm]
In dieser Gleichung ersetze ich [mm]theta[1a11dest][/mm] durch
[mm]g11dest=subs(theta[2a12dest],theta[1a11dest],g10dest)[/mm]
In dieser Gleichung [mm]g10dest[/mm] taucht nochmal das [mm]theta[2a12dest][/mm] auf. Nun möchte ich eigentlich die erste Gleichung mit eingesetzem [mm]theta[1a11dest][/mm] nach [mm]theta[2a12dest][/mm] auflösen.
Bisher habe ich es über den Befehl
[mm]g12dest=collect(g11dest,theta_2a12_dest);[/mm]
probiert. Das scheint allerdings nicht zu funktionieren, da er so wahrscheinlich nicht das "[mm]theta[2a12dest] =[/mm]" aus der ersten Gleichung mitnimmt. Bin leider bisher nur Maple gewöhnt und dort ging es etwas einfacher...
Herzlichen Dank im Voraus!
Mit freundlichen Grüßen
Christoph :)
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 16:14 So 06.12.2009 | Autor: | Frasier |
Hallo Christoph,
das sieht ja grausig aus; könntest du das mal in reiner Textform schreiben?
Am besten das Programm direkt aus Matlab kopieren.
lg
F.
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 11:52 Mo 07.12.2009 | Autor: | Cspr |
Das kann ich sehr gerne tun :) Die Namen der Variablen sind immer recht kompliziert gewählt, weil es sonst schwer ist, diese zu unterscheiden bzw. zuordnen zu können.
g10dest = (theta_1a10_dest+T_ e_dest)*(1/2)-epsilon1_dest*((theta_1a10_dest+T_ e_dest)*(1/2)-theta_2a12_dest);
theta_2a12_dest = theta_2e12_dest + epsilon2_dest*((theta_1a11_dest + T_ e_dest) * (1/2)-theta_2e12_dest);
g11dest=subs(theta_2a12_dest,theta_1a11_dest,g10dest);
g12dest=collect(g11dest,theta_2a12_dest);
Ich denke mein Fehler liegt darin, dass ich bei den Gleichungen auf der linken Seite des Gleichheitszeichen immer neue "Werte" eintrage, sodass er im Endeffekt nicht nach theta_2a12_dest) auflösen kann.
Zum Abschluss nochmal der komplette Auszug aus meinem kleinen Programm(kann man mit Sicherheit intelligenter lösen, aber ich arbeite noch nicht so lange mit Matlab)
syms g1a1dest g1a2dest g1a3dest g1a4dest g1a5dest g1a6dest g1a7dest g1a8dest g1a9dest g1a10dest g1a11dest g1a12dest
syms theta_1a1_dest theta_1a2_dest theta_1a3_dest theta_1a4_dest theta_1a5_dest theta_1a6_dest theta_1a7_dest theta_1a8_dest theta_1a9_dest theta_1a10_dest theta_1a11_dest theta_1a12_dest
syms theta_2a2_dest theta_2a3_dest theta_2a4_dest theta_2a5_dest theta_2a6_dest theta_2a7_dest theta_2a8_dest theta_2a9_dest theta_2a10_dest theta_2a11_dest theta_2a12_dest
theta_1a1_dest = theta_1e1_dest-epsilon1_dest(:,1) * (theta_1e1_dest-theta_2a2_dest);
g1a2dest = (theta_1a1_dest+T_ e_dest(:,2)) * (1/2)-epsilon1_dest(:,2)*((theta_1a1_dest+T_ e_dest(:,2))*(1/2)-theta_2a3_dest);
g1a3dest = (theta_1a2_dest + T_ e_dest(:,3))*(1/2)-epsilon1_dest(:,3)*((theta_1a2_dest+T_ e_dest(:,3))*(1/2)-theta_2a4_dest);
g1a4dest = (theta_1a3_dest+T_ e_dest(:,4))*(1/2)-epsilon1_dest(:,4)*((theta_1a3_dest+T_ e_dest(:,4))*(1/2)-theta_2a5_dest);
g1a5dest = (theta_1a4_dest+T_ e_dest(:,5))*(1/2)-epsilon1_dest(:,5)*((theta_1a4_dest+T_ e_dest(:,5))*(1/2)-theta_2a6_dest);
g1a6dest = (theta_1a5_dest+T_ e_dest(:,6))*(1/2)-epsilon1_dest(:,6)*((theta_1a5_dest+T_ e_dest(:,6))*(1/2)-theta_2a7_dest);
g1a7dest = (theta_1a6_dest+T_ e_dest(:,7))*(1/2)-epsilon1_dest(:,7)*((theta_1a6_dest+T_ e_dest(:,7))*(1/2)-theta_2a8_dest);
g1a8dest = (theta_1a7_dest+T_ e_dest(:,8))*(1/2)-epsilon1_dest(:,8)*((theta_1a7_dest+T_ e_dest(:,8))*(1/2)-theta_2a9_dest);
g1a9dest = (theta_1a8_dest+T_ e_dest(:,9))*(1/2)-epsilon1_dest(:,9)*((theta_1a8_dest+T_ e_dest(:,9))*(1/2)-theta_2a10_dest);
g1a10dest = (theta_1a9_dest+T_ e_dest(:,10))*(1/2)-epsilon1_dest(:,10)*((theta_1a9_dest+T_ e_dest(:,10))*(1/2)-theta_2a11_dest);
g1a11dest = (theta_1a10_dest+T_ e_dest(:,11))*(1/2)-epsilon1_dest(:,11)*((theta_1a10_dest+T_ e_dest(:,11))*(1/2)-theta_2a12_dest);
g1a12dest = (theta_1a11_dest+T_ e_dest(:,12))*(1/2)-epsilon1_dest(:,12)*((theta_1a11_dest+T_ e_dest(:,12))*(1/2)-theta_2e12_dest);
g1dest=subs(g1a2dest,theta_1a1_dest,theta_1a1_dest);
g2dest=subs(g1a3dest,theta_1a2_dest,g1dest);
g3dest=subs(g1a4dest,theta_1a3_dest,g2dest);
g4dest=subs(g1a5dest,theta_1a4_dest,g3dest);
g5dest=subs(g1a6dest,theta_1a5_dest,g4dest);
g6dest=subs(g1a7dest,theta_1a6_dest,g5dest);
g7dest=subs(g1a8dest,theta_1a7_dest,g6dest);
g8dest=subs(g1a9dest,theta_1a8_dest,g7dest);
g9dest=subs(g1a10dest,theta_1a9_dest,g8dest);
g10dest=subs(g1a11dest,theta_1a10_dest,g9dest);
theta_2a1_dest = theta_2a2_dest+epsilon2_dest(:,1)*(theta_1e1_dest-theta_2a2_dest);
theta_2a2_dest = theta_2a3_dest+epsilon2_dest(:,2)*((theta_1a1_dest+T_ e_dest(:,2))*(1/2)-theta_2a3_dest);
theta_2a3_dest = theta_2a4_dest+epsilon2_dest(:,3)*((theta_1a2_dest+T_ e_dest(:,3))*(1/2)-theta_2a4_dest);
theta_2a4_dest = theta_2a5_dest+epsilon2_dest(:,4)*((theta_1a3_dest+T_ e_dest(:,4))*(1/2)-theta_2a5_dest);
theta_2a5_dest = theta_2a6_dest+epsilon2_dest(:,5)*((theta_1a4_dest+T_ e_dest(:,5))*(1/2)-theta_2a6_dest);
theta_2a6_dest = theta_2a7_dest+epsilon2_dest(:,6)*((theta_1a5_dest+T_ e_dest(:,6))*(1/2)-theta_2a7_dest);
theta_2a7_dest = theta_2a8_dest+epsilon2_dest(:,7)*((theta_1a6_dest+T_ e_dest(:,7))*(1/2)-theta_2a8_dest);
theta_2a8_dest = theta_2a9_dest+epsilon2_dest(:,8)*((theta_1a7_dest+T_ e_dest(:,8))*(1/2)-theta_2a9_dest);
theta_2a9_dest = theta_2a10_dest+epsilon2_dest(:,9)*((theta_1a8_dest+T_ e_dest(:,9))*(1/2)-theta_2a10_dest);
theta_2a10_dest = theta_2a11_dest+epsilon2_dest(:,10)*((theta_1a9_dest+T_ e_dest(:,10))*(1/2)-theta_2a11_dest);
theta_2a11_dest = theta_2a12_dest+epsilon2_dest(:,11)*((theta_1a10_dest+T_ e_dest(:,11))*(1/2)-theta_2a12_dest);
theta_2a12_dest = theta_2e12_dest+epsilon2_dest(:,12)*((theta_1a11_dest+T_ e_dest(:,12))*(1/2)-theta_2e12_dest);
g11dest=subs(theta_2a12_dest,theta_1a11_dest,g10dest);
g12dest=collect(g11dest,theta_2a12_dest);
g13dest=subs(theta_2a11_dest,{theta_2a12_dest,theta_1a10_dest},{g12dest,g9dest});
g14dest=collect(g13dest,theta_2a11_dest);
g15dest=subs(theta_2a10_dest,{theta_2a11_dest,theta_1a9_dest},{g14dest,g8dest});
g16dest=collect(g15dest,theta_2a10_dest);
g17dest=subs(theta_2a9_dest,{theta_2a10_dest,theta_1a8_dest},{g16dest,g7dest});
g18dest=collect(g17dest,theta_2a9_dest);
g19dest=subs(theta_2a8_dest,{theta_2a9_dest,theta_1a7_dest},{g18dest,g6dest});
g20dest=collect(g19dest,theta_2a8_dest);
g21dest=subs(theta_2a7_dest,{theta_2a8_dest,theta_1a6_dest},{g20dest,g5dest});
g22dest=collect(g21dest,theta_2a7_dest);
g23dest=subs(theta_2a6_dest,{theta_2a7_dest,theta_1a5_dest},{g22dest,g4dest});
g24dest=collect(g23dest,theta_2a6_dest);
g25dest=subs(theta_2a5_dest,{theta_2a6_dest,theta_1a4_dest},{g24dest,g3dest});
g26dest=collect(g25dest,theta_2a5_dest);
g27dest=subs(theta_2a4_dest,{theta_2a5_dest,theta_1a3_dest},{g26dest,g2dest});
g28dest=collect(g27dest,theta_2a4_dest);
g29dest=subs(theta_2a3_dest,{theta_2a4_dest,theta_1a2_dest},{g28dest,g1dest});
g30dest=collect(g29dest,theta_2a3_dest);
g31dest=subs(theta_2a2_dest,{theta_2a3_dest,theta_1a1_dest},{g30dest,g1a1dest});
g32dest=collect(g31dest,theta_2a2_dest);
g33dest=subs(theta_2a1_dest,theta_2a2_dest,g32dest);
g34dest=collect(g33dest,theta_2a1_dest);
Hier entspricht g1a11dest der Gleichungen g10dest, was aber an dem Problem nichts ändert :)
Sieht sehr wüst aus, ist aber von der Mathematik her eigentlich recht simpel.
Danke einmal mehr!
Christoph :)
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 15:43 Mo 07.12.2009 | Autor: | Frasier |
Hallo Thomas,
das kann ich noch nicht ausführen, das sind irgendwo Leerzeichen zu viel und es fehlen mir Variablen.
Aber suchst du zum Umstellen einer Gleichung nach einer Variable vielleicht das solve-Kommando?
Beispiel:
1: | syms x y z;
| 2: | gl1='2*x-3*y^2-5*z^3=pi'
| 3: | xs=solve(gl1,'x')
| 4: | test=subs(gl1,x,xs) |
lg
F.
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 16:31 Mo 07.12.2009 | Autor: | Cspr |
Das hat im Endeffekt geklappt ja! :)
Hatte beim eigenen Rumprobieren mit solve wohl etwas falsch eingegeben! Nun muss ich nurnoch rausfinden, wie ich vernünftig mit der Optimization Toolbox umgehe!
Herzlichen Dank!
|
|
|
|