What is the error here? Euler Method for 2nd order equations?
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
I have the following files and script file, but the graph is definitely wrong for the approximations. Any ideas?
Code:
clear all
% define the problem: function f and domain
f = @(t,y) (0*t+3*y);
a = 0; b = 1;
% exact solution, using a fine grid
t = a:.0001:b;
y = exp(3*t); % this is a vector of values, not a function
% coarse solution
h = .25;
ya = 1;
[T1,Y1]=euler(f,a,b,ya,h);
% fine solution
h = .05;
ya = 1;
[T2,Y2]=euler(f,a,b,ya,h);
% finer solution
h = .01;
ya = 1;
[T3,Y3]=euler(f,a,b,ya,h);
plot(t,y,'k',T1,Y1,'bo-',T2,Y2,'ro-',T3,Y3,'go-')
legend('Exact','h=0.25','h=0.05','h=0.01')
title('The Euler Method with 3 meshes')
Script File:
function[T,Y] = euler(f,a,b,ya,h)
a = 0; b = 1;
T = a:h:b;
Y = zeros(1,length(T));
Y(1) = a;
for k = 1 : length(T)-1
Y(k+1) = Y(k) + h*f(T(k),Y(k));
end
1 Commento
Walter Roberson
il 17 Feb 2016
Are you encountering an error message? What do you observe that leads you to be suspicious of the code?
Risposta accettata
Torsten
il 17 Feb 2016
function[T,Y] = euler(f,a,b,ya,h)
a = 0; b = 1;
T = a:h:b;
Y = zeros(1,length(T));
*Y(1) = ya;*
for k = 1 : length(T)-1
Y(k+1) = Y(k) + h*f(T(k),Y(k));
end
Best wishes
Torsten.
2 Commenti
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Least Squares in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!