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

lin Gleichungssystem mit Variablen lösen

 

MarcusH

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.03.2013, 18:17     Titel: lin Gleichungssystem mit Variablen lösen
  Antworten mit Zitat      
Hallo ich hätte eine kleine Frage:
Bis jetzt hab ich Gleichungssysteme noch nie in Matlab behandelt deswegen hab ich vermutlich eine viel zu leichte Frage für euch Smile

Zum Beispiel habe ich 4 Gleichungen mit 4 Unbekannten(c1 bis c4) und mehreren Variablen (a bis h), denen feste Werte zugeordnet worden sind.
Code:
% d*c4 - a*c1 - e = 0
% a*c1 - b*c2 - f = 0
% b*c2 - c*c3 - g = 0
% c*c3 - d*c4 - h = 0


nun möchte ich ein numerisches Ergebnis für c1 bis c4 erhalten. Bei meinen bisherigen solver-Versuchen kamen nur weitere Gleichungen heraus und keine festen Werte(kein subs möglich).
z.B
Code:
c1 =
 
c4*d - a*c1


es gibt bestimmt einen Befehl der mir da weiter helfen könnte?! steh da einfach total aufm schlauch grad...

danke schonmal
Marcus


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 12.03.2013, 19:43     Titel:
  Antworten mit Zitat      
Hallo,

wenn a-h gegeben sind:

Code:
A = [-a, 0, 0, d;
    a, b, 0, 0;
    0, b, -c, 0;
    0, 0, c, d];
rs = [e; f; g; h];
ci = A\rs


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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.03.2013, 19:51     Titel:
  Antworten mit Zitat      
Danke dir aber wie kann ich denn die A Matrix erstellen ohne sie per Hand eingeben zu müssen?!
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 13.03.2013, 21:26     Titel:
  Antworten mit Zitat      
Hallo,

wie genau stellst du dir das vor? Soll MATLAB deine Gedanken lesen?
Wenn die Matrix nach irgendeiner Vorschrift erstellt werden soll, müsste man wissen, welche das ist.

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.03.2013, 23:14     Titel:
  Antworten mit Zitat      
Wenn ich das Beispielsgleichungen und damit die Unbekannten lösen will muss ich die Matrix A aufstellen?
Das Problem besteht darin das mein Programm darauf abziehlt eben eine solche Matrix zu vermeiden!
 
MaFam
Forum-Meister

Forum-Meister


Beiträge: 799
Anmeldedatum: 02.05.12
Wohnort: ---
Version: R2009b
     Beitrag Verfasst am: 14.03.2013, 10:36     Titel:
  Antworten mit Zitat      
MarcusH hat Folgendes geschrieben:

Das Problem besteht darin das mein Programm darauf abziehlt eben eine solche Matrix zu vermeiden!


Na gut, so kann man natürlich das Rechnen, im Grunde alles vermeiden. Wenn man alles vermeidet, hat man auch keine Probleme mehr... Very Happy

Spaß beiseite, ich verstehe deine letzte Aussage leider nicht.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

wenn du die Matrix vermeiden willst, wie soll es dann gemacht werden?

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.03.2013, 17:28     Titel:
  Antworten mit Zitat      
Mein Programm beschreibt einen Dampfturbinenkreislauf die nacheinander geschalteten Anlagenkomponenten mit den Zu- und Abströmen könnten mit so einer Matrix beschrieben werden. Allerdings habe ich mein Programm dahingegen gelenkt nicht eine solche Matrix zu erstellen, da diese extrem groß und umständlich zu werden droht, sondern durch Abfrage einen Vektor zu bekommen der die Abfolge der Komponenten speichert und diese abarbeitet.
Meine Frage ist jetzt wie ich für die bestehenden Gleichungen eine Lösung finde sei es durch solver oder andere Befehle. Bzw. wie ich aus den bestehenden Gleichungen eine Matrix formen kann ohne sie per Hand eingeben zu müssen!
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 14.03.2013, 18:35     Titel:
  Antworten mit Zitat      
Hallo Marcus,

Ich verstehe es immer noch nicht.
Wie genau sehen die Inputs aus, also in welcher Form liegen denn die Gleichungen vor? Bisher hast Du geschrieben:
Code:
% d*c4 - a*c1 - e = 0

Aber ich glaub kaum, dass die Inputs als Kommentarzeilen in einem M-File stehen.
Was genau bedeutet "extrem groß"? Manche Forums-User finden 100x100 Matrizen schon groß, andere brauchen schon eine Seitenlänge von 1e6 dafür.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
MarcusH

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.03.2013, 18:54     Titel:
  Antworten mit Zitat      
ja die Gleichungen sind vereinfacht indem z.B. "a" gleich dem Ausgangswert der Temperatur der Turbine entspricht und "d" dem Eingangswert und "e" für die Lösung einer Kostenfunktion einer Komponente steht.
(diese Beispielsfunktionen hatte ich für Versuche mit solver erstellt und sind deshalb mit % versehen)

"extrem groß" ist dabei eher der Aufwand welcher betrieben werden muss um die Matrix per Hand einzugeben bzw. weil sich man erst alle Strömungen und deren Ein- und Ausgänge vorab überlegen muss! Wink
 
Harald
Forum-Meister

Forum-Meister


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

versuche dich doch mal bitte in unsere Situation zu versetzen. Wie soll man dir mit den Informationen, die du lieferst, weiterhelfen?

Klar ist ja, dass du das Gleichungssystem in irgendeiner Form definieren musst. Matrizen und Vektoren sind die sinnvollste Form, das Problem zu lösen. Wenn du das Problem in einer anderen Form dargestellt hast, musst du uns zumindest mal sagen, in welcher Form. Schließlich wirst du kaum sämtliche Gleichungen hingeschrieben haben und dann sagen, dass es dir zu aufwändig ist, die Koeffizienten in eine Matrix einzutragen.

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.03.2013, 22:11     Titel:
  Antworten mit Zitat      
Okay ich versuchs anders Smile

also ich habe einen Vektor in dem die Reihenfolge meiner Komponenten steht. Dieser wird nun in einer for-Schleife abgefragt und somit alle Komponenten nacheinander berechnet sodass ich letztendlich eine Matrix mit allen Ergebnissen habe.
Nun will ich an die Auswertung und dafür würde ich wieder in einer for_Schleife alle Komponenten nacheinander abfragen. Dabei ergeben sich für jede Komponente die gleichen Gleichungen (es unterscheiden sich a -f diese sind aber schon berechnet für die einzelnen Komponenten) wie in den Beispielen die ich genannt habe zu sehen ist.
Letztendlich habe ich nun diese zb 4 Gleichungen allerdings ohne eine dazugehörige Matrix A. Da das ganze automatisch ablaufen soll kann ich diese nicht per Hand eintragen (was wie gesagt auch äußerst langwierig werden könnte).
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 15.03.2013, 11:38     Titel:
  Antworten mit Zitat      
Hallo,

wenn du die Positionen der Einträge und ihre Werte hast, dann kannst du die Matrix leicht erzeugen.
Code:

pos = [1, 2, 6, 7, 11, 12, 13, 16]
werte = [-a, a, -b, b, -c, c, d, -d];
A = zeros(4,4);
A(pos) = werte;


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 15.03.2013, 13:58     Titel:
  Antworten mit Zitat      
Hallo Marcus,

Die Beschreibungen als Text sind nicht wirklich hilfreich. Während "Dieser [Vektor] wird in einer FOR-Schleife abgefragt" nicht klar ist, wäre ewtas wie dies sofort erhellend:
Code:
A = zeror(10, 10);
for k=1:10
  A(:, k) = myFunction();  % Oder rand(10,1)
end

Auf die Bedeutung der Elemente kommt es ja aus programiertechnischer Sicht gar nicht an.

Nun schreibst Du:
Zitat:
...sodass ich letztendlich eine Matrix mit allen Ergebnissen habe.

Was bedeutet hier "Ergebnis"?
Zitat:
Letztendlich habe ich nun diese zb 4 Gleichungen allerdings ohne eine dazugehörige Matrix A.

Das verstehe ich nicht.
Zitat:
Da das ganze automatisch ablaufen soll kann ich diese nicht per Hand eintragen (was wie gesagt auch äußerst langwierig werden könnte).

Auch das ist für Dich sonnenklar, aber als Leser hat man keine Ahnung, was es bedeutet. Wie können denn 4 Gleichungen eine "äußerst langwierige" Arebti erfordern? Und wieso kann Matlab das gewünschte nicht automatisch machen?

Wir benötigen:
1. Inputs in valider Matlab Syntax
2. Exakte Beschreibung der gewünschten Berechnung, z.B. eine Formel. Ein Minimal-Beispiel ist auch hilfreich.
3. Eine erklärung, wie genau der Output aussehen soll.
Dann ist eine Antwort effizient möglich.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
MarcusH

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.03.2013, 19:02     Titel:
  Antworten mit Zitat      
Okay dann hab ich jetzt eine konkrete Frage:

Meine Mathekenntnisse lassen gerade nach und ich frage mich ob die Matrix (alle Buchstaben sind bekannt)

Code:
A = [a 0 0 0 0 0 -b
     0 a 0 0 0 0 -b
     0 c 0 0 d -e 0
     0 0 c 0 d -e 0
     0 0 f -g 0 0 0
     0 0 0 g -d 0 0
     -e 0 0 0 0 e 0];
 
rs = [h;i;j;k;l;m;n];


mit
Code:


lösbar ist?!
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

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.