Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Bücher:

Regelungstechnik 1

Studierende:
weitere Angebote

Partner:


Vermarktungspartner


Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

ode45 Fehlermeldungen, Integration eines DGL-Systems

 

David123321

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.04.2021, 17:17     Titel: ode45 Fehlermeldungen, Integration eines DGL-Systems
  Antworten mit Zitat      

ode45 Fehlermeldungen, Integration eines DGL-Systems
Klicke hier, um den Artikel bei Amazon.de anzuschauen.




Dieser Artikel existiert nicht oder nicht mehr auf dem Amazon-Server.

ode45 Fehlermeldungen, Integration eines DGL-Systems
Klicke hier, um den Artikel bei Amazon.de anzuschauen.

Hallo,

ich möchte ein System von Differenzialgleichungen integrieren. Mit den Matrizen A und B habe ich es in ein explizites System umgeformt.

Code:

A = [zeros(size(M)),eye(size(M));-M\K, -M\D]; % 84x84
B = [zeros(size(M));inv(M)]; %84x42

odefun=@(yout,tout) A*yout+B*amp*k_pri*sin(10*tout);

% amp (42x1)
%k_pri = (1x1)

tspan = [a,b];
[tout,yout] = ode45(@(yout,tout) (A*yout+B*amp*k_pri*sin(10*tout)), tspan, y0);

%y0 = (84x1)
 


Ich bekomme hier eine ganze Reihe an Fehlermeldungen. Die Funktion lässt sich mit meinen selbst programmierten Integrationsverfahren lösen. Ich habe trotzdem die Dimensionen der verwendeten Größen ergänzt, falls der Fehler doch dort liegt.
M,K und D sind Massen- Steifigkeits- und Dämpfungsmatrix mit je der Dimension (42x42)

Es wäre super, wenn jemand den Fehler sieht.

Viele Grüße


Harald
Forum-Meister

Forum-Meister


Beiträge: 23.001
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 27.04.2021, 17:56     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Ich bekomme hier eine ganze Reihe an Fehlermeldungen.

Du bekommst mit ziemlicher Sicherheit nicht eine ganze Reihe von Fehlermeldungen, sondern genau eine und ihre Entstehung. Es wäre ungemein hilfreich, wenn du die Fehlermeldung auch postest, zumal dein Code mangels Werten für diverse Variablen nicht ausführbar ist.

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
 
David123123

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.04.2021, 09:31     Titel:
  Antworten mit Zitat      
Hallo,

die Fehlermedlungen, die ich bekomme sind:
Code:
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
Modell_neun>@(yout,tout)(A*yout+B*amp*k_pri*sin(10*tout))
(line 763)
[tout,yout] = ode45(@(yout,tout)
(A*yout+B*amp*k_pri*sin(10*tout)), tspan,
y0);

Error in odearguments (line 90)
f0 = feval(ode,t0,y0,args{:});   % ODE15I
sets args{1} to yp0.

Error in ode45 (line 115)
  odearguments(FcnHandlesUsed,
  solver_name, ode, tspan, y0, options,
  varargin);

Error in Modell_neun (line 763)
[tout,yout] = ode45(@(yout,tout)
(A*yout+B*amp*k_pri*sin(10*tout)), tspan,
y0);
 
>>


Viele Grüße
 
Harald
Forum-Meister

Forum-Meister


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

das ist doch eine recht klare Fehlermeldung. Die Frage ist, welche der Multiplikationen beanstandet wird. Da das Beispiel für mich nicht reproduzierbar ist, ist das schwierig zu beantworten.
Es kann einfacher sein, statt einem anonymous Function Handle vorübergehend eine separate Datei zu verwenden, dort einen Haltepunkt zu setzen und die Dimensionen der beteiligten Variablen anzusehen.
Für weitere Unterstützung bitte konkrete Beispiele zu den Variablen als .mat-Datei anhängen.

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
 
David123123

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.04.2021, 10:48     Titel:
  Antworten mit Zitat      
Danke für die Antwort.
Da ich mit anderen Verfahren die Lösung berechnen kann, wundert mich, dass es ein Problem mit den Dimensionen gibt.
Die Matrizen sind recht groß, ich habe deshalb die ganze Datei angehängt. Ab Zeile 760 sind kommt der betreffende Code.

Viele Grüße
David

Modell_acht.m
 Beschreibung:

Download
 Dateiname:  Modell_acht.m
 Dateigröße:  38.07 KB
 Heruntergeladen:  11 mal
 
David123123

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.04.2021, 10:49     Titel:
  Antworten mit Zitat      
Das war das falsche Modell, hier das richtige:

Modell_neun.m
 Beschreibung:

Download
 Dateiname:  Modell_neun.m
 Dateigröße:  30.44 KB
 Heruntergeladen:  7 mal
 
Harald
Forum-Meister

Forum-Meister


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

die Eingabeargumente waren vertauscht. ode45 übergibt erst t, dann y. So funktioniert's:

Code:
odefun=@(tout, yout) A*yout+B*amp*k_pri*sin(10*tout);
tspan = [a,b];
[tout,yout] = ode45(odefun, tspan, y0);


Bei ode23 (Zeilen 766 - 769) besteht dann das gleiche Problem.

Insgesamt ist der Code sehr länglich. Es kann interessant sein, das nach Möglichkeit kompakter zu gestalten oder aufzuspalten. Beispielsweise würde ich k.kx als 8x2-Matrix anlegen.

Viele 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
 
David123123

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.04.2021, 15:59     Titel:
  Antworten mit Zitat      
Hallo Harald,

vielen Dank. Das war ja ein doofer Fehler.
Danke für de Tipp!

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


goMatlab ist ein Teil des goForen-Labels
goForen.de goMATLAB.de goLaTeX.de


 Impressum  | Nutzungsbedingungen  | Datenschutz  | Werbung/Mediadaten | Studentenversion | FAQ | goMatlab RSS Button RSS


Copyright © 2007 - 2021 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
Partner: LabVIEWforum.de

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.