Verfasst am: 23.05.2015, 20:22
Titel: Gleichung nach Variable auflösen
Hallo,
ich bin recht neu mit MatLab und auch hier im Forum.
Folgende Gleichung würde ich gerne mit MatLab auflösen und dort die Werte für Q2 erhalten.
(K2-M2*(g))*Q2=0
g ist eine Determinante, hat also zwei Werte.
K2 ist die Steifigkeitsmatrix 2 x 2 und M2 die Massenmatrix auch 2 x 2.
Ich kann ja die Werte für g nacheinander eingeben und zweimal rechnen, aber das sollte doch sicher auch schneller gehen. Das Ergebniss müsste bei diesem Beispiel ach 2 x2 wertig sein.
Vielen Dank im voraus.
Gruß
leichtbeton
Hier der Auszug aus einer ehemaligen Arbeit von mir. letzte Zeile ist für dich interresant löst gleichung H nach Variable FB.
Voraussetzung ist das die Gleichung nach 0 Umgestellt ist.
Also erst einmal ist syms ja zum Definieren von Variablen. Soll heißen, wenn du x2 als Variable definierst und anschließend einen Wert dafür festlegst, macht das ganze keinen Sinn mehr.
Ich habe deinen Quellcode mal umgeschrieben.
Code:
clearall syms x Q2
E=[1000;0100 ;0010 ;0001];
K=[2-100; %Steifigkeitsmatrix
-12-10;
0-12-1;
00-11];
M=[0000; %Massenmatrix
0200;
0000;
0001];
x1=[00; %Startvektoren mit den Einheitsvektoren e2 und e4
20;
00;
01];
x2=[21;
42;
43;
44];
K2=x2'*K*x2;
M2=x2'*M*x2
g=det(K2-M2*x)
F = (K2*Q2-M2*g*Q2)
F1 = F(1,1) solve(F1,'Q2')
F2 = F(1,2) solve(F2,'Q2')
F3 = F(2,1) solve(F3,'Q2')
F4 = F(2,2) solve(F4,'Q2')
Da es eine 2x2 Matrix ist, teile ich diese erst auf und löse dann einzeln auf (F=( F1 F2 ; F3 F4)). Das Problem liegt dann aber in deiner Rechnung.
z.B.
F1 = 8*Q2 - Q2*(6144*x^2 - 6144*x + 768)
Kann für Q2 nur 0 rauskommen
Das geht theoretisch, aber ob das richtig ist musst du selbst einschätzen.
Ich muss dazu sagen ich beschäftige mich auch erst seit 1Monat mit Matlab im Rahmen einer Projektarbeit und FEM Modul. Also vielleicht hat noch jemand eine bessere Idee, aber ich hoffe ich konnte dir erst mal helfen.
Code:
clearall closeall syms x Q2 T
E=[1000;0100 ;0010 ;0001];
K=[2-100; %Steifigkeitsmatrix
-12-10;
0-12-1;
00-11];
M=[0000; %Massenmatrix
0200;
0000;
0001];
x1=[00; %Startvektoren mit den Einheitsvektoren e2 und e4
20;
00;
01];
x2=[21;
42;
43;
44];
K2=x2'*K*x2;
M2=x2'*M*x2
g=det(K2-M2*x)
%F = (K2*Q2-M2*g*Q2)
F=Q2^T*M2*Q2-1
F1 = F(1,1) solve(F1,'Q2')
F2 = F(1,2) solve(F2,'Q2')
F3 = F(2,1) solve(F3,'Q2')
F4 = F(2,2) solve(F4,'Q2')
vielen Dank für deine tatkräftige Unterstützung. Du hast recht. Das Problem ist dann weniger die MatLab Anwendung, sondern dass ich einen Gedankenfehler bei der Unterraum Iteration habe. Das gehört sicherlich in ein anderes Forum. Muss ich noch eins finden
Nur der Vollständigkeit halber möchte ich noch erwähnen, dass T keine Variable war sondern lediglich bedeuten sollte, dass der Vektor transponiert wird.
Einen kompletten Ablaufplan der Iteration findet man auch hier:
http://www.db-thueringen.de/servlet.....056/boehnke_habil_036.pdf
Desweiteren sollten reele Werte für Q2 rauskommen, die so aussehen sollten.
Aber wie gesagt, dass gehört hier wirklich nicht her. Daher kann man das schließen.
Dennoch tausend dank
Gruß
leichtbeton
Einstellungen und Berechtigungen
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.