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?

 Réponse acceptée

Torsten
Torsten le 5 Jan 2018
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 commentaires

Ran Cohen
Ran Cohen le 5 Jan 2018
Modifié(e) : Ran Cohen le 5 Jan 2018
Sorry - x starts at 0.5. I've edit it.
Torsten
Torsten le 5 Jan 2018
And what is the problem ?
"something does not working right" is quite vague.
Best wishes
Torsten.
Ran Cohen
Ran Cohen le 5 Jan 2018
Modifié(e) : Ran Cohen le 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.
Ran Cohen
Ran Cohen le 5 Jan 2018
Thanks mate!

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Programming dans Centre d'aide et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by