|
|
Verständnis-Problem2 Quellcode |
|
bastibe2689 |

Forum-Anfänger
|
 |
Beiträge: 20
|
 |
|
 |
Anmeldedatum: 11.05.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 16.05.2011, 20:07
Titel: Verständnis-Problem2 Quellcode
|
 |
Habe da noch ein Problem und hoffe erneut auf eure Hilfe:
Und zwar:
[t,y]=ode45(@DGLSystem5_2,[0,5],[1,1])
Ich verwende diesen solver (Runga Kutta) einmal für die Lösung einer und hier für die Lösung zweier Gleichungen.
Einmal werden 69 (bei einer GL) und das andere mal 73( 2 GL´s) Werte für y und t festgelegt.
Werden die Werte und Anzahl der Werte zufällig festgelegt?
Und was bringt mir die Vorinitialisierung bei der Programmierung dieser Funktion bzw. wieso läuft das Programm OHNE diese Vorinitialisierung nicht?
function [ydot] = DGLSystem5_2(t,y)
ydot=[0;0] // Vorinitialisierung
ydot(1)=-2*y(1)-y(2) // erste GL
ydot(2)=4*y(1)-y(2) // zweite GL
Ich hoffe ihr könnt mir wiedermal helfen...!
Vielen Dank!
Liebe Grüße
|
|
|
|
|
bastibe2689 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 20
|
 |
|
 |
Anmeldedatum: 11.05.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 16.05.2011, 21:35
Titel:
|
 |
odeset oder help odeset können mir irgendwie auch nicht weiterhelfen!!
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 16.05.2011, 21:38
Titel:
|
 |
Hallo,
der Löser erwartet, dass ein Spaltenvektor mit den Ableitungen zurückgegeben wird. Wenn du nicht initialisierst, wirds ein Zeilenvektor.
Siehe auch
Wenn die Matrizen groß werden, empfiehlt sich das Vorbelegen auch aus Performance-Gründen.
Grüße,
Harald
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 16.05.2011, 21:51
Titel: Re: Verständnis-Problem2 Quellcode
|
 |
|
 |
|
Hallo bastibe2689,
Zitat: |
Einmal werden 69 (bei einer GL) und das andere mal 73( 2 GL´s) Werte für y und t festgelegt.
Werden die Werte und Anzahl der Werte zufällig festgelegt? |
Die Frage wird mir nicht klar. ODE45 verwendet eine Schrittweiten-Schätzung um den lokalen Diskretisierungsfehler unterhalb der geforderten Schranken zu halten. Jenach Nicht-Linearität der DGL sind deshalb verschieden viele Schritte nötig. Das ist zwar deterministisch, es gibt aber keine Möglichkeit die Anzahl der Schritte im Vorhinein zu schätzen, ohne die eigentliche Integration laufen zu lassen. In einem gewissen Sinn ist das also "zufällig". Aber nicht das ist schon eine recht spezielle Definition von "Zufall".
Zitat: |
Und was bringt mir die Vorinitialisierung bei der Programmierung dieser Funktion bzw. wieso läuft das Programm OHNE diese Vorinitialisierung nicht? |
Bitte beschreibe noch mal detailiert, was "läuft nicht" bedeutet. bekommst Du eine Fehlermeldung - wenn ja, welche?
Gruß, Jan
|
|
|
bastibe2689 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 20
|
 |
|
 |
Anmeldedatum: 11.05.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 17.05.2011, 07:22
Titel:
|
 |
Guten Morgen,
@ Harald: Danke für deine Antwort, sie war sehr hilfreich.
@ Jan: Beim lösen dieser Funktion:
function [xdot]= DGL5_1(t,x)
xdot=(-0.002)*sqrt(x)+0.0023;
über diese Zeile:
[t,x]=ode45(@DGL5_1,[0,6000],0)
werden 69 Werte für x,t angelegt.
Bei dieser Funktion:
function [ydot] = DGLSystem5_2(t,y)
ydot=[0;0]
ydot(1)=-2*y(1)-y(2)
ydot(2)=4*y(1)-y(2)
über diese Zeile:
[t,y]=ode45(@DGLSystem5_2,[0,5],[1,1])
werden für y,t 73 Werte festgelegt.
Meine Frage war nun wieso der Unterschied?
Das zweite Zitat hat sich durch Harald´s Antwort aufgelöst. Ohne Vorinitialisierung bekomme ich eine Fehlermeldung , das momentan ein Zeilenvektor zurückgegeben wird, der solver aber einen Spalten vektor zurückgeben muss. Deswegen bekomme ich dann auch ohne Vorinitialisierung keine Lösung.
Vielen Dank, schonmal bis dahin!
|
|
|
bastibe2689 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 20
|
 |
|
 |
Anmeldedatum: 11.05.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 17.05.2011, 07:35
Titel:
|
 |
Ein kleines Licht ging mir auf, denke ich zumindest:
der lokale Diskritisierungsfehler beschreibt quassie die lokale Ungenauigkeit.
Matlab setzt die Anzahl der Werte so, dass nirgends die Toleranz der lokalen Ungenauigkeit überschritten wird. Dadurch ist die Anzahl der benötigten Werte eher "DGL-Abhängig" als zufällig.
Wäre das soweit vereinfacht , korrekt?
Wenn ja hier meine finale Frage:
Wer legt die Grenze fest?
Beschreibt das Runga-Kutta-Verfahren die Grenze bzw. ist die Grenze Verfahrensabhängig?
Liebe Grüße BastiBe
|
|
|
|
|
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
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| 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.
|
|