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?

 Akzeptierte Antwort

Torsten
Torsten am 5 Jan. 2018

0 Stimmen

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 Kommentare

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

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by