0

簡単な質問です。誰かがここで私を助けてくれることを願っています。関数のすべての重要なポイントを見つけようとしています。

f(x,y) = 0.05 * (1-12x+20x^2) * (1-7y+10y^2) * exp(-(x^2/6+y^2/3))

私がいつものことをしてfx = diff(f(x,y),x)fy = diff(f(x,y),y)それを呼ぶとき、[xcr,ycr] = solve(fx,fy)それは私にただ一つの解決策を与えるだけです...私はそれ以上のものがあることを知っています。

これは、ソリューションの数が無限であり、これが1つであるためでしょうか。これを回避する方法はありますか?

ありがとう!

4

1 に答える 1

4

正確なコードを共有していなかったため、1つのソリューションのみを取得するために何をしたかわかりませんが、シンボリックツールボックスを使用してこの子犬を解決できます。

% # Define the function f(x, y)
syms x y
f = 0.05 * (1 - 12*x + 20*x^2) * (1 - 7*y + 10*y^2) * exp(-(x^2 / 6 + y^2/3));

% # Find the partial derivatives
f_x = diff(f, x);
f_y = diff(f, y);

% # Find the critical points
[xcr, ycr] = solve(f_x, f_y);
p = double([xcr(:), ycr(:)]);

% # Discard the complex solutions
p(imag(p(:, 1)) > eps, :) = [];
p(imag(p(:, 2)) > eps, :) = [];
p = real(p);

xcr = p(:, 1)
ycr = p(:, 2)

これにより、実際には13のソリューションが得られます。

xcr =             ycr =

    0.5000            0.2000
    0.5000            0.5000
    0.1000            0.2000
    0.1000            0.5000
    2.6133            1.9238
   -2.3113            1.9238
    0.2980            1.9238
    2.6133           -1.5711
   -2.3113           -1.5711
    0.2980           -1.5711
    2.6133            0.3474
   -2.3113            0.3474
    0.2980            0.3474
于 2012-11-09T01:28:55.583 に答える