2016-06-17 7 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:同じ質問で、これまで懸念の - 以下正解に加えて、ここでは関数fminbndと関数fminsearchソルバーは目的を最小化しようと 機能を最大限にhttps://www.mathworks.com/help/matlab/math/optimizing-nonlinear-functions.html#bsgpq6p-10

からドキュメントがあります関数。最大化問題がある場合、つまり形の問題がある場合は、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を使用してmaxを見つけるのは意図された使用ですか? – 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 
関連する問題