Solve second order differential equation with independent variable

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

Post the code for your function? Also what are the initial values for Y and Y'
I just know one condition here, i.e When x is 'R', y id 's0'. Here R,s0 are constants.

Sign in to comment.

Answers (1)

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

This works but I have a doubt.
The only condition to be followed here is that, when x=R, y=s0.
Both R and s0 are constants predefined.
So how do I incorporate this condition into the program above.
Your differential equation contains two states y and dy, you have to set their initial conditions
Alright. Tell me one thing, is it that 'tspan' is supposed to incorporate the variation of the values of 'x' ? I understood the values 'y' is storing but what about 'x' and 'tspan' ?
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

Sign in to comment.

Asked:

on 28 Jan 2014

Commented:

on 28 Jan 2014

Community Treasure Hunt

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

Start Hunting!