Question: How to use*the*Lagrange*multiplier*method

On donne une ellipse rapportée à ses axes x^2/a^2+y^2/b^2-1=0 et une droite (D) qui rencontre cette
courbe en 2 points A et B. 
On considère un cercle variable passant parles points A et B et on demande le lieu géométrique des points de rencontre des tangentes communes au cercle et à l'ellipse.
restart;
with(plots);
with(VectorCalculus);
a := 5;
b := 3;
ellipse_eq := (x, y) -> x^2/a^2 + y^2/b^2 - 1;
m := 1;
c := -2;
line_eq := (x, y) -> y - m*x - c;
intersections := solve({line_eq(x, y) = 0, ellipse_eq(x, y) = 0}, {x, y}, explicit);
A := intersections[1];
B := intersections[2];
A := [VectorCalculus:-`+`(VectorCalculus:-`*`(25, 17^VectorCalculus:-`-`(1)), VectorCalculus:-`*`(VectorCalculus:-`*`(15, sqrt(30)), 34^VectorCalculus:-`-`(1))), VectorCalculus:-`+`(VectorCalculus:-`-`(VectorCalculus:-`*`(9, 17^VectorCalculus:-`-`(1))), VectorCalculus:-`*`(VectorCalculus:-`*`(15, sqrt(30)), 34^VectorCalculus:-`-`(1)))];
B := [VectorCalculus:-`+`(VectorCalculus:-`*`(25, 17^VectorCalculus:-`-`(1)), VectorCalculus:-`-`(VectorCalculus:-`*`(VectorCalculus:-`*`(15, sqrt(30)), 34^VectorCalculus:-`-`(1)))), VectorCalculus:-`+`(VectorCalculus:-`-`(VectorCalculus:-`*`(9, 17^VectorCalculus:-`-`(1))), VectorCalculus:-`-`(VectorCalculus:-`*`(VectorCalculus:-`*`(15, sqrt(30)), 34^VectorCalculus:-`-`(1))))];
center_x := VectorCalculus:-`*`(VectorCalculus:-`+`(A[1], B[1]), 2^VectorCalculus:-`-`(1));
center_y := VectorCalculus:-`*`(VectorCalculus:-`+`(A[2], B[2]), 2^VectorCalculus:-`-`(1));
radius := VectorCalculus:-`*`(sqrt(VectorCalculus:-`+`(VectorCalculus:-`+`(A[1], VectorCalculus:-`-`(B[1]))^2, VectorCalculus:-`+`(A[2], VectorCalculus:-`-`(B[2]))^2)), 2^VectorCalculus:-`-`(1));
circle_eq := (x, y) -> (x - center_x)^2 + (y - center_y)^2 - radius^2;
L := (x1, y1, x2, y2, lambda1, lambda2) -> (x1 - x2)^2 + (y1 - y2)^2 + lambda1*ellipse_eq(x1, y1) + lambda2*circle_eq(x2, y2);
eq1 := diff(L(x1, y1, x2, y2, lambda1, lambda2), x1);
eq2 := diff(L(x1, y1, x2, y2, lambda1, lambda2), y1);
eq3 := diff(L(x1, y1, x2, y2, lambda1, lambda2), x2);
eq4 := diff(L(x1, y1, x2, y2, lambda1, lambda2), y2);
eq5 := ellipse_eq(x1, y1);
eq6 := circle_eq(x2, y2);
sols := solve({eq1, eq2, eq3, eq4, eq5, eq6}, {lambda1, lambda2, x1, x2, y1, y2}, explicit);
sols;
lieu_geometrique := [seq([sols[i][1], sols[i][2]], i = 1 .. nops(sols))];
plot(lieu_geometrique, style = point, symbol = cross, color = red, title = "Lieu géométrique des points de rencontre");
Ce code m'a été donné en partie par l'intelligence artificielle (Mistral), mais il se plante. Pourriez-vous corriger les erreurs. Merci.

Please Wait...