2011-12-20 2 views
-3
f(x) = 4*(1-x(1)).^2 .* exp(-x(1).^2 - (x(2)+1).^2) - ... 
    10*(x(1)/3 - x(1).^3 - x(2).^5) .* exp(-x(1).^2 - x(2).^2) - ... 
    (1/2) .* exp(-(x(1)+1).^2 - x(2).^2) 

where -5 <= x(1) <= 5 , -3 <= x(2) <= 3 

나는 가파른 하강를 사용 f(x) 극대화하는 최적의 x* 결정합니다. http://www4.ncsu.edu/~ctk/darts/steep.m을 찾았지만 사용할 수 없습니다.가파른 하강, matlab에

% f = objective function, 
%   the calling sequence for f should be 
%   [fout,gout]=f(x) where fout=f(x) is a scalar 
%    and gout = grad f(x) is a COLUMN vector 
  1. 방법이 기능을 사용할 수 있습니다 전 주석의이 부분을 이해하지?
  2. 어떻게 초기 조건을 수정할 수 있습니까?
  3. 스텝 크기를 어떻게 수정할 수 있습니까?
+1

나는 가파른 하강 여기에 최고의 선택이 될 것입니다 확실하지 않다. 가파른 강하는 일반적으로 둘 이상의 차원이있는 상태에 사용됩니다. 가장 가파른 하강을 사용하는 이유와 다른 방법이 아닌 이유를 설명해 주시겠습니까? 당신의 실제 문제에 약간의 빛을 비춰 줄 수도 있습니다 ... – amit

+0

그것의 제 집일 때, 나는 가장 가파른 점잖은 것을 사용해야합니다. –

+2

나는 당신이 가장 가파른 강하를 수행 할 것으로 예상된다고 생각합니다. 그렇지 않으면 매우 유익하지 않습니다. 가서 시도한 내용으로 질문을 업데이트하십시오. – Nzbuu

답변

1
  1. "함수 핸들"을 사용하여 함수를 전달해야합니다. 도움말에서 찾아보십시오.
  2. 초기 조건은 x0 입력입니다.
  3. 스텝 크기는 자동으로 선택됩니다.
+0

안녕하세요, 좋은 답변은 tnx입니다. 나는이 코드를 작성 : http://www.mediafire.com/?ku2r2bjzs8id6fs하지만 난 오류를 처리 할 수 ​​없습니다. –