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

Gleichung nach Variable auflösen

 

leichtbeton
Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 01.01.15
Wohnort: Zeititz
Version: ---
     Beitrag Verfasst am: 23.05.2015, 21:22     Titel: Gleichung nach Variable auflösen
  Antworten mit Zitat      
Hallo,

ich bin recht neu mit MatLab und auch hier im Forum. Embarassed

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
Private Nachricht senden Benutzer-Profile anzeigen


kojoteKarl
Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 23.05.15
Wohnort: Freiberg
Version: R2013
     Beitrag Verfasst am: 23.05.2015, 21:34     Titel:
  Antworten mit Zitat      
Das sollte über den solve befehl gehen.

Code:
clear
syms FB z l1 l2 l3 F1 F2

MA=-F1*l1-F2*l2+FB*l3
FA=F1+F2-FB

Mb1=MA+FA*z
Mb2=FA*(l1+z)+MA-F1*z
Mb3=FB*(l3-z)

MB1FB=diff(Mb1,FB)
MB2FB=diff(Mb2,FB)
MB3FB=diff(Mb3,FB)


f1=Mb1*MB1FB
int1=int(f1,z,l1,0)
f2=Mb2*MB2FB
int2=int(f2,z,l2,l1)
f3=Mb3*MB3FB
int3=int(f3,z,l3,l2)


H=int1+int2+int3
solve(H,'FB')


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.
Private Nachricht senden Benutzer-Profile anzeigen
 
leichtbeton
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 01.01.15
Wohnort: Zeititz
Version: ---
     Beitrag Verfasst am: 23.05.2015, 21:44     Titel:
  Antworten mit Zitat      
Hallo Kojotekarl,

aha danke soweit. muss ich mich erstmal reinfuchsen.

Hier schonmal mein Code bisher. Vielleicht ist es damit klarer? Das ganze behandelt die Unterraum Iteration mit Startvektoren.
Code:
% .............Beispiel 11.26 Bathe "Finite Element Methoden".........................
E=[1 0 0 0;0 1 0 0 ;0 0 1 0 ;0 0 0 1];
K=[2 -1 0 0;        %Steifigkeitsmatrix
    -1 2 -1 0;
    0 -1 2 -1;
    0 0 -1 1];
M=[0 0 0 0;         %Massenmatrix
    0 2 0 0;
    0 0 0 0;
    0 0 0 1];
x1=[0 0;            %Startvektoren mit den Einheitsvektoren e2 und e4
    2 0;
    0 0;
    0 1];
x2=[2 1;
    4 2;
    4 3;
    4 4];
K2=x2'*K*x2;
M2=x2'*M*x2
syms x x2 Q2
g=det(K2-M2*x)
x=solve(g)
(K2-M2*(g))*Q2=0


Gruß
lb
Private Nachricht senden Benutzer-Profile anzeigen
 
leichtbeton
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 01.01.15
Wohnort: Zeititz
Version: ---
     Beitrag Verfasst am: 23.05.2015, 21:51     Titel:
  Antworten mit Zitat      
Hallo kojotekarl,

was meinst mit nach 0 umgestellt?
Gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
kojoteKarl
Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 23.05.15
Wohnort: Freiberg
Version: R2013
     Beitrag Verfasst am: 23.05.2015, 22:15     Titel:
  Antworten mit Zitat      
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:
clear all
syms x Q2
E=[1 0 0 0;0 1 0 0 ;0 0 1 0 ;0 0 0 1];
K=[2 -1 0 0;        %Steifigkeitsmatrix
    -1 2 -1 0;
    0 -1 2 -1;
    0 0 -1 1];
M=[0 0 0 0;         %Massenmatrix
    0 2 0 0;
    0 0 0 0;
    0 0 0 1];
x1=[0 0;            %Startvektoren mit den Einheitsvektoren e2 und e4
    2 0;
    0 0;
    0 1];
x2=[2 1;
    4 2;
    4 3;
    4 4];
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
Private Nachricht senden Benutzer-Profile anzeigen
 
kojoteKarl
Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 23.05.15
Wohnort: Freiberg
Version: R2013
     Beitrag Verfasst am: 23.05.2015, 22:17     Titel:
  Antworten mit Zitat      
wie hier bei F1 musst du dir F1 als 0 vorstellen
Private Nachricht senden Benutzer-Profile anzeigen
 
leichtbeton
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 01.01.15
Wohnort: Zeititz
Version: ---
     Beitrag Verfasst am: 24.05.2015, 00:42     Titel:
  Antworten mit Zitat      
Hallo kojoteKarl,
vielen Dank!
stimmt x2 war ein Fehler. Hatte ich aber auch so nicht verwendet.

Also kann ich das System so gar nicht lösen. Im Bathe steht noch eine Gleichung mit Q2^T*M2*Q2=1

Damit könnte es doch gehen, aber ich kriege es auch damit nicht hin.

Gruß
lb
Private Nachricht senden Benutzer-Profile anzeigen
 
kojoteKarl
Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 23.05.15
Wohnort: Freiberg
Version: R2013
     Beitrag Verfasst am: 24.05.2015, 08:33     Titel:
  Antworten mit Zitat      
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:
clear all
close all
syms x Q2 T
E=[1 0 0 0;0 1 0 0 ;0 0 1 0 ;0 0 0 1];
K=[2 -1 0 0;        %Steifigkeitsmatrix
    -1 2 -1 0;
    0 -1 2 -1;
    0 0 -1 1];
M=[0 0 0 0;         %Massenmatrix
    0 2 0 0;
    0 0 0 0;
    0 0 0 1];
x1=[0 0;            %Startvektoren mit den Einheitsvektoren e2 und e4
    2 0;
    0 0;
    0 1];
x2=[2 1;
    4 2;
    4 3;
    4 4];
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')
Private Nachricht senden Benutzer-Profile anzeigen
 
leichtbeton
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 01.01.15
Wohnort: Zeititz
Version: ---
     Beitrag Verfasst am: 24.05.2015, 10:24     Titel:
  Antworten mit Zitat      
Hallo kojoteKarl,

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 Very Happy
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.
Code:
x11=1/(8+4*2^(0.5))
x12=1/(4*2^(0.5)-8)
x21=1/(4+4*2^(0.5))
x22=1/(4*2^(0.5)-4)


Aber wie gesagt, dass gehört hier wirklich nicht her. Daher kann man das schließen.

Dennoch tausend dank

Gruß
leichtbeton
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.