2012-11-09 3 views
0

빠른 질문, 누군가가 나를 도울 수 있기를 바랍니다. 나는 함수의 모든 중요한 점을 찾으려고 노력 해요 :matlab에서 exp로 중요한 기능 지점을 찾는 방법

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)를 호출 할 때 ... 그 후 더 많은 것이 알고있다.

솔루션 수가 무한대로 표시 될 수 있습니까? 그 중 하나입니까? 이 문제를 해결할 방법이 있습니까?

감사합니다.

+0

(서핑 (x, y, z) ...) 최대 4 개, 4 개의 안장 및 4 개 사이의 어쩌면 다른 것을 볼 수 있습니다. – user1003131

답변

4

당신은 그래서 당신이 단 하나의 솔루션을 얻기 위해 무엇을했는지 모르는 정확한 코드를 공유하지 못했지만,이 강아지 해결하기 위해 상징적 인 도구 상자를 사용할 수 있습니다

% # 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 
+0

답장을 보내 주신 EitanT에게 감사드립니다. Matlab (7.11.0)의 내 버전에서 코드를 실행하면 xcr = 0.1 및 ycr = 0.2가됩니다. 다른 솔루션은 없습니다. 어떤 아이디어가 이것을 일으킬 수 있습니까? – user1003131

+0

잘 모르겠다. MATLAB R2009a (v7.8)와 R2012a (v7.14)에서 모두 실행했고 같은 결과를 얻었습니다 ...'solve() '를 사용하여'size (xcr)'및'size (ycr) 네가 얻는 것을 말해줘. 두 사람 모두'[13 1]입니까? –

+0

hhmmm 이상한. 둘 다 [1 1]입니다. 다음은 스크린 샷입니다. https://docs.google.com/open?id=0B8XEsIt0n6PeaVJPN2JCdHJBOW8 – user1003131

관련 문제