Verfasst am: 09.04.2016, 22:47
Titel: Wie löse ich zwei abhängige LGs in Matlab?
Hallo Allerseits!
Ich habe hier drei lineare Gleichungssysteme in Matrix-Form die meine Lagerreaktionen für einen Balken beschreiben. Es existieren so viele Unbekannte wie Gleichungen.
Ich würde das Problem gerne in Matlab lösen, weil ich glaube, dass es dort schneller und einfacher geht, wenn man die nötigen Befehle kennt. Ich bitte euch, mir mit den Befehlen zu helfen. Wie legt man die Matrizen und Vektoren mit den Variablen am besten an? Welchen Befehl nutze ich, um anschließen das komplette System aufzulösen?
Bitte entnehmt dieLGS der *.txt Datei im Anhang.
Danke schonmal vorab! Ich freue mich auf eure Beiträge!
Da sin und cos in Radian rechnen und du wohl Grad haben möchtest, habe ich das angepasst.
Grüße,
Harald
fritzmeister
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 10.04.2016, 17:55
Titel:
Hallo Harald,
danke für deine Antwort. Der Code stimmt mit dem überein was ich bereits in Matlab eingegeben (und oben gepostet) habe. Ausgenommen die Änderungen mit den Grad natürlich! Das ist ein guter Hinweis, danke! Leider bringt mir Matlab die selbe Fehlermeldung: Conversion to char from logical is not possible.
Ich benütze eine ältere Version von Matlab. R2010b. Ich vermute es hängt damit zusammen. Welche Änderungen sind notwendig, damit ich es mit dieser Version lösen kann? Bzw. wie könnte ich vorab die Umwandlung von Logical in Char vornehmen?
Ich danke dir und wünsche einen schönen Abend!
Friedrich
Interessant für mich wäre nun noch folgendes:
Ich möchte in einem Vektor die Konstante Gewichtskraft G verwenden, die keinen bestimmten Wert hat. Errechnet mir Matlab auch damit eine Lösung? (In etwa in der Form: Ax = 3*G/2 oder so ähnlich)
Viele Grüße
fritzmeister
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 11.04.2016, 19:03
Titel:
Neuer Versuch es korrekt Abzubilden
Code:
%Variablen erstellen:
syms Ax Ay Ma By Cx Cy;
%Zwei Matrizen und vier Vektoren anlegen mit den sechs Variablen:
MatA=[1,0,0;0,-1,3;3,3,-4.5];
vekB=[Cx;Cy;2,4];
vekC=[Ax;Ay;Ma];
MatB=[1,0,0,0;0,1,1,0;1,-2,3,1];
vekE=[Cx;Cy;9;10];
vekF=[0;By;0];
%Gleichung 1
eq1=MatA*vekB-vekC;
%ergibt:
eq1 =
Cx - Ax
36/5 - Cy - Ay
3*Cx + 3*Cy - Ma - 54/5 % Gleichung 2
eq2=MatB*vekE-vekF;
%ergibt:
eq2 =
Cx
Cy - By + 9
Cx - 2*Cy + 37 % Solver Starten
S=solve(eq1,eq2);
%ergibt
S =
Ax: [1x1 sym]
Ay: [1x1 sym]
By: [1x1 sym]
Cx: [1x1 sym]
Cy: [1x1 sym]
Ma: [1x1 sym]
%Ergebniss mittels folgendem Code in einen Vektor überführen:
S=[S.Ax,S.Ay,S.Ma,S.By,S.Cx,S.Cy];
Ich möchte in einem Vektor die Konstante Gewichtskraft G verwenden, die keinen bestimmten Wert hat. Errechnet mir Matlab auch damit eine Lösung? (In etwa in der Form: Ax = 3*G/2 oder so ähnlich)
), dann bringt mir Solve stets ein Ergebnis für G das abhängig ist von Ay und nicht umgekehrt. Ich möchte G lediglich als Variable nutzen, um damit meine Lagerreaktionen (Ax,Ay,Ma,By,Cx,Cy) zu berechnen. Als Ergebnis ist G daher unbrauchbar für mich.
Dabei verstehe ich nicht, weshalb G stets im Ergebnis aufgeführt wird. Die Variablen lege ich an:
Warum wählt Matlab trotzdem G anstatt Ay als Ergebnisvariable?
Wie kann ich dies ändern, sodass Ay (und auch die anderen Variablen) in Abhängigkeit von G berechnet werden?
Der Versuch mit Solve die richtigen Variablen für die Ausgabe zu definieren funktioniert leider nicht.
(Code wie im vorigen Post,aber...)
Code:
syms G
vb1=[Cx;Cy;G;G] % eq1 und eq2 wie im vorigen Post
S=solve(eq1,eq2,Ax,Ay,By,Ma,Cx,Cy)% die angegebenen Variablen möchte ich als Ergebnis haben % Bringt folgende Fehlermeldung Warning: Explicit solution could not be found.
> In solve at 81
S =
[ empty sym]
Dafür findet Solve keine Variablen. Was genau der Fehler in Solve ist, weis ich nicht. Ich vermute: sieben Variablen wurden definiert die alle in den sechs Gleichungen vorkommen > Unbestimmtes Gleichungssystem.
Daher ging meine Überlegung in die Richtung G als Konstante zu definieren. Da bin ich noch dran. Haltet ihr die Vorgehensweise für Sinnvoll?
Wie gesagt, mein Ziel ist es die Lagerreaktionen als Funktion von G zu erhalten.
bitte poste den Code zusammenhängend. Es ist sehr mühsam, sich die Schnipsel zusammensuchen zu müssen.
Danke und Grüße,
Harald
fritzmeister
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 17.04.2016, 18:50
Titel:
Hallo Harald!
Hier der Code:
Code:
%Variablen erstellen:
syms Ax Ay Ma By Cx Cy G;
%Zwei Matrizen und vier Vektoren anlegen mit den sechs Variablen:
MatA=[1,0,0;0,-1,3;3,3,-4.5];
vekB=[Cx;Cy;2.4];
vekC=[Ax;Ay;Ma];
MatB=[1,0,0,0;0,1,1,0;1,-2,3,1];
vekE=[Cx;Cy;G;G];
vekF=[0;By;0];
%Gleichung 1
eq1=MatA*vekB-vekC;
eq2=MatB*vekE-vekF;
S=solve(eq1,eq2,Ax,Ay,By,Ma,Cx,Cy)
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
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.