Encontre a reta tangente e a reta normal à curva dada por  (x^3)- (y^3)+ x y-2x+3 y=-1 que passa pelo ponto P=(1,2).

(* traçado da curva: *)

L=5;

g1=ContourPlot[(x^3)- (y^3)+ x y-2x+3 y==-1,{x,-L,L},{y,-L,L}]

(* o comando abaixo não funciona porque precisamos dizer ao mathematica que y deve ser pensado como sendo definido implicitamente por x nessa equação *)

D[(x^3)- (y^3)+ x y-2x+3 y,x]==D[-1,x]

(* para resolver esse problema, devemos escrever y[x], determinado assim que y é uma função de x *)

D[(x^3)- ((y[x])^3)+ x y[x]-2x+3 y[x],x]==D[-1,x]

Solve[-2+3 (x^2)+y[x]+3 y'[x]+x y'[x]-3 ((y[x])^2) y'[x]==0,y'[x]]

%/.{x->1,y[x]->2}   (* substitui o ponto P na expressão acima *)

(* Note que o ponto P não é o único que satisfaz a equação e tem x=1. Abaixo achamos todos os pontos com essa propriedade (isso não seria necessário para calcular o que foi pedido. Vemos que temos três pontos com essa propriedade (compare com o primeiro gráfico lá em cima *)

((x^3)- (y^3)+ x y-2x+3 y==-1)/.x->1
Solve[%,y]

(* Assim a reta tangente é da forma y = y0 + m (x-x0) com m=y'(1) e (x0,y0)=P=(1,2): *)

y== y0+m (x-x0) /.{m->(3/8),x0->1,y0->2}

g2=ContourPlot[y==2+(3/8) (-1+x),{x,-L,L},{y,-L,L},ContourStyle->Red]

Show[g1,g2]

(* A reta normal é dada por forma y = y0 + m (x-x0) com m=-(1/(y'(1))) e (x0,y0)=P=(1,2): *)

y== 2+(1/(-(3/8)))(x-1)

g3=ContourPlot[y==2-(8/3) (-1+x),{x,-L,L},{y,-L,L},ContourStyle->Green]

Show[g1,g2,g3,ListPlot[{{1,2}},PlotStyle->{Black,Large}]]