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

Lösen eines Gleichungssystems mit Matrizen

 

MaHoer
Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 11.05.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.05.2017, 09:10     Titel: Lösen eines Gleichungssystems mit Matrizen
  Antworten mit Zitat      
Hallo Leute,

ich bin Neuling und soll für die Uni ein Gleichungssystem mit Matlab lösen.
Das Gleichungssystem habe ich nun wie folgt aufgestellt.
___________________
Code:

FF = 100
psi1 = [1:148]

syms G7_x G7_y C_x C_y D_x D_y
g01 = D_x+FF*cos(psi1) == 0
g02 = D_y+FF*sin(psi1) == 0
g1 = G7_x-FF*cos(psi1) == 0
g2 = G7_y-FF*sin(psi1) == 0
g3 = -G7_x-C_x == 0
g4 = -G7_y-C_y == 0
 

___________________

Ich habe nun zuerst versucht das Gleichungssystem nach D_x und D_y zu lösen, indem ich Matrizen mit Nullstellen erzeugt habe und diese in einer for-Schleife mit den entsprechenden Werte überschreiben lasse.
___________________
Code:

k=zeros(1:148)
l=zeros(1:148)
s=zeros(1:148)
d=zeros(1:148)

for i=1:148
[sol_G7_x, sol_G7_y, sol_D_x, sol_D_y] = vpasolve([g01(i), g02(i), g1(i), g2(i)],[G7_x, G7_y, D_x, D_y])
k(i)=sol_G7_x
l(i)=sol_G7_y
s(i)=sol_D_x
d(i)=sol_D_y
i=i+1
end
 

___________________

Dies hat funktioniert. Wenn ich dies nun auf C_x und C_y erweitern will:
___________________
Code:

k=zeros(1:148)
l=zeros(1:148)
s=zeros(1:148)
d=zeros(1:148)
f=zeros(1:148)
g=zeros(1:148)

for i=1:148
[sol_G7_x, sol_G7_y, sol_D_x, sol_D_y, sol_C_x, sol_C_y] = vpasolve([g01(i), g02(i), g1(i), g2(i), g3(i), g4(i)],[G7_x, G7_y, D_x, D_y, C_x, C_y])
k(i)=sol_G7_x
l(i)=sol_G7_y
s(i)=sol_D_x
d(i)=sol_D_y
f(i)=sol_C_x
g(i)=sol_C_y
i=i+1
end
 

___________________

gibt er mir folgende Fehlermeldung:
___________________
Error using subsref
Index exceeds Matrix dimensions.
Error in sym/subsref....
___________________

Ich hoffe ihr könnt mir weiter helfen. Hänge daran schon eine Weile und würde gerne weiter kommen, aber ich weiß echt nicht wie.
Private Nachricht senden Benutzer-Profile anzeigen


MaHoer
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 11.05.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.05.2017, 07:59     Titel:
  Antworten mit Zitat      
Hat denn keiner einen möglichen Lösungsansatz???? Sad
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 13.05.2017, 08:10     Titel:
  Antworten mit Zitat      
Hallo,

zum Vorbelegen solltest du
Code:

verwenden.

k=zeros(1:148) würde eine 1x2x3x...x148 - Matrix vorbelegen. Das sprengt den Speicher aller Rechner auf der Welt zusammen.

Nach dieser Änderung kann ich die Fehlermeldung nicht nachvollziehen. Verwendest du vielleicht ein älteres Release? Falls ja, solltest du das bei deinen Fragen immer angeben.

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

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 11.05.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.05.2017, 08:28     Titel:
  Antworten mit Zitat      
Hallo Harald,

ich habe dies nun so geändert:

Code:

k=zeros(1,148)
.
.
.
 


Es wird mir dennoch die Fehlermeldung weiterhin angezeigt.

Ich verwende die Version R2015a.

Könnte dies an meiner älteren Version liegen??
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 13.05.2017, 09:09     Titel:
  Antworten mit Zitat      
Hallo,

bei mir läuft der Code auch unter R2015a durch.

Das "i = i+1" sollte man weglassen, da i automatisch inkrementiert wird. Es sollte aber auch nicht schaden.

In welcher Zeile wird die Fehlermeldung denn genau erzeugt? Bei welchem Schleifendurchlauf?

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

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 11.05.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.05.2017, 09:47     Titel:
  Antworten mit Zitat      
Hier nochmal die komplette Fehlermeldung:

Code:

Error using subsref
Index exceeds Matrix dimensions.
Error in sym/subsref (line771)
                 R_tilde = builtin('subsref', L_tilde,Idx);
Error in TEST_Forum (line21)
[sol_G7_x, sol_G7_y, sol_D_x, sol_D_y, sol_C_x, sol_C_y] = vpasolve([g01(i), g02(i), g1(i), g2(i), g3(i), g4(i)],[G7_x, G7_y, D_x, D_y, C_x, C_y])


Der erste Schleifendurchlauf wird berechnet. Ab dem zweiten gibt er mir die Fehlermeldung heraus.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

ich habe hier keine Erklärung, und kann nur eine Kontaktaufnahme mit dem Technischen Support empfehlen.

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

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 11.05.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.05.2017, 07:26     Titel:
  Antworten mit Zitat      
Harald hast du den Code mit den 6 Unbekannten durchlaufen lassen?

Also diesen hier:

Code:

FF = 100
psi1 = [1:148]

syms G7_x G7_y C_x C_y D_x D_y
g01 = D_x+FF*cos(psi1) == 0
g02 = D_y+FF*sin(psi1) == 0
g1 = G7_x-FF*cos(psi1) == 0
g2 = G7_y-FF*sin(psi1) == 0
g3 = -G7_x-C_x == 0
g4 = -G7_y-C_y == 0

k=zeros(1,148)
l=zeros(1,148)
s=zeros(1,148)
d=zeros(1,148)
f=zeros(1,148)
g=zeros(1,148)

for i=1:148
[sol_G7_x, sol_G7_y, sol_D_x, sol_D_y, sol_C_x, sol_C_y] = vpasolve([g01(i), g02(i), g1(i), g2(i), g3(i), g4(i)],[G7_x, G7_y, D_x, D_y, C_x, C_y])
k(i)=sol_G7_x
l(i)=sol_G7_y
s(i)=sol_D_x
d(i)=sol_D_y
f(i)=sol_C_x
g(i)=sol_C_y

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

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 14.05.2017, 08:27     Titel:
  Antworten mit Zitat      
Hallo,

jetzt kann ich den Fehler reproduzieren. War wohl das falsche Codeschnipsel.

Das Problem: g3 und g4 sind ja nur eine Gleichung, es gibt also kein g3(2). Wenn du die Gleichungen für unterschiedliche g01, g02, g1 und g2, aber die selben anderen Gleichungen lösen willst, dann ginge:
Code:
[sol_G7_x, sol_G7_y, sol_D_x, sol_D_y, sol_C_x, sol_C_y] = vpasolve([g01(i), g02(i), g1(i), g2(i), g3, g4],[G7_x, G7_y, D_x, D_y, C_x, C_y])


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

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 11.05.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.05.2017, 08:33     Titel:
  Antworten mit Zitat      
Super, das klappt. Mr. Green Harald vielen Dank
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 - 2025 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.