Effacer les filtres
Effacer les filtres

Finding Intersection Points between 3rd Order ODE and a line

1 vue (au cours des 30 derniers jours)
Izu
Izu le 7 Fév 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)

Réponse acceptée

Andrew Newell
Andrew Newell le 7 Fév 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 commentaires
Izu
Izu le 8 Fév 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 le 8 Fév 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.

Connectez-vous pour commenter.

Plus de réponses (0)

Community Treasure Hunt

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

Start Hunting!

Translated by