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

Verständnis-Problem2 Quellcode

 

bastibe2689
Forum-Anfänger

Forum-Anfänger


Beiträge: 20
Anmeldedatum: 11.05.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.05.2011, 20:07     Titel: Verständnis-Problem2 Quellcode
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen


bastibe2689
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 20
Anmeldedatum: 11.05.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.05.2011, 21:35     Titel:
  Antworten mit Zitat      
odeset oder help odeset können mir irgendwie auch nicht weiterhelfen!!
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

der Löser erwartet, dass ein Spaltenvektor mit den Ableitungen zurückgegeben wird. Wenn du nicht initialisierst, wirds ein Zeilenvektor.
Siehe auch
Code:

Wenn die Matrizen groß werden, empfiehlt sich das Vorbelegen auch aus Performance-Gründen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 16.05.2011, 21:51     Titel: Re: Verständnis-Problem2 Quellcode
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
bastibe2689
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 20
Anmeldedatum: 11.05.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.05.2011, 07:22     Titel:
  Antworten mit Zitat      
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? Smile

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! Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
bastibe2689
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 20
Anmeldedatum: 11.05.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.05.2011, 07:35     Titel:
  Antworten mit Zitat      
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
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.