Question:
Consider the initial value problem: dy/dt= e−t − 3y, y(−1) = 0.
Part a: Use the MATLAB program myeuler.m from Chapter 8 to compute the Euler Method approximation to y(t) with step size h = 0.5 and n = 4 steps. The program will generate a list of ordered pairs (ti, yi). Use plot to graph the piecewise linear function connecting the points (ti, yi). Repeat with h = 0.2 and n = 10.
Code:
f = @(t,y) exp(-t)-3*y;
[t, y] = myeuler(f,-1,0,1,4);
plot(t,y)
[t, y] = myeuler(f,-1,0,1,10)
plot(t,y)

댓글 수: 5

James Tursa
James Tursa 2015년 10월 7일
You need to show us the myeuler.m code so we know what the arguments are supposed to be.
Bob
Bob 2015년 10월 12일
편집: Walter Roberson 2015년 10월 12일
Here:
function [t, y] = myeuler(f, tinit, yinit, b, n)
%MYEULER Euler approximation for initial value problem,
% dy/dt = f(t, y), y(tinit) = yinit.
% Approximations y(1),..., y(n + 1) are calculated at
% the n + 1 points t(1),..., t(n + 1) in the interval
% [tinit, b]. The right-hand side of the differential
% equation is defined as an anonymous function f.
% Calculation of h from tinit, b, and n.
h = (b - tinit)/n;
% Initialize t and y as length n + 1 column vectors.
t = zeros(n + 1, 1);
y = zeros(n + 1, 1);
% Calculation of points t(i) and the corresponding
% approximate values y(i) from the Euler Method formula.
t(1) = tinit;
y(1) = yinit;
for i = 1:n
t(i + 1) = t(i) + h;
y(i + 1) = y(i) + h*f(t(i), y(i));
end
Walter Roberson
Walter Roberson 2015년 10월 12일
Bob
Bob 2015년 10월 13일
I keep getting an error:
Error in Project_2 (line 94) [t, y] = myeuler(f,-1,0,1,4);
Bob
Bob 2015년 10월 13일
Need help with this asap!
Thanks

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

 채택된 답변

Walter Roberson
Walter Roberson 2015년 10월 13일

0 개 추천

Your code executes without error when I try it without change.
Make sure that the code you posted for myeuler is saved in myeuler.m and that the directory it is saved in is on your MATLAB path (for example if you are cd'd to the same directory)

댓글 수: 5

Bob
Bob 2015년 10월 13일
편집: Bob 2015년 10월 13일
Could you please post a screenshot to how you are ruining the code because I am still getting an error for this code:
f = @(t,y) exp(-t)-3*y;
[t, y] = myeuler(f,-1,0,1,4);
plot(t,y)
[t, y] = myeuler(f,-1,0,1,10)
plot(t,y)
or past the code that you entered.
>> f = @(t,y) exp(-t)-3*y;
[t, y] = myeuler(f,-1,0,1,4);
plot(t,y)
[t, y] = myeuler(f,-1,0,1,10)
plot(t,y)
t =
-1
-0.8
-0.6
-0.4
-0.2
-5.55111512312578e-17
0.2
0.4
0.6
0.8
1
y =
0
0.543656365691809
0.662570731975217
0.629452052868189
0.55014576067553
0.464338855902246
0.385735542360898
0.318040367559956
0.26128015623111
0.214274389711249
0.175575548707944
>> dbtype myeuler.m
1 function [t, y] = myeuler(f, tinit, yinit, b, n)
2
3 %MYEULER Euler approximation for initial value problem,
4
5 % dy/dt = f(t, y), y(tinit) = yinit.
6
7 % Approximations y(1),..., y(n + 1) are calculated at
8
9 % the n + 1 points t(1),..., t(n + 1) in the interval
10
11 % [tinit, b]. The right-hand side of the differential
12
13 % equation is defined as an anonymous function f.
14
15 % Calculation of h from tinit, b, and n.
16
17 h = (b - tinit)/n;
18
19 % Initialize t and y as length n + 1 column vectors.
20
21 t = zeros(n + 1, 1);
22
23 y = zeros(n + 1, 1);
24
25 % Calculation of points t(i) and the corresponding
26
27 % approximate values y(i) from the Euler Method formula.
28
29 t(1) = tinit;
30
31 y(1) = yinit;
32
33 for i = 1:n
34
35 t(i + 1) = t(i) + h;
36
37 y(i + 1) = y(i) + h*f(t(i), y(i));
38
39 end
Walter Roberson
Walter Roberson 2015년 10월 13일
편집: Walter Roberson 2015년 10월 13일
Literally no changes to your code. Note even deleting extra spaces.
You need to post the exact error message -- everything that shows up in red. And check
which -all myeuler
Bob
Bob 2015년 10월 13일
편집: Bob 2015년 10월 13일
Now I am getting this:
Maximum recursion limit of 500 reached. Use set(0,'RecursionLimit',N) to change the limit. Be aware that exceeding your available stack space can crash MATLAB and/or your computer.
Bob
Bob 2015년 10월 13일
편집: Bob 2015년 10월 13일
What is which -all myeuler? Should I have that somewhere in the code?

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

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Programming에 대해 자세히 알아보기

질문:

Bob
2015년 10월 7일

편집:

Bob
2015년 10월 13일

Community Treasure Hunt

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

Start Hunting!

Translated by