Your function handle appears to be incorrect:
syms y(x)
eq = diff(y,x,2) + ((1-10*x^2)/x)*diff(y,x,1) == 0;
[V,S] = odeToVectorField(eq);
fun = matlabFunction(V,'Vars',{'x','Y'})
gives:
fun =
function_handle with value:
@(x,Y)[Y(2);((x.^2.*1.0e+1-1.0).*Y(2))./x]
additionally your function gets singular at x=0, to avoid this:
fun = @(x,Y)[Y(2);((x.^2.*1.0e+1-1.0).*Y(2))./x];
bc = @(ya, yb) [ya(1) - 1; yb(1)];
xmesh = linspace(1e-4, 1, 100);
solinit = bvpinit(xmesh, [1 0]);
sol = bvp4c(fun, bc, solinit);
figure;
yyaxis left
plot(sol.x, sol.y(1,:),'LineWidth',2)
yyaxis right
semilogy(sol.x, sol.y(2,:),'LineWidth',2)
Note that the right axis is log scaled:
Best Answer