WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Ein kompliziertes solve in MUPAD

 

cryosat
Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 03.08.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.10.2012, 09:13     Titel: Ein kompliziertes solve in MUPAD
  Antworten mit Zitat      
Hallo allesamt.

Ich muss eine ziemlich komplizierte Berechnung machen, die mir das mupad aber nicht durchfuehrt, wahrscheinlich weil ich etwas falsch mache.

Der Code ist der folgende:

Code:
ab_x:=sin(tht):
ab_z:=cos(tht):
xsub:=(2*f2*(((f2+f2*tan(tht)^2-z3*tan(tht)^2+x3*tan(tht))/f2)^(1/2)-1))/tan(tht):
zsub:=f2-(xsub^2)/(4*f2):
N2_x:=xsub/(2*f2):
N2_z:=1:
norm2:=sqrt(N2_x^2+N2_z^2):
n2_x:=-N2_x/norm2:
n2_z:=-N2_z/norm2:
bc_x:=ab_x-2*n2_x*(n2_x*ab_x+n2_z*ab_z):
bc_z:=ab_z-2*n2_z*(n2_x*ab_x+n2_z*ab_z):
Xmain:=(2*f1*(bc_z*cos(alfa1)+((f1*bc_x^2*cos(alfa1)^2+zsub*bc_x^2*cos(alfa1)+f1*bc_x^2*sin(alfa1)^2-xsub*bc_x*bc_z*cos(alfa1)-zsub*bc_x*bc_z*sin(alfa1)+f1*bc_z^2*cos(alfa1)^2+f1*bc_z^2*sin(alfa1)^2+xsub*bc_z^2*sin(alfa1))/f1)^(1/2)+bc_x*sin(alfa1)))/(bc_x*cos(alfa1)-bc_z*sin(alfa1)):
Zmain:=(Xmain^2)/(4*f1):


Nun sind die Variablen Xmain und Zmain beide korrekt errechnet worden, und zwar in Funktion der Parameter die ich brauche. Jetzt muesste ich aber "ruckwerts" anhand der Parameter Xmain und Zmain die Parameter x3 und z3 berechnen.

Im Prinzip ist das was ich brauche dass das System aus Xmain und Zmain mir die unbkannten x3 und z3 gibt.

Habe es mit folgendem code versucht aber nicht geschafft. Mupad spuckt mir im prinzip wieder das gleiche solve aus.

Code:
solve(sys,[x3,z3],IgnoreAnalyticConstraints)


Herzlichen Dank fuer eure Hilfe!
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 24.10.2012, 12:22     Titel:
  Antworten mit Zitat      
Hallo,

aus meiner Sicht stellt sich die Frage, ob eine symbolische Herangehensweise hier sinnvoll ist. Selbst das Vereinfachen der symbolischen Ausdrücke (z.B. Xmain) dauert bei mir extrem lange und ist sehr speicherintensiv. Ich fürchte also, dass die Gleichungen schlicht zu komplex sind, um eine explizite Lösung finden zu können.
Selbst wenn diese explizite Lösung gefunden werden könnte, würde man wohl die Wand damit füllen können und diese Lösung nur in der Form sinnvoll verwenden können, dass man Werte einsetzt.
Dafür wäre meines Erachtens eine numerische Herangehensweise, z.B. mit FSOLVE aus der Optimization Toolbox, sinnvoller. Falls die Optimization Toolbox nicht zur Verfügung steht, sollte man das auch mit FMINSEARCH hinbekommen können.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
cryosat
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 03.08.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.10.2012, 12:33     Titel:
  Antworten mit Zitat      
Hallo Harald,
herzlichen Dank.

Genau das war mein Anliegen.
Ich habe naemlich Xmain und Zmain als Funktionen implementiert und nutze die Gleichungen nicht um eine analytische Formel aufstellen zu koennen (sind ja bereits sehr lang, wie du wahrscheinlich gesehen haben wirst), sondern um diese Positionen anhand der mir zur Verfuegung stehenden freien Variablen zu optimieren.

Da ich aber bereits ein Optimum dieser Parameter kenne (das heisst ich will fuer gewisse Werte ein bestimmtes Xmain und Zmain erlangen) wuerde ich gerne die Moeglichkeit haben einen Optimierungsprozess zu schreiben, der eben als "freie Variablen" die Werte x3 und z3 betrachtet.

Sprich: ich kenne alle anderen Parameter (diese koennen gegebenenfalls in gewissen Limits geandert werden werden) aber muss x3 und z3 errechen. Das wuerde ich eh durch eine Funktion machen, deswegen waere es mir gar kein Problem, dass das Ergebnis seh sehr lang wird.

Siehst du trotzdem eine bessere Alternative?

Herzlichen Dank,
ich bin leider in diesem Gebiet kein profi!
Christian
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 24.10.2012, 13:15     Titel:
  Antworten mit Zitat      
Hallo,

zunächst zu der Frage, ob dein Aufruf korrekt ist. Leider fehlt mir dazu die Information, wie sys definiert ist. Generell könnte das so aussehen:
Code:
f1 := x^2 + y:
f2 := x + y^2:
simplify(solve([f1 = 11, f2 = 7], [x, y]))


Es ist für dich vielleicht kein Problem, dass die Formel sehr lang wird, aber möglicherweise ist es das für MuPAD.

Eine Möglichkeit ohne viel Aufwand wäre, mit numeric::solve zu arbeiten. Ansonsten wie gesagt innerhalb von MATLAB fsolve oder fminsearch.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
cryosat
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 03.08.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.10.2012, 13:34     Titel:
  Antworten mit Zitat      
Perfekt.

Es ist halt dass fuer den generellen fall Xmain und Zmain auch noch variablen sind. Ich wollte eben eine (leider sehr grosse und lange) algebraische Gleichung in der ich x3 und z3 anhand gewisser Xmain und Zmain Werte ausmessen kann.
Aber das macht halt Probleme!

Ich werde es jetzt nochmal mit fsolve versuchen, werde mich auf jeden Fall zurueckmelden.

Ganz herzlichen Dank, Harald.
Finde ich klasse dass du dir Muehe machst und ganz rasch mir hierzu antwortest!

Christian
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 24.10.2012, 13:57     Titel:
  Antworten mit Zitat      
Hallo,

gerne doch. Hast du deine Probleme nun lösen können oder bestehen noch Fragen? Wenn ja, welche?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.