Taylor and Euler Matlab Comparison for Numerical Analysis.

Click For Summary

Homework Help Overview

The problem involves solving the differential equation y' = 3t^2y^2 on the interval [0, 3] with the initial condition y(0) = -1. The original poster is attempting to implement both the Euler method and a third-order Taylor method in MATLAB and compare the numerical solutions to the exact solution y(t) = -1/(t^3 + 1).

Discussion Character

  • Exploratory, Problem interpretation, Assumption checking

Approaches and Questions Raised

  • The original poster shares their MATLAB code for both methods and expresses uncertainty about the correctness of their implementation. They seek assistance in identifying potential issues with their code.

Discussion Status

Participants are actively discussing the problems encountered in the original poster's code. Some have pointed out specific errors, such as the function signature for Euler2 and the handling of output arguments. There is an ongoing exploration of the code's structure and its implications for the results.

Contextual Notes

Participants note that the original poster's code may not align with standard practices for function definitions in MATLAB, which could lead to errors. There is a suggestion to clarify the expected outputs of the functions used.

acampbell
Messages
3
Reaction score
0
1. Solve y'=3t^2y^2 on [0, 3] , y0 = −1, using Euler method and Taylor method of
order 3. Compare your solutions to the exact solution. y(t)=(-1/((t^3)+1))


I DONT KNOW WHAT IS WRONG WITH MY PROGRAM! PLEASE HELP =D

Homework Equations



http://en.wikipedia.org/wiki/Euler_method
http://math.fullerton.edu/mathews/n2003/TaylorDEMod.html

The Attempt at a Solution


function Euler2(a,b,h,y0)
t0=a;
t(1)=t0;
y(1)=y0;
N=(b-a)/h;

for i=1:N
y(i+1)=y(i)+h*(func(t(i),y(i)));
t(i+1)=t(i)+h;
end
-----------------------------------------
function deriv=func(t,y)
deriv=3*t^2*y^2;
-----------------------------------------
function w=Taylor1(a,b,h)
t0=a;
y0=1;
t(1)=t0;
y(1)=y0;
N=(b-a)/h;
w(1)=1;

%2nd Order Taylor Method%
for i=2:N+1
w(i)= w(i-1)+h*(1-h+(h^2)/2);
t(i)= a+i*h;
end

%3rd Order Taylor Method%
for i=2:N+1
w(i)= w(i-1)*(1-h+(h^2)/2-(h^3)/6);
t(i)= a+i*h;
end
------------------------------------------------
a=0;
b=3;
y0=-1;
h=0.1;
t=a:h:b;

w1=Euler2(a,b,h);
w2=Taylor2(a,b,h);

plot(t,w1,'r')
hold on
plot(t,w2,'b')
hold on
plot(t,-1/(t^3+1),'g')
--------------------------------------
 
Last edited by a moderator:
Physics news on Phys.org
acampbell said:
1. Solve y'=3t^2y^2 on [0, 3] , y0 = −1, using Euler method and Taylor method of
order 3. Compare your solutions to the exact solution. y(t)=(-1/((t^3)+1))


I DONT KNOW WHAT IS WRONG WITH MY PROGRAM! PLEASE HELP =D

Homework Equations



http://en.wikipedia.org/wiki/Euler_method
http://math.fullerton.edu/mathews/n2003/TaylorDEMod.html

The Attempt at a Solution


function Euler2(a,b,h,y0)
t0=a;
t(1)=t0;
y(1)=y0;
N=(b-a)/h;

for i=1:N
y(i+1)=y(i)+h*(func(t(i),y(i)));
t(i+1)=t(i)+h;
end
-----------------------------------------
function deriv=func(t,y)
deriv=3*t^2*y^2;
-----------------------------------------
function w=Taylor1(a,b,h)
t0=a;
y0=1;
t(1)=t0;
y(1)=y0;
N=(b-a)/h;
w(1)=1;

%2nd Order Taylor Method%
for i=2:N+1
w(i)= w(i-1)+h*(1-h+(h^2)/2);
t(i)= a+i*h;
end

%3rd Order Taylor Method%
for i=2:N+1
w(i)= w(i-1)*(1-h+(h^2)/2-(h^3)/6);
t(i)= a+i*h;
end
------------------------------------------------
a=0;
b=3;
y0=-1;
h=0.1;
t=a:h:b;

w1=Euler2(a,b,h);
w2=Taylor2(a,b,h);

plot(t,w1,'r')
hold on
plot(t,w2,'b')
hold on
plot(t,-1/(t^3+1),'g')
--------------------------------------

Help us out a bit. Why do you think there is something wrong with your code?
 
Last edited by a moderator:
i feel like something is wrong with my Euler and Taylor codes but I'm not so sure.
 
"Feeling" is not helpful. Does your code produce an incorrect result?
 
? Error using ==> Euler2
Too many output arguments.

Error in ==> Problem3_Homework3 at 7
w1=Euler2(a,b,h);


THAT IS WHAT I GET!
 
Umm, just looking at your euler's I can tell you either didn't give us the right code or it's wrong (or terrible coding practice). You have a t(1)=t0; definition, but t0 is not an input to your function. Other than that, it looks fine. I don't really want to look at the Taylor without in an indication of whether it's wrong or not.

The two methods should be pretty close to the exact solution.

Edit: my bad, didn't see that you made a = t0, but still, why the extra step?
 
Your function call should really look like

function y = Euler2(a,b,h,y0)

Maybe you should make it look just like the ode45 would take
function [t y]=euler(odefun,tvalues,y0,h);
 
Last edited:

Similar threads

  • · Replies 10 ·
Replies
10
Views
2K
  • · Replies 6 ·
Replies
6
Views
2K
  • · Replies 3 ·
Replies
3
Views
2K
Replies
2
Views
2K
  • · Replies 9 ·
Replies
9
Views
3K
  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 2 ·
Replies
2
Views
1K
Replies
2
Views
2K
  • · Replies 18 ·
Replies
18
Views
3K
  • · Replies 2 ·
Replies
2
Views
1K