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

 

Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.07.2015, 13:44     Titel:
  Antworten mit Zitat      
Dann denk mal mein Beispiel Zeile für Zeile durch - das soll nämlich genau das zeigen :)
Private Nachricht senden Benutzer-Profile anzeigen


jay91

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.07.2015, 13:48     Titel:
  Antworten mit Zitat      
Bin ich grad dabei aber, da wird mir immer wieder der Fehler angezeigt:
Attempted to access x(-1.5); index must be a positive integer or logical.

Error in euler_dgl1 (line 14)
x(n) = n + h;
 
Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.07.2015, 13:50     Titel:
  Antworten mit Zitat      
Ja, weil Dein Zähler der Schleife nicht einfach in ganzzahligen Schritten von 1 hochzählt, sondern mit einer Schrittweite von h die x-koordinate durchfährt.

Entweder führst Du einen neuen Zähler ein, der zu Beginn 1 ist und nach jedem Durchlauf um 1 erhöht wird, oder Du veränderst die Definition der Schleife so, dass Deine Variable n in Ganzzahlschritten von 1 ab hochzählt.
Private Nachricht senden Benutzer-Profile anzeigen
 
jay91

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.07.2015, 14:05     Titel:
  Antworten mit Zitat      
Ich glaub ich werde da niemals durchsteigen... Trotzdem nochmal Danke für die Hilfe!
 
jay91

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.07.2015, 14:10     Titel:
  Antworten mit Zitat      
Das Problem an der Geschichte ist, dass die Schrittweite laut aufgabestellung 0.6 betragen soll und auf Wunsch auch variabel änderbar. Aber wie ist das gemeint noch ne variable einbauen die bei 1 Anfängt? In 2 Schleifen dann? eine die von 1 - 5 zählt und die andere dann mit schittweite 0.6 das Eulerverfahren?
 
Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.07.2015, 14:29     Titel:
  Antworten mit Zitat      
Ne, einfach eine neue Variable definieren, die Du in deiner Schleife immer um eins hoch zählst. Im ersten Durchlauf hat sie den Wert 1, im zweiten Durchlauf den Wert 2, ...

Wenn man ein mal hinter die Geschichte mit den Vektoren gekommen ist, geht alles ganz einfach :)
Private Nachricht senden Benutzer-Profile anzeigen
 
jay91

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.07.2015, 14:44     Titel:
  Antworten mit Zitat      
Code:
%Funktion definieren
function [x,y] = euler_dgl1 (x_0, y_0, h, N)
%setze x = x_0
x = x_0;
%setze y = y_0
y = y_0;
m = 1;
%Schleife von Startwert X_0, Schrittweite h, Endwert X_0+(h*N)
for n = x_0: h : x_0 + h * N
%for  -1.5 : 0.6 : 1.5
    %Ausgabe der Werte von x und y
    fprintf ('Koordinate x: %f\t\t', x);
    fprintf ('Koordinate y: %f\n', y);
    %Überschreiben der Werte von x und y mit den neuen errechneten Werten
    m = m + 1;
    y(m) = y + h * (x^2+0.1*y);
    x(m) = x + h;    
end
%Schleifenende
 


Vielleicht bin ich zu blöd um des zu raffen, aber so funktioniert es immer noch nicht... :/
 
Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.07.2015, 14:48     Titel:
  Antworten mit Zitat      
Es wird einfacher (und richtiger :)), wenn Du die Summation nicht direkt auf den Ausgabevektoren machst, sondern eine neue Variable für die Ausgabe definierst:

Code:

for idx = 1:100
    x = idx + x;
    y = x^2;

    x_out(idx) = x;
    y_out(idx) = y;
end
plot(x_out, y_out)
 
Private Nachricht senden Benutzer-Profile anzeigen
 
jay91

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.07.2015, 15:00     Titel:
  Antworten mit Zitat      
Juhu!! Es hat geklappt. Besten Dank nochmal Very Happy
 
Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.07.2015, 15:03     Titel:
  Antworten mit Zitat      
Am besten guckst Du jetzt noch die Stellen an, die Matlab rot unterringelt und versuchst zu verstehen, was da steht. Muss aber nicht sein, wenn Du kein Problem mit der Geschwindigkeit hast.
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite Zurück  1, 2

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.