Verfasst am: 07.07.2015, 14:38
Titel: Bereitstellung einer Jacobi-Matrix für einen ode-Solver
Hallo zusammen,
ich habe im Studium aktuell die Aufgabe das DGL-System eines Pendels mit Stoß-Anregung zu untersuchen. Hier wird zunächst die DGL des Pendels mit einem ode45-Solver gelöst und in der Zeit- und Phasenebene dargestellt (s. Aufgabe1 und Aufgabe2).
In der Aufgabe3 geht es nun jedoch darum, dem numerischen Integrationsverfahren die Jacobi-Matrix zur Verfügung zu stellen und das Problem erneut zu lösen. Der nächste Schritt besteht dann darin Lösungsunterschiede zum vorigen Vorgehen zu erkennen.
Ich habe zwei MATLAB-Function-Files erstellt: eins für die DGL des Pendels und eins für die Berechnung der Jacobi-Matrix dieser DGL. Im Script fasse ich dann die Kommandos für die jeweiligen Aufgaben zusammen.
Nun mein Problem: Aufgabe1 und Aufgabe2 lassen sich wunderbar ausführen und machen was sie sollen, nur Aufgabe3 gibt bei mir folgenden Fehlercode:
Ich bekomme es anscheinend nicht richtig hin dem ode-Solver die Jacobi-Matrix zur Verfügung zu stellen. Könnt ihr mir weiterhelfen?
Hier mein MATLAB-Code:
Code:
% Aufgabe 1
[t,phi]=ode45(@pendel,[040],[(pi/12);0]);
plot(t,phi);
title('Systemverhalten Pendel, phi0=15° dphi0=0°/s');
xlabel('Zeit t');
ylabel('Winkel phi / Winkelgeschwindigkeit dphi/dt');
legend('phi','phipunkt');
pause;
%Beginn bei phi=15° (=0.2618 im Bogenmaß) und phipunkt=0°/s
%nichtperiodischer Verlauf, da Anregung als Störgröße fungiert und somit
%eine Periodizität verhindert wird
% Aufgabe 2
[t,phi]=ode45(@pendel,[040],[(pi/3);(57.3*pi)/180]);
plot(phi(:,1),phi(:,2));
title('Phasenebene Pendel, phi0=60° dphi0=57.3°/s');
xlabel('Winkel phi');
ylabel('Winkelgeschwindigkeit dphi/dt');
pause;
%stabiles System mit stabiler Endlage, da es sich nicht in unendlicher Zeit in unendlichen
%Werten für phi und dphi verläuft; es existiert ein Endzustand
Hier fehlt noch die wichtigste Zeile: Welchen Fehler bekommst Du denn in dieser Zeile?
Gruß,Jan
Hallo Jan,
erstmal vielen Dank für diene Hilfe!
Also in der M-File für FJac wird mir kein Fehler angezeigt oder irgendwas von MATLAB markiert, nur beim Ausführen des Skripts in der Kommandozeile unten.
Das gleiche gilt bei den anderen beiden Error-Nachrichten.
Die oberste Fehlermeldung wurde beim letzten Mal nicht miteingefügt, deshalb hier nochmal:
Undefined function 'jacobian' for input arguments of type 'double'.
Diese Fehlermeldung ist eindeutig und klar, oder?
Es gibt die Funktion "jacobian" nicht. Was soll sie denn tun und wie kamst Du darauf diese Funktion dort einzusetzen?
Undefined function 'jacobian' for input arguments of type 'double'.
Diese Fehlermeldung ist eindeutig und klar, oder?
Es gibt die Funktion "jacobian" nicht. Was soll sie denn tun und wie kamst Du darauf diese Funktion dort einzusetzen?
Gruß, Jan
In dem M-File FJac definiere ich eine Funktion J, welche die Jacobi-Matrix der DGL berechnet. Dabei benutze ich folgende Syntax:
die aussage von jan könnte ich hier nochmal copy paste:)
Zitat:
Es gibt die Funktion "jacobian" nicht.
hast du die toolboxen die diese funktion erst beinhalten? sonst kannst du sie nicht verwenden und musst sie selber programmieren wenn du sie benutzen willst.
_________________
die aussage von jan könnte ich hier nochmal copy paste:)
Zitat:
Es gibt die Funktion "jacobian" nicht.
hast du die toolboxen die diese funktion erst beinhalten? sonst kannst du sie nicht verwenden und musst sie selber programmieren wenn du sie benutzen willst.
Was genau meint ihr mit Funktion? Meint ihr den Matlab-Befehl? Den kann man bei den an unserer Uni zur Verfügung gestellten Rechnern nutzen, um Jacobi-Matrixen zu berechnen.
Was genau meint ihr mit Funktion? Meint ihr den Matlab-Befehl? Den kann man bei den an unserer Uni zur Verfügung gestellten Rechnern nutzen, um Jacobi-Matrixen zu berechnen.
ja aber das ist ja nicht die funktion aus deinem skript. jacobian aus der symbolic toolbox ist ja ganz klar nicht für doublewerte als input parameter. das sagt dir auch die fehlermeldung.
Zitat:
v Vector of variables with respect to which you compute Jacobian
symbolic variable | symbolic vector
ja aber das ist ja nicht die funktion aus deinem skript. jacobian aus der symbolic toolbox ist ja ganz klar nicht für doublewerte als input parameter. das sagt dir auch die fehlermeldung.
Zitat:
v Vector of variables with respect to which you compute Jacobian
symbolic variable | symbolic vector
Bedeutet das, dass ich dem jacobian-Befehl nicht phi(1) und phi(2) übergeben darf, sondern nur phi? Bzw. was muss ich machen damit es läuft?
Ich stecke leider nicht so in der Materie und habe erst vor einem Monat angefangen mit MATLAB zu arbeiten, daher bedanke ich mich mal im Voraus für euer Verständnis und eure Antworten!
sieht mir stark nach syms aus...
_________________
Ich hasse es wenn die Leute Fragen stellen, man dann versucht sich Mühe zu geben, und diejenigen ihren Thread nie wieder besuchen...
Einstellungen und Berechtigungen
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
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.