0
私は、直線に関して閉曲線上にある2つの最も遠い点を見つけたいと思っています。ラグランジュ乗数は仕事のようです。しかし、何か私のコードに間違っています:私は10のソリューションポイント(長さ(xsol)= 10、いくつかは繰り返されるので、画像はわずか7です)、それらのうち2つだけが(赤いダニで)欲しいものです。なぜ、いくつかの点が曲線上にないのでしょうか?間違って何私のラグランジュ乗数のMATLABコードに何が間違っていますか?
syms x y L
g = @(x,y) x^2+2*x*y^2+y^6-1;
h = @(x,y) -4*x+y; % to max or min this such that g=0 is satisfied
gradg = jacobian(g,[x,y]); gradh = jacobian(h,[x,y]);
lagr = gradh - L*gradg;
[L,xsol,ysol]=solve(lagr(1),lagr(2),g);
plot(xsol,ysol,'bo')
?
いくつかの解は複雑な平面にあるためです。あなたが真実を解決することだけを意味するなら、あなたは複雑な解決策を無視することができます。また、私は制約にある4つの真の解を数えます。 – TroyHaskin
syms x y realを置くと、matlabはただ一つの解を与えますが、ポイントをプロットすることさえできません。 – lmathl
複雑な解は有効な解(基本代数の基本定理に従う)であるため、シンボリックエンジンの数字の集合は制限しません。そして、一意性が失われていると思われるので、エンジンは明らかに解決策をパラメータ化することを決定します。 – TroyHaskin