Impliciet differentiëren

>    restart:

Z ie: Stewart, § 3.6. We beginnen met het folium van Descartes uit voorbeeld 2:

>    folium:=x^3+y^3=6*x*y;

folium := x^3+y^3 = 6*x*y

Om de grafiek te kunnen plotten maken we gebruik van het commando implicitplot  uit het pakket plots . We laden daarom eerst het pakket plots  (vervang eventueel de dubbele punt door een puntkomma om de inhoud van het pakket te zien):

>    with(plots):

Vervolgens kunnen we gebruikmaken van de commando's uit het pakket plots , waaronder het commando implicitplot  (met behulp van numpoints  kan de kwaliteit van het plaatje worden verhoogd):

>    implicitplot(folium,x=-4..4,y=-4..4,numpoints=10000);

[Maple Plot]

Om nu y'=dy/dx  te kunnen bepalen differentiëren we naar x , waarbij we y  als functie van x  opvatten. Dit kunnen we Maple vertellen door y  expliciet als y(x)  in te voeren:

>    diff(x^3+(y(x))^3=6*x*y(x),x);

3*x^2+3*y(x)^2*diff(y(x),x) = 6*y(x)+6*x*diff(y(x),x)

of zo:

>    diff(subs(y=y(x),folium),x);

3*x^2+3*y(x)^2*diff(y(x),x) = 6*y(x)+6*x*diff(y(x),x)

Hieruit volgt dat y'=(6y-3x^2)/(3y^2-6x)  oftewel: y'=(2y-x^2)/(y^2-2x) . In Maple kan dit echter ook rechtstreeks met het commando implicitdiff :

>    rico:=implicitdiff(folium,y,x);

rico := (x^2-2*y)/(-y^2+2*x)

We vinden nu de richtingscoëfficiënt van de raaklijn in het punt (3,3)  door x=3  en y=3  te substitueren:

>    r:=subs(x=3,y=3,rico);

r := -1

De raaklijn in het punt (3,3)  is dus gelijk aan: y=-(x-3)+3  oftewel y=-x+6 . Deze kan met behulp van het commando plot  worden getekend.

Om nu het folium van Descartes samen met deze raaklijn in één figuur te kunnen tekenen, kunnen we gebruik maken van:

>    implicitplot({folium,y-3=r*(x-3)},x=-4..4,y=-4..4,numpoints=10000);

[Maple Plot]

We kunnen echter ook verschillende soorten plots combineren met behulp van het commando display  (ook onderdeel van het pakket plots ). Daartoe definiëren we eerst de twee plaatjes (waarbij we de uitvoer onderdrukken), waarna we ze in één figuur tonen:

>    P1:=implicitplot(folium,x=-4..4,y=-4..4,numpoints=10000):

>    P2:=plot(3+r*(x-3),x=-4..4,y=-4..4):

>    display(P1,P2);

[Maple Plot]

Vervolgens zoeken we de punten (x,y)  op de grafiek waar de raaklijn horizontaal is. Dit zijn de punten (x,y)  waarvoor dy/dx=0 . Dus:

>    fsolve({rico=0,folium},{x,y});

{x = 2.519842100, y = 3.174802104}

Evenzo voorbeeld 3:

>    C:=sin(x+y)=y^2*cos(x);

C := sin(x+y) = y^2*cos(x)

>    implicitplot(C,x=-2..2,y=-2..2);

[Maple Plot]

>    implicitdiff(C,y,x);

(cos(x+y)+y^2*sin(x))/(-cos(x+y)+2*y*cos(x))

En opgave 27:

>    cardio:=x^2+y^2=(2*x^2+2*y^2-x)^2;

cardio := x^2+y^2 = (2*x^2+2*y^2-x)^2

>    implicitplot(cardio,x=-1..1,y=-1..1,numpoints=10000);

[Maple Plot]

>    rico:=implicitdiff(cardio,y,x);

rico := -2*(4*x^3-3*x^2+4*y^2*x-y^2)/y/(-1+8*x^2+8*y^2-4*x)

>    r:=subs(x=0,y=1/2,rico);

r := 1

>    P1:=implicitplot(cardio,x=-1..1,y=-1..1,numpoints=10000):

>    P2:=plot(1/2+r*x,x=-1..1,y=-1..1):

>    display(P1,P2);

[Maple Plot]

Tenslotte kijken we nog naar opgave 33:

>    fancy:=y*(y^2-1)*(y-2)=x*(x-1)*(x-2);

fancy := y*(y^2-1)*(y-2) = x*(x-1)*(x-2)

>    implicitplot(fancy,x=-1..3,y=-3..3,numpoints=10000);

[Maple Plot]

>    rico:=implicitdiff(fancy,y,x);

rico := 1/2*(3*x^2-6*x+2)/(2*y^3-3*y^2-y+1)

De raaklijn aan de grafiek is horizontaal als de richtingscoëfficiënt gelijk is aan nul:

>    opl:=solve(rico=0,x);

opl := 1+1/3*3^(1/2), 1-1/3*3^(1/2)

>    evalf(%);

1.577350269, .4226497307

Er zijn dus twee waarden van x  waarvoor dit optreedt. De bijbehorende y -coördinaten zijn oplossingen van een vierdegraads vergelijking. Deze kunnen niet eenvoudig exact worden gevonden, maar wel bij benadering (numeriek). Hierbij helpen we Maple een handje door aan te geven waar gezocht moet worden:

>    fsolve({rico=0,fancy},{x,y},x=0..0.5,y=-2..-0.5);

{x = .4226497308, y = -1.057824707}

>    fsolve({rico=0,fancy},{x,y},x=0..0.5,y=-0.5..0.5);

{x = .4226497308, y = .2294779476}

>    fsolve({rico=0,fancy},{x,y},x=0..0.5,y=0.5..1.5);

{y = .7705220524, x = .4226497308}

>    fsolve({rico=0,fancy},{x,y},x=0..0.5,y=1.5..2.5);

{y = 2.057824707, x = .4226497308}

>    fsolve({rico=0,fancy},{x,y},x=1..2,y=-2..-0.5);

{y = -.9262829305, x = 1.577350269}

>    fsolve({rico=0,fancy},{x,y},x=1..2,y=-0.5..0.5);

{x = 1.577350269, y = -.1824346139}

>    fsolve({rico=0,fancy},{x,y},x=1..2,y=0.5..1.5);

{y = 1.182434614, x = 1.577350269}

>    fsolve({rico=0,fancy},{x,y},x=1..2,y=1.5..2.5);

{y = 1.926282930, x = 1.577350269}

Voor de raaklijnen aan de grafiek in de punten (0,1)  en (0,2)  bepalen we eerst de richtingscoëfficiënten in deze punten:

>    r1:=subs(x=0,y=1,rico);r2:=subs(x=0,y=2,rico);

r1 := -1

r2 := 1/3

In één figuur:

>    implicitplot({fancy,y-1=r1*x,y-2=r2*x},x=-1..3,y=-3..3,numpoints=10000);

[Maple Plot]

>