How can I solve this BVP problem which is second-order ODE with variable coefficient?
13 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Sohrab Askarli
am 29 Nov. 2020
Kommentiert: Sohrab Askarli
am 30 Nov. 2020
Hi there,
I have some problems regarding solving this problem on MATLAB:
y'' + [(1-10x^2)/x]*y' = 0
BC: y(0) = 1, y(1) = 0
Thanks in advance.
2 Kommentare
Akzeptierte Antwort
Stephan
am 30 Nov. 2020
Bearbeitet: Stephan
am 30 Nov. 2020
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:

Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Ordinary Differential Equations finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!