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

6x6 Matrix mit Variablen, lineare Gleichungssysteme

 

Student417
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 19.05.21
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.05.2021, 13:26     Titel: 6x6 Matrix mit Variablen, lineare Gleichungssysteme
  Antworten mit Zitat      
Hallo zusammen.
Ich bin absoluter Neuling auf dem Gebiet mit Matlab programmieren.
Ich frage mich wie ich mein Gleichungssystem am elegantesten in Matlab lösen kann und daraus ein Programm erstelle.

[img]https://ibb.co/ZWW8NV5[/img]

Der Spaltenvektor mit den Werten F1,F2,F3,F4,Fab,Fbc sind die Unbekannten die ich herausfinden will. Alle anderen Variablen sind gegeben, aber sollen vorher eingegeben werden.

Man gibt dann vorher beispielsweise ein:

x3=20
x2=2,5
x4=20

a=10
b=10
c=10

Fa=400000
Fb=400000
Fc=400000

usw.

Im Prinzip müsste ich die inverse Matrix"A" mal den Spaltenvektor "B" multiplizieren um den Spaltenvektor "F" herauszubekommen.
Also in matlab dann irgendwie: F=A^-1*B

Ich hoffe jemand könnte mir da weiterhelfen. Ich kann mir vorstellen, dass es zu so etwas schon ein Thread gibt. Über einen Link mit ähnlichem Problem würde ich mich freuen.
Ich bedanke mich für jeglichen Hinweis.
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: 19.05.2021, 20:03     Titel:
  Antworten mit Zitat      
Hallo,

es ist sogar noch einfacher, sobald du A und B aufgestellt hast:
Code:


Zu Themen wie Erstellen von Matrizen empfehle ich das MATLAB Onramp.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Student417
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 19.05.21
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.05.2021, 00:26     Titel:
  Antworten mit Zitat      
Vielen Dank Harald!
Private Nachricht senden Benutzer-Profile anzeigen
 
Student417
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 19.05.21
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.05.2021, 16:14     Titel:
  Antworten mit Zitat      
Code:

prompt_x2 = 'Please enter Variable x2=';
prompt_x3 = 'Please enter Variable x3=';
prompt_x4 = 'Please enter Variable x4=';
prompt_a = 'Please enter Variable a=';
prompt_b = 'Please enter Variable b=';
prompt_c = 'Please enter Variable c=';
prompt_fa = 'Please enter Variable Fa=';
prompt_fb = 'Please enter Variable Fb=';
prompt_fc = 'Please enter Variable Fc=';
prompt_fd = 'Please enter Variable Fd=';
prompt_fe = 'Please enter Variable Fe=';
prompt_ff = 'Please enter Variable Ff=';
prompt_fg = 'Please enter Variable Fg=';

x2 = input(prompt_x2)
x3 = input(prompt_x3)
x4 = input(prompt_x4)

a = input(prompt_a)
b = input(prompt_b)
c = input(prompt_c)

Fa = input(prompt_fa)
Fb = input(prompt_fb)
Fc = input(prompt_fc)
Fd = input(prompt_fd)
Fe = input(prompt_fe)
Ff = input(prompt_ff)
Fg = input(prompt_fg)

B1 = Fd + (Fe/2) + Fa
B2 = Fd * x3 + Fa * a + Fe * (x2/4)
B3 = Fb + (Fe/2) + (Ff/2)
B4 = Ff * ((x4/2) - (x2/4)) + Fb * (x4-b) + Fe * (x2/4)
B5 = Fg + Fc + (Ff/2)
B6 = Fg * x3 + Fc * c + Ff * (x2/4)

Matrix_A = [2 1 0 0 1 0; 2*x3 (x2/2) 0 0 0 0; 0 1 1 0 -1 1; 0 (x2/2) (x4-(x2/2)) 0 0 x4; 0 0 1 2 0 -1; 0 0 x2/2 2*x3 0 0]
Vector_B = [B1 B2 B3 B4 B5 B6]

F = (Matrix_A)^-1 * (Vector_B)


Wenn ich das Programm ausführe und alle Parameter eingegeben habe kommt der Fehlercode:

" Error using *
Incorrect dimensions for matrix multiplication. Check that the number of columns in the first matrix
matches the number of rows in the second matrix. To perform elementwise multiplication, use '.*'.

Error in Matrix_6x6_3_GL_Zug (line 42)
F = (Matrix_A)^-1 * (Vector_B)

Related documentation"

Die Zeilen und Spaltenanzahl stimmt doch überein?
Wo ist mein Fehler?
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: 21.05.2021, 16:23     Titel:
  Antworten mit Zitat      
Hallo,

die zahlreichen input-Befehle machen Debugging recht schwierig. Stell dir vor, du musst den Code 20 Mal ausführen. Willst du jedes Mal von neuem die Daten angeben? Ich nicht.

Zitat:
Die Zeilen und Spaltenanzahl stimmt doch überein?

Nein. Der Vektor muss ein Spaltenvektor sein, ist aber ein Zeilenvektor: transponieren oder ; als Trennzeichen verwenden.

Vor allem aber frage ich mich, warum du den Vorschlag \ nicht annimmst.
Code:
F = Matrix_A \ Vector_B


Die Dimensionen müssen natürlich trotzdem zusammenpassen.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Student417
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 19.05.21
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.05.2021, 16:44     Titel:
  Antworten mit Zitat      
Harald vielen Dank für die schnelle Antwort!

Für mich ist das alles Neuland... hatte das total übersehen, dass ich einen Zeilenvektor hatte als Vector_B. Hab ihn jetzt zu einem Spaltenvektor gemacht und natürlich auch deinen Tipp übernommen:
Code:
F = Matrix_A \ Vector_B


Und leider sind die zahlreichen input-Befehle gewollt. Also die Parameter müssen für jeden Zug noch einmal separat eingegeben werden.
Ich bin mir sicher man kann das eleganter lösen, aber wie gesagt ich bin ein Anfänger...

Viele Grüße
Meris
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: 21.05.2021, 16:56     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Also die Parameter müssen für jeden Zug noch einmal separat eingegeben werden. Ich bin mir sicher man kann das eleganter lösen

Da bin ich mir auch sicher. ;)
Wie wäre es mit einer Funktion? Die kann die Eingabeparameter ebenso gut entgegennehmen.
Oder einem Live Script mit Slidern oder Feldern für die Eingabe?

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Student417
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 19.05.21
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.05.2021, 16:59     Titel:
  Antworten mit Zitat      
Hallo,

Jo ich beschäftige mich mal damit.

Viele Grüße
Meris
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.