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

Eulersches Verfahren plotten

 

Jay91

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.07.2015, 12:00     Titel: Eulersches Verfahren plotten
  Antworten mit Zitat      
Ich hab ein Problem und izwar, habe ich de unten stehenden Code geschrieben, kann aber aber leider keine zeichnerische Darstellung ausgeben lassen. Kann mir bitte einer behilflich sein?
Sorry dass, es so unübersichtilich ist.
Die Funktion soll im Beriech -1.5 bis 1.5 ausgegeben werden.
MfG
Code:
function [x,y] = euler_dgl1 (x_0, y_0, h, N)
%Startwert setzen
%x_0 = -1.5;
%Intervall setzen
%h = 0.6;
%Schrittzahl setzen
%N = 5;
%Startwert y0 setzen
%y_0 = 0;
%definiere Funktion
dy = @(x,y) x^2+0.1*y;
%setze x = x_0
x = x_0;
%setze y = y_0
y = y_0;
for N = x_0 : h : x_0 + h * N;
    fprintf ('Koordinate x: %f\t\t', x);
    fprintf ('Koordinate y: %f\n', y);
    delta_y = h * dy(x,y);
    y = y + delta_y;
    x = x + h;  
end
 


Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.07.2015, 12:33     Titel:
  Antworten mit Zitat      
Hast Du es mal mit plot probiert?
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 10.07.2015, 12:33     Titel:
  Antworten mit Zitat      
du kannst in deine schleife plot und hold einbauen und dann die punkte immer zeichnen... das kann aber die rechenzeit stark erhöhen. ich würde alle punkte spiecher die du plotten willst und dann am ende alles zusammen einmal plotten.
grüße
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.07.2015, 12:36     Titel:
  Antworten mit Zitat      
Wenn Du es in die Schleife einbaust, kann auch drawnow ganz nett sein. Dann kannst Du auch noch ein pause(0.05) einfügen, dann ist es wirklich hübsch anzusehen.

Wenn es schnell gehen soll, dann lieber alle Werte speichern und am Stück plotten.
Private Nachricht senden Benutzer-Profile anzeigen
 
jay91

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.07.2015, 09:54     Titel:
  Antworten mit Zitat      
Also mit plot und hold funktioniert es irgendwie leider nicht... Wie muss ich denn den Code umschreiben, damit jeder der Werte gespeichert wird? Und bei der Ausgabe gibt er mir noch den Wert x=2.1 mit aus obwohl er ja die Schleife nur bis 1.5 durchlaufen soll. Ich bin grad am verzweifeln Crying or Very sad
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 13.07.2015, 15:39     Titel:
  Antworten mit Zitat      
Zitat:
Also mit plot und hold funktioniert es irgendwie leider nicht...

hallo ohne den code können wir dir leider auch nicht sagen warum es nicht geht. raten ist immer sehr schwer. und meine wahrsagerkugel ist in der reinigung Smile
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
jay91

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.07.2015, 09:42     Titel: Re: Eulersches Verfahren plotten
  Antworten mit Zitat      
Jay91 hat Folgendes geschrieben:
Ich hab ein Problem und izwar, habe ich de unten stehenden Code geschrieben, kann aber aber leider keine zeichnerische Darstellung ausgeben lassen. Kann mir bitte einer behilflich sein?
Sorry dass, es so unübersichtilich ist.
Die Funktion soll im Beriech -1.5 bis 1.5 ausgegeben werden.
MfG
Code:
function [x,y] = euler_dgl1 (x_0, y_0, h, N)
%Startwert setzen
%x_0 = -1.5;
%Intervall setzen
%h = 0.6;
%Schrittzahl setzen
%N = 5;
%Startwert y0 setzen
%y_0 = 0;
%definiere Funktion
dy = @(x,y) x^2+0.1*y;
%setze x = x_0
x = x_0;
%setze y = y_0
y = y_0;
for N = x_0 : h : x_0 + h * N;
    fprintf ('Koordinate x: %f\t\t', x);
    fprintf ('Koordinate y: %f\n', y);
    delta_y = h * dy(x,y);
    y = y + delta_y;
    x = x + h;  
plot (x,y);
end
 


Den code habe ich doch schon in die Frage selbst gepostet...
 
Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.07.2015, 09:47     Titel:
  Antworten mit Zitat      
Gemeint ist wohl der Code, von dem Du behauptest, dass er nicht das tut, was er soll. Den hast Du nämlich nicht veröffentlicht. Allerdings kann ich in Deinem Code (der ja überhaupt nicht der gleiche ist, wie der, den Du ganz oben gepostet hast) nicht entdecken, dass Du Winkows Vorschlag mit plot und hold ausprobiert hast. Mach das doch mal.

Wenn es nicht funktioniert, postest Du den Code, mit dem Du plottest und eine Beschreibung, was Du erwarten würdest und eine Beschreibung, was Dir der Code liefert. Falls es Fehlermeldungen gibt, sind die auch meistens sehr hilfreich.
Private Nachricht senden Benutzer-Profile anzeigen
 
jay91

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.07.2015, 10:12     Titel:
  Antworten mit Zitat      
Code:
function [x,y] = euler_dgl1 (x_0, y_0, h, N);
%Startwert setzen
%x_0 = -1.5;
%Intervall setzen
%h = 0.6;
%Schrittzahl setzen
%N = 5;
%Startwert y0 setzen
%y_0 = 0;
%definiere Funktion
dy = @(x,y) x^2+0.1*y;
%setze x = x_0
x = x_0;
%setze y = y_0
y = y_0;
for n = x : h : x + h * N;
    fprintf ('Koordinate x: %f\t\t', x);
    fprintf ('Koordinate y: %f\n', y);
    x = x + h;
    delta_y = h * dy(x,y);
    y = y + delta_y;
    hold;
    plot(x,y);
end
 


Ausgabe:
>> [x,y]=euler_dgl1(-1.5,0,0.6,5)
Koordinate x: -1.500000 Koordinate y: 0.000000
Current plot held
Koordinate x: -0.900000 Koordinate y: 0.486000
Current plot released
Koordinate x: -0.300000 Koordinate y: 0.569160
Current plot held
Koordinate x: 0.300000 Koordinate y: 0.657310
Current plot released
Koordinate x: 0.900000 Koordinate y: 1.182748
Current plot held
Koordinate x: 1.500000 Koordinate y: 2.603713
Current plot released

x =

2.1000


y =

5.4059

Mein Problem:
1. Ich will nur die Werte von x=-1.5 bis x=1.5 ausgegeben bekommen, aber zum schluss bringt er mir immernoch den Wert x=2.1. Ich hab schon einige Varianten ausprobiert aber er gibt entweder 2.1 miot aus oder geht nur bis 0.9...
2. Das Fenster in dem der Graph angezeigt werden soll öffnet sich, aber es wird kein Graph gezeichnet. Und die Koordinatenachsen gehen mal von (x 0-4)(y1-5) oder sonst was.
Eine Fehlermeldung wird mir nicht ausgegeben.
Ich hoffe mal, dass das erstmal genug Infos sind Very Happy.
Schonmal vielen Dank für die bisherigen Hilfsversuche.

untitled.fig
 Beschreibung:

Download
 Dateiname:  untitled.fig
 Dateigröße:  1.58 KB
 Heruntergeladen:  483 mal
 
Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.07.2015, 10:16     Titel:
  Antworten mit Zitat      
Probier es mal mit hold on . Wenn Du nur hold aufrufst, wird immer umgeschalten, ob ein neuer Plot die alten Plots ersetzen soll oder ob der neue Plot zu den bestehenden hinzugefügt werden soll.
Private Nachricht senden Benutzer-Profile anzeigen
 
jay91

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.07.2015, 10:25     Titel:
  Antworten mit Zitat      
Ok... Jetzt zeichnet er die Punkte, verbindet diese aber nicht. Und das Problem mit der x=2.1 hab ich auch noch
 
jay91

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.07.2015, 12:58     Titel:
  Antworten mit Zitat      
Ich hab es auch schon mit
Code:
probiert aber irgendwie verbindet er mir die Punkte nicht.
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 17.07.2015, 13:18     Titel:
  Antworten mit Zitat      
das liegt daran das du immer einen neuen plot errstellst und nicht den anderen erweiterst. du mist die XData und YData eigenschaften des plots verändern wenn du die linien verbinden willst oder halt wie ich gesagt hab alles speichern und dann am ende zusammen plotten.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.07.2015, 13:21     Titel:
  Antworten mit Zitat      
Kleiner Tipp:

Code:

for idx = 1:100
    x(idx) = idx;
    y(idx) = idx^2;
end
plot(x, y)
 
Private Nachricht senden Benutzer-Profile anzeigen
 
jay91

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.07.2015, 13:42     Titel:
  Antworten mit Zitat      
Alles klar. Ich komm zwar jetzt noch nicht drauf wie ich die Werte alle speichern kann aber vielleicht komm ich ja noch drauf. Vielen Dank für die Hilfe! Smile
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

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.