Filter löschen
Filter löschen

Finding Intersection Points between 3rd Order ODE and a line

1 Ansicht (letzte 30 Tage)
Izu
Izu am 7 Feb. 2011
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)

Akzeptierte Antwort

Andrew Newell
Andrew Newell am 7 Feb. 2011
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.
  2 Kommentare
Izu
Izu am 8 Feb. 2011
Uh... sorry... I don't get it... Let's try for a simple function: t = 0:.3:10;
y = sin(t); How will we find the intersections with y=x?
Andrew Newell
Andrew Newell am 8 Feb. 2011
I have added some more explanation above. Please note that your simple function is actually sin; the argument t is just the name you choose for the input and the specific values t=0:.3:10 are just a set of numbers you could calculate the sine of. It would be the same to calculate y=sin(x) for x=0:.3:10. To solve sin(x)=x, define f(x) = sin(x)-x and find the zero.
If, on the other hand, you are really trying to solve sin(t)=x, the question is meaningless.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Community Treasure Hunt

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

Start Hunting!

Translated by