Solving second order ODE with ode45

Hey there, I'm trying to solve this ODE: y''=(x*y' - (x^2-n^2)*(1/x) (while n is a global variable and y(0.5)=1, y'(0.5)=1) using this code:
function [x,y] = solve(n)
global n_global;
n_global=n;
syms y(x);
[x, Y]= ode45(@odefun, [0.5, 10], [1 1]);
figure;
plot(x,Y);
function dy_dx = odefun(x,y)
global n_global;
dy_dx=zeros(2,1);
dy_dx(1)=y(2);
dy_dx(2)=(1/x)*(x*y(2)-(x^2-n^2));
and something does not working right, can someone help me out here?

 Accepted Answer

Since you start at x=0, you divide by zero in the line
dy_le_dx(2)=(1/x)*(x*y(2)-(x^2-n^2));
Best wishes
Torsten.

5 Comments

Ran Cohen
Ran Cohen on 5 Jan 2018
Edited: Ran Cohen on 5 Jan 2018
Sorry - x starts at 0.5. I've edit it.
And what is the problem ?
"something does not working right" is quite vague.
Best wishes
Torsten.
Ran Cohen
Ran Cohen on 5 Jan 2018
Edited: Ran Cohen on 5 Jan 2018
those are the errors that I get:
Undefined function or variable 'n'.
Error in solve>odefun (line 15) dy_dx(2)=(1/x)*(x*y(2)-(x^2-n^2));
Error in odearguments (line 90) f0 = feval(ode,t0,y0,args{:}); % ODE15I sets args{1} to yp0.
Error in ode45 (line 115) odearguments(FcnHandlesUsed, solver_name, ode, tspan, y0, options, varargin);
Error in solve (line 5) [x, Y]= ode45(@odefun, [0.5, 10], [1 1]);
dy_dx(2)=(1/x)*(x*y(2)-(x^2-n_global^2));
Best wishes
Torsten.
Thanks mate!

Sign in to comment.

More Answers (0)

Tags

Asked:

on 5 Jan 2018

Commented:

on 5 Jan 2018

Community Treasure Hunt

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

Start Hunting!