2016-06-17 8 views
1

함수의 로컬 최대 값을 찾으려면 fminsearch를 사용하고 싶습니다.fminsearch를 사용하여 로컬 최대 값을 찾는 방법은 무엇입니까?

fminsearch를 사용하여 함수의 음수 반환 값에 대한 "검색"을 사용하여 최대 값을 찾을 수 있습니까? 예를 들어

: 그것은 가능

function f = myfun(x,a) 
f = x(1)^2 + a*x(2)^2; 
a = 1.5; 
x = fminsearch(@(x) -1 * myfun(x,a),[0,1]); 

인가?

갱신 1 : 내 질문이 명확 (아래 몇 가지 의견을 다음) 만드는 정교한하기 위해서 - 난이 업데이트 추가 해요 : 그렇게하는 것이 가능하다면 요구에 의해

을, 나는 그것이 인 의미 fminsearch 함수의 올바른 사용 - fminsearch을 사용하여 최대를 찾으려면 의도 한 용도입니까?

갱신 2 :에 대한 같은 질문 적 관심 - 아래의 정답 외에도이 여기 https://www.mathworks.com/help/matlab/math/optimizing-nonlinear-functions.html#bsgpq6p-10

극대화 기능 의 설명서입니다은 fminbnd 및 fminsearch 솔버는 목표를 최소화하려고 시도 기능. 최대화 문제가있는 경우 즉, 형태의 문제가있는 경우, g (x) = -f (x)를 정의하고 g를 최소화하십시오.

예를 들어, X = 5 부근 tan(cos(x))의 최대 값을 찾기 위해 평가 :

[x fval] = fminbnd(@(x)-tan(cos(x)),3,8)

x = 6.2832

fval = -1.5574

최대가 1.5574합니다 ( 보고의 부정 fval), x = 6.2832에서 발생합니다. 이 대답은 5 자릿수 자릿수이므로 최대 값은 tan (1) = 1.5574이므로 x = 2π = 6.2832에서 발생합니다.

+2

은 당신이 할 수있는 네, 또한입니다! – obchardon

+0

그것이 가능한 것은 무엇을 의미합니까? 코드를 실행 했습니까? 그렇다면 작동합니까? 그렇지 않다면 오류가 무엇입니까? 그것이 작동한다면 당신은 무엇을 요구하고 있습니까? – Dan

+0

내 말은 - fminsearch를 적절하게 사용하는 것입니까? fminsearch를 사용하여 최대를 찾는 용도입니까? – DeJaVo

답변

3

더 fmaxsearch 기능이없는 이유는 당신이 할 수있는 예,도있다 : 예를 들어

: 더 fmaxsearch 기능이없는 이유

func = @(x) sin(x); 

sol = fminsearch(@(x) func(x),0) 
% sol = pi/2 
sol = fminsearch(@(x) func(x)*-1,0) 
% sol = -pi/2