필터 지우기
필터 지우기

What is the error here? Euler Method for 2nd order equations?

조회 수: 1 (최근 30일)
Kaylene Widdoes
Kaylene Widdoes 2016년 2월 17일
댓글: Torsten 2016년 2월 18일
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
Walter Roberson
Walter Roberson 2016년 2월 17일
Are you encountering an error message? What do you observe that leads you to be suspicious of the code?

댓글을 달려면 로그인하십시오.

채택된 답변

Torsten
Torsten 2016년 2월 17일
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
Kaylene Widdoes
Kaylene Widdoes 2016년 2월 17일
So if I want to run the same code for (x^3)y' + 20(x^2)y = x, would I solve for dy/dx and then plug that equation in?
Torsten
Torsten 2016년 2월 18일
Yes.
f = @(t,y) (t-20*t^2*y)/t^3;
Best wishes
Torsten.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Least Squares에 대해 자세히 알아보기

태그

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by