How Can You Use the Euler Method in MATLAB to Solve y'=x^2-y^2?

Click For Summary
SUMMARY

The discussion focuses on using the Euler method in MATLAB to solve the differential equation y' = x^2 - y^2 with the initial condition y(0) = 1. The provided MATLAB code initializes a vector y of zeros with the same length as the vector x, sets the first element of y to 1, and iteratively computes the values of y using the Euler method. The user also seeks assistance in adapting the Euler method for a second-order differential equation and incorporating a variable n, encountering a 'matrix must be squared' error during implementation.

PREREQUISITES
  • Understanding of differential equations, specifically first and second order
  • Familiarity with MATLAB programming and syntax
  • Knowledge of numerical methods, particularly the Euler method
  • Experience with function handles and vector operations in MATLAB
NEXT STEPS
  • Learn how to implement the Euler method for second-order differential equations in MATLAB
  • Research MATLAB's function handles and how to use them with the feval function
  • Explore error handling in MATLAB to troubleshoot matrix dimension issues
  • Investigate numerical methods for solving differential equations with variable parameters
USEFUL FOR

Mathematics students, MATLAB programmers, and engineers working on numerical solutions for differential equations.

Void123
Messages
138
Reaction score
0
I'm looking at the following example (http://www.cyclismo.org/tutorial/matlab/control.html):

y'=x^2-y^2, y(0)=1, where they use the Euler method to approximate numerical solutions.

This is the code:

>> h = 0.1;
>> x = [0:h:2];
>> y = 0*x;
>> y(1) = 1;
>> size(x)

ans =

1 21

>> for i=2:21,
y(i) = y(i-1) + h*(x(i-1)^2 - y(i-1)^2);
end
>> plot(x,y)
>> plot(x,y,'go')
>> plot(x,y,'go',x,y)

I don't understand the third and fourth line at the top. What is [tex]y = 0*x[/tex] and how did they get y(1) = 1...?

Thanks.
 
Last edited:
Physics news on Phys.org
You want to make sure that the size of the 'y' vector is the same as the size of the domain vector x so you can plot one against the other one.. So they start with y=0*x which should make y a vector of all zeroes that is the same length as x. Setting y(1)=1 means that the first entry of y will be 1. This is the same thing as saying that y, at the value of x that is the first one recorded in the domain vector, should be 1 (so all they've done is chosen an initial condition)
 
Ok. I want to put [tex]y''(x) + \left(\frac{2}{x}\right) y'(x) + y^n = 0[/tex]

into the following template:

Code:
function[y,t] = euler(fun,y0,t0,T,h)
% [y,t] = euler(fun,y0,t0,T,h) -
%
% This function computes the solution to the IVP y'(t) = fun(y,t),
% y(t0)= y0 , for a given function "fun(t,y)" using Euler's method.
%
% The function is defined either via an m-file fun.m, or using the
% "inline" command. y0 is the initial value, T is the maximum time, h
% is the stepsize and t0=initial time.
%
% The output is a vector containing the approximate solution y_euler.
%
y(1) = y0;
t(1) = t0;
for i=1:T/h
y(i+1) = y(i) + h*feval(fun,t(i),y(i));
t(i+1) = t(i) + h;
end;
t=t’;
y=y’;
% End of m-file euler.m
end

There are a few difficulties. First, I am working with a second order differential equation. Secondly, I am interested in a continuous range of solutions for [tex]n[/tex]. For certain values of n, I have a transformation method that simplifies my equation by eliminating the y'(x). But, the main problem I'm dealing with is coding the "n" part. Whenever I try, an error message in the command box comes up that says 'matrix must be squared' and I don't know what this means.

I would appreciate any help.

Thanks.
 

Similar threads

  • · Replies 4 ·
Replies
4
Views
2K
  • · Replies 8 ·
Replies
8
Views
3K
  • · Replies 5 ·
Replies
5
Views
3K
  • · Replies 5 ·
Replies
5
Views
4K
  • · Replies 11 ·
Replies
11
Views
3K
  • · Replies 4 ·
Replies
4
Views
2K
  • · Replies 5 ·
Replies
5
Views
3K
  • · Replies 2 ·
Replies
2
Views
3K
  • · Replies 2 ·
Replies
2
Views
4K
  • · Replies 4 ·
Replies
4
Views
3K