Solve second order differential equation with independent variable
Show older comments
I need the solution to the following second order differential equation:
D2y+(2/x)*Dy= 10*(y/(1+y));
I want to use ode45 for this. I have split the equation in the following manner :
%y(1)=y(x);
%y(2)=Y'(x);
So the equation can be written as :
y'(1)=y(2);
y'(2)=10*(Y(1)/(1+(y(1)))-(2/x)*Y(2);
When I solve this usind ode45, I get a matrix comprising of Nan values.
I believe the variation of the independent variable, i.e x, cannot be done like this.
I am not sure how to solve this.
Any help would be appreciated. Thanks! :)
2 Comments
Amit
on 28 Jan 2014
Post the code for your function? Also what are the initial values for Y and Y'
Abhivyakti
on 28 Jan 2014
Answers (1)
Azzi Abdelmalek
on 28 Jan 2014
Edited: Azzi Abdelmalek
on 28 Jan 2014
Your function should be:
function dz=myode45(x,z)
dz(1,1)=z(2)
dz(2,1)=-2*z(2)/x+10*z(1)/(z(1)+1)
%Call myode45
tspan=[0.1 10];
% don't start tspan at 0, because in your equation there is -2z(2)/x
y0=[0;1]; % initial conditions
[x,y]=ode45('myode45',tspan,y0)
4 Comments
Abhivyakti
on 28 Jan 2014
Azzi Abdelmalek
on 28 Jan 2014
Your differential equation contains two states y and dy, you have to set their initial conditions
Abhivyakti
on 28 Jan 2014
Azzi Abdelmalek
on 28 Jan 2014
tspan=[t0 tf] % t0 is a start time, and tf is a final time
x represent time or whatever you want. It's in your equation
Categories
Find more on Ordinary Differential Equations in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!