MATLAB: Finding Intersection Points between 3rd Order ODE and a line

interserction pointsodethird order

How can I find the intersection points between the solution of a 3rd order ODE and a line y=x?
My ODE's code is
sol=dsolve('D3y-4*D2y+Dy+2*y=0,y(0)=-4,Dy(0)=-6,D2y(0)=-4')
x=0:2
y=subs(sol,'t',x)
plot(x,y)

Best Answer

The solution of this equation is a symbolic function sol(t):
sol=dsolve('D3y-4*D2y+Dy+2*y=0,y(0)=-4,Dy(0)=-6,D2y(0)=-4');
sol(t)=t is the same as sol(t)-t = 0:
syms t
functionToBeZeroed = sol - t;
Turn this into a numerical function f(x):
f = matlabFunction(functionToBeZeroed);
You can calculate f(x) for any value of x. A plot shows that the curve crosses zero near about x=1.6.
x = 0:.01:2;
plot(x,f(x))
So use fzero to find the solution of sol(x)=x with an initial guess of x=1.6:
fzero(f,1.6)
EDIT: This answer has been revised to expand the explanatory text.
Related Question