関数の極大値を求めるために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で発生します。
はいすることができます、それはまたです! – obchardon
それはどういう意味ですか?コードを実行しましたか?もしそうなら、それは機能しますか?そうでない場合、エラーは何ですか?それがうまくいけば、あなたは何を求めているのですか? – Dan
私はfminsearchを適切に使用していることを意味します - fminsearchを使用してmaxを見つけるのは意図された使用ですか? – DeJaVo