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

Lineares Gleichungssystem lösen

 

Kevkay
Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 04.09.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.09.2013, 15:34     Titel: Lineares Gleichungssystem lösen
  Antworten mit Zitat      
Hallo zusammen,

ich habe da etwas, was mir ziemliches Kopfzerbrechen bereitet. Ich soll ein lineares Gleichungssystem aufstellen und mit Matlab lösen. Gesucht sind fünf Geometrische Parameter, von denen einige schon vorher gegeben sind.

Fünf Gleichungen zur Lösung sind gegeben:
Code:
x = y/2 + z/2;
y = x - u/2;
z = x + u/2;
u = z - y;
v = y/z;


Jetzt habe ich z.B.
Code:
x = 0.35;
u = 0.03;

gegeben.

Versuche ich diese fünf Gleichungen mit dem Solver zu lösen, so zeigt er mir an, dass er keine Eindeutige Lösung ausgeben kann. Schriftlich gerechnet ist es aber sehr wohl eindeutig lösbar.

Das viel größere Problem, das sich mir jedoch stellt, ist, dass ich die Gleichungen in ein Lösungsystem bringen soll.
Ich denke mal es sollte nicht möglich sein
Code:

in ein Lösungsystem zu bekommen, da in der Koeffizientenmatrix keine Variablen vorkommen dürfen. Oder täusche ich mich da?

Lasse ich den Parameter v nun weg und stelle stattdessen eine 4x4 Matrix auf, wäre das Lösungssystem trotzdem homogen. Der Ergebnisvektor wäre ja komplett null.

Das ganze System sähe ja dann so aus:

Code:
A = [-1 0.5 0.5 0; 1 -1 0 -0.5; 1 0 -1 0.5; 0 -1 1 -1];
b = [0; 0; 0; 0];

x = A \  b;

Jetzt spuckt er natürlich nur die triviale Lösung
Code:
x = [0; 0; 0; 0]

aus, die mir wenig weiterhilft. Des Weiteren finden meine vorgegebenen Werte für x und u überhaupt keine Verwendung in diesem Lösungssystem.

Die eigentliche Frage an dieser Stelle ist dann, ob das ganze Vorhaben überhaupt möglich ist. Wie bekomme ich Matlab dazu, meine zuvor gegebenen Informationen zur Lösung des Gleichungssystems zu nutzen? Ich hoffe jemand von euch kann mir weiterhelfen.

Liebe Grüße
Kevkay
Private Nachricht senden Benutzer-Profile anzeigen


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 04.09.2013, 15:49     Titel:
  Antworten mit Zitat      
Code:
syms x y z u v
a=solve(x == y/2 + z/2,y == x - u/2,z == x + u/2,u == z - y,v == y/z,x==0.35,u==0.03);

bekomme ich eine lösung. was klappt den bei dir nicht?
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Kevkay
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 04.09.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.09.2013, 17:52     Titel:
  Antworten mit Zitat      
Winkow hat Folgendes geschrieben:
Code:
syms x y z u v
a=solve(x == y/2 + z/2,y == x - u/2,z == x + u/2,u == z - y,v == y/z,x==0.35,u==0.03);

bekomme ich eine lösung. was klappt den bei dir nicht?


Danke erstmal für die Antwort. Jedoch bekomme ich bei der Eingabe deines Codes die Fehlermeldung:
Code:
Warning: 7 equations in 5 variables.
> In C:\Program Files\MATLAB\R2013a\toolbox\symbolic\symbolic\symengine.p>symengine at 56
  In mupadengine.mupadengine>mupadengine.evalin at 97
  In mupadengine.mupadengine>mupadengine.feval at 150
  In solve at 170


Mein Code sieht soweit so aus:
Code:
x = 0.35;
u = 0.03;

syms x y z u v
a = solve('x = y/2 + z/2','y = x - u/2','z = x + u/2','u = z - y','v = y/z');

bringt jedoch folgende Fehlermedlung:
Code:
Warning: Explicit solution could not be found.
> In solve at 179
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 04.09.2013, 18:12     Titel:
  Antworten mit Zitat      
7 gleichungen für 5 variablen ist halt überbestimmt aber eine lösung spuckt er ja trotzdem aus die deine gleichungen erfüllt.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Kevkay
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 04.09.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.09.2013, 18:29     Titel:
  Antworten mit Zitat      
Also bei mir zeigt er beim besten Willen keine Ergebnisse an.

bei x = 0.35 und u = 0.03 wären y = 0.335, z = 0.365 und v = 0.918
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 04.09.2013, 18:38     Titel:
  Antworten mit Zitat      
Code:
>> a.x
 
ans =
 
7/20
 
>> a.y
 
ans =
 
67/200
 
>> a.z
 
ans =
 
73/200
 
>> a.u
 
ans =
 
3/100
 
>> a.v
 
ans =
 
67/73

_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Kevkay
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 04.09.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.09.2013, 18:47     Titel:
  Antworten mit Zitat      
Ah ok, so klappts natürlich auch bei mir, danke. Dann muss ich mich wohl als Noob outen. Very Happy
Private Nachricht senden Benutzer-Profile anzeigen
 
Kevkay
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 04.09.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.09.2013, 16:08     Titel:
  Antworten mit Zitat      
Moin,

das "Problem" mit dem Solver ist dank Winkow soweit gelöst, jedoch ist mein Hauptproblem mit dem Lösungssystem Ax=b noch offen. Weiss denn eventuell jemand dafür auch noch Rat? Smile

Danke schonmal.
Private Nachricht senden Benutzer-Profile anzeigen
 
vega1013
Forum-Century

Forum-Century


Beiträge: 162
Anmeldedatum: 26.02.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.09.2013, 09:28     Titel:
  Antworten mit Zitat      
Hallo,

du kannst ja deine Werte für x und u in das Gleichungssystem einsetzten. Dann solltest dein b Vektor ungleich 0 sein und du hast ein überbestimmtes Gleichungssystem welches du mit dem Backslash-Operator im Sinne von Least-Square lösen kannst.
War es das was du meinst?

Gruß vega
Private Nachricht senden Benutzer-Profile anzeigen
 
vega1013
Forum-Century

Forum-Century


Beiträge: 162
Anmeldedatum: 26.02.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.09.2013, 17:27     Titel:
  Antworten mit Zitat      
Also so meinte ich:

Code:

A = [1 1; 2 0; 0 2; -1 1];
b=[0.7; 0.7-0.03; 0.7+0.03; 0.03];

x=A\b

A*x

x =

    0.3350
    0.3650


ans =

    0.7000
    0.6700
    0.7300
    0.0300
 


der Lösungsvektor ist dann:

 
<br />
\vec{x} = \begin{pmatrix}
<br />
y\\z
<br />
\end{pmatrix}
<br />
Private Nachricht senden Benutzer-Profile anzeigen
 
Kevkay
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 04.09.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.09.2013, 09:25     Titel:
  Antworten mit Zitat      
vega1013 hat Folgendes geschrieben:
Also so meinte ich:

Code:

A = [1 1; 2 0; 0 2; -1 1];
b=[0.7; 0.7-0.03; 0.7+0.03; 0.03];

x=A\b

A*x

x =

    0.3350
    0.3650


ans =

    0.7000
    0.6700
    0.7300
    0.0300
 


der Lösungsvektor ist dann:

 
<br />
\vec{x} = \begin{pmatrix}
<br />
y\\z
<br />
\end{pmatrix}
<br />


Vielen Dank für deine Antwort, sie hat mich auf jeden Fall gut weitergebracht. Smile Leider ist das Problem damit aber noch nicht ganz gelöst, ich habe nun folgendes Gleichungssystem aufgestellt:

Code:
A = [0.5 0.5 -1 0;
    -1 0 1 -0.5;
    0 -1 1 0.5;
    -1 1 0 -1;
    1 0 0 0;
    0 1 0 0;
    0 0 1 0;
    0 0 0 1];

b = [0; 0; 0; 0; x; y; z; u];

x = A\b;


Das Problem dabei ist aber, dass x,y,z und u variabel sein müssen. Der grundlegende Gedanke war, dass ich z.B. x und u vorgebe und dann y und z erhalte oder z und u und dann x und y usw.. Dafür muss ich ja aber die beiden fehlenden Variablen definieren können. Wenn ich mit syms die fehlenden Variablen definiere, spuckt er mir aus, dass die Ergebnisse unendlich sind und bei der Definition als Null spuckt er verständlicherweise nichts brauchbares aus. Gibt es da noch Abhilfe oder muss ich für jeden Fall ein Gleichungssystem aufstellen und dann mit If-Schleifen arbeiten?
Private Nachricht senden Benutzer-Profile anzeigen
 
vega1013
Forum-Century

Forum-Century


Beiträge: 162
Anmeldedatum: 26.02.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.09.2013, 22:39     Titel:
  Antworten mit Zitat      
Einen variablen Algorithmus stelle ich mir vergleichsweise Aufwendig vor. Du müsstest ja zunächst ein Wert einsetzen, umstellen um auf ein inhomogenes System zu kommen und anschließend lösen.
Da ist der o.g. Solver doch schon einiges bequemer...
Evtl. gibt's für deine Zwecke ja was im File Exchange?!

mfg
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.