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

LGS mit function-handle und Schleife

 

zyx
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 80
Anmeldedatum: 10.04.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.06.2018, 18:10     Titel: LGS mit function-handle und Schleife
  Antworten mit Zitat      
Hallo zusammen,

ich soll ein quadratisches LGS mit 5 Unbekannten lösen. Es soll dabei mit Hilfe eines function handles die Koeffizientenmatrix M erstellt werden:

Code:

RLC_func = @(om,R,L,C)[-1,1,1,0,0;...
0,1,0,-1,1;...
1i*om*L(1),0,0,1i*om*L(2),0;...
0,0,0,(1i*om*L(2)),(1/1i*om*C(2));...
1,1,((1i*om*L(3))+(1/1i*om*C(3))+R(3)),0,(1/1i*om*C(2));...
];
 


Danach soll das für 201 Frequenzen (om) in einer Schleife berechnet werden.

Mein Code:

Code:

u = 1;
U = [0 0 u 0 0]'; % Inhomogenitätsvektor
R = [nan,nan,1];
L = [1,1,1];
C = [1,1,1];
om_v = logspace(-1,1,201); % Frequenzen
for k = 1:201
    om = om_v(k);
    M = RLC_func(om,R,L,C);
    I = U \ M;
end
 


Habe schon einiges versucht, aber ich verstehe leider nicht, wie ich das für alle Frequenzen lösen soll.
Anscheinend wird die Koeffizientenmatrix nicht für jede Frequenz berechnet
und somit bekomme ich immer nur die Lösung für eine Frequenz...

Hat jemand vielleicht eine Idee wie ich das auf die Reihe bringe?

Danke schon mal im Voraus für eure Mühen! (:
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


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

das Problem dürfte sein, dass du I ständig überschreibst. Du kannst die einzelnen I in Zeilen / Spalten einer Matrix oder in einem Cell Array ablegen, z.B.
Code:
I{k} = U \ M;


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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 80
Anmeldedatum: 10.04.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.06.2018, 10:41     Titel:
  Antworten mit Zitat      
Hallo Harald!

Vielen Dank für deine Antwort! Dein Tipp hat mich auch weiter gebracht. Ich habe jetzt


Code:

I = zeros(5,201);
for k = 1:201
    om = om_v(k);
    M = RLC_func(om,R,L,C);
    I(:,k) = U \ M;
end



was jetzt soweit funktioniert. Allerdings stimmen die Ergebnisse leider nicht..

Danke für deine Hilfe! Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

Zitat:
Allerdings stimmen die Ergebnisse leider nicht..

Erster Tipp wäre Debugger. Für weitere Unterstützung müsstest du konkretisieren, welche Ergebnisse du erwartest und warum.

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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 80
Anmeldedatum: 10.04.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.06.2018, 13:19     Titel:
  Antworten mit Zitat      
Hi,

also der Ergebnisvektor

Code:


hat 5 Zeilen für die jeweiligen Ergebnisse der 5 Ströme pro Frequenz (201 Spalten)


Ich habe allerdings gerade bemerkt, dass die function nicht ganz die richtige Matrix M berechnet.


Mein Ergebnis:

Code:

 -1 + 0.0i 1 + 0i 1.0 + 0.0i  0 + 0.000i 0 + 0.000i
  0 + 0.0i 1 + 0i 0.0 + 0.0i -1 + 0.000i 1 + 0.000i
  0 + 1.5i 0 + 0i 0.0 + 0.0i  0 + 3.875i 0 + 0.000i
  0 + 0.0i 0 + 0i 0.0 + 0.0i  0 + 3.875i 0 - 1.875i
  1 + 0.0i 1 + 0i 2.7 + 2.5i  0 + 0.000i 0 - 1.875i


Das gewünschte Ergebnis:

Code:

 -1 + 0.0000i 1 + 0i 1.0 + 0.00i  0 + 0.000i 0 + 0.0000i
  0 + 0.0000i 1 + 0i 0.0 + 0.00i -1 + 0.000i 1 + 0.0000i
  0 + 1.1190i 0 + 0i 0.0 + 0.00i  0 + 3.875i 0 + 0.0000i
  0 + 0.0000i 0 + 0i 0.0 + 0.00i  0 + 3.875i 0 - 0.5333i
  0 + 0.0000i 0 + 0i 2.7 + 6.25i  0 + 0.000i 0 - 0.5333i


Sie sind also fast ident.

Ich habe gedacht, dass es vielleicht daran liegen könnte dass es sich bei RLC_func nicht um die erweiterte Koeffizientenmatrix handelt, also der Vektor U noch dabei sein sollte, aber das ist doch auch Blödsinn.

Auch die Angabe wurde nicht falsch abgeschrieben (Vorzeichenfehler oder Sonstiges).


Vielen Dank auf jeden Fall für deine Hilfe Harald!

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

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 11.06.2018, 13:44     Titel:
  Antworten mit Zitat      
Hallo,

wie gesagt: debugging.
So kannst du vielleicht schon mal nachvollziehen, in welcher Zeile das Problem liegt.

Sind die Lösungen der Gleichungssysteme denn eindeutig?

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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 80
Anmeldedatum: 10.04.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.06.2018, 14:25     Titel:
  Antworten mit Zitat      
Hallo.

Leider haben wir kein "originales" Matlab, sondern eine Art Browserversion davon, weshalb ich auch nicht genau weiß was du mit debuggen meinst.

Davon gehe ich aus. Ich werde es auf jeden Fall weiterhin probieren Very Happy

Danke nochmals!!
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 11.06.2018, 14:34     Titel:
  Antworten mit Zitat      
Hallo,

welche "Browserversion"? MATLAB Online? Auch dort gibt es Debugging.

Was Debugging ist, erfährst du über eine Suche hier, eine Suche in der Doku, und vermutlich auch mit Google.
https://www.mathworks.com/help/matl.....process-and-features.html

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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 80
Anmeldedatum: 10.04.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.06.2018, 15:44     Titel:
  Antworten mit Zitat      
Hallo Harald,

vielleicht sollte ich mir vorher eine Brille kaufen.

Zitat:
Auch die Angabe wurde nicht falsch abgeschrieben (Vorzeichenfehler oder Sonstiges).


von wegen... unglaublich!

Also die Matrix M wird jetzt endlich richtig ausgegeben. Tut mir echt leid!

Der Strom wird noch immer falsch berechnet, aber habe es mal mit

Code:
I(:,k) = M \ U


versucht, was mir immerhin die richtigen Imaginärteile liefert Very Happy
Mal sehen viel kann ja nicht mehr fehlen...

Danke für deinen Tipp! Das mit dem Debugging wusste ich nicht, das werde ich mir noch genauer ansehen!

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