# Obične diferencijalne jednadžbe

Najjednostavnija diferencijalna jednadžba: traži se funkcija y kojoj je zadana derivacija y'=f(x).

ode2('diff(y,x)=f(x),y,x);

Još jedan jednostavni primjer: traži se funkcija y koja je jednaka svojoj derivaciji y'=y.

ode2('diff(y,x)=y,y,x);

Opći oblik diferencijalne jednadžbe prvog reda: y'=R(x,y). U prvom primjeru je R(x,y)=f(x), a u drugom primjeru je R(x,y)=y. Kompliciraniji primjer: R(x,y)=sin(x)*y^2.

ode2('diff(y,x)=sin(x)*y^2,y,x);

solve(%,y);

Treći primjer je takozvana Riccatijeva diferencijalna jednadžba: R(x,y)=x^2-y^2.

ode2('diff(y,x)=x^2-y^2,y,x);

Graf funkcije dvije varijable je ploha u prostoru.

plot3d(y,[x,-5,5],[y,-5,5])$

plot3d(sin(x)*y^2,[x,-5,5],[y,-5,5])$

plot3d(x^2-y^2,[x,-5,5],[y,-5,5])$

Geometrijska interpretacija diferencijalne jednadžbe prvog reda: integralne krivulje u polju smjerova.

plotdf(y,[x,-5,5],[y,-5,5],[trajectory_at,0,1])$

plotdf(sin(x)*y^2,[x,-5,5],[y,-5,5],[trajectory_at,0,0.4])$

plotdf(x^2-y^2,[x,-5,5],[y,-5,5],[trajectory_at,0,0])$

load(drawdf);

drawdf(y,[x,-5,5],[y,-5,5],[trajectory_at,0,1])$

drawdf(x^2-y^2,[x,-5,5],[y,-5,5],[trajectory_at,0,0])$

drawdf(sin(x)*y^2,[x,-5,5],[y,-5,5],[trajectory_at,0,0.4])$

Numeričko rješavanje diferencijalnih jednadžbi:

rj: rk(x^2-y^2,y,-1,[x,-2,2,0.5]);

wxplot2d([discrete,rj]);

drawdf(x^2-y^2,[x,-2,2],[y,-1.5,2],[trajectory_at,-2,-1],color=blue,
  point_size=0.5, point_type=filled_circle,points(rj))$

rj: rk(x^2-y^2,y,-1,[x,-2,2,0.1])$
wxplot2d([discrete,rj]);

load(rkf45);

rj: rkf45(x^2-y^2,y,-1,[x,-2,2])$
wxplot2d([discrete,rj]);

Još neke diferencijalne jednadžbe koje ne možemo riješiti egzaktno:

ode2('diff(y,x)=y*sin(x+y),y,x);

rj: rkf45(y*sin(x+y),y,1,[x,0,20],report=true)$
wxplot2d([discrete,rj]);

ode2('diff(y,x)=x^2*sin(x^2+y^2),y,x);

rj: rkf45(x^2*sin(x^2+y^2),y,1,[x,0,20],report=true)$
wxplot2d([discrete,rj]);