私は最大値を見つけなければならないMATLABでプログラムを作成しようとしています。 私が使用しているアルゴリズムは、与えられた点を2つの隣接点と比較しています。 次のポイントが現在より大きい場合は、正の方向に反復します。 次の点が現在よりも小さい場合は、負の方向に繰り返します。 前のポイントと次のポイントが現在よりも小さい場合、最大値に達しました。MATALBで最大値を見つけるためのヒルクライミングアルゴリズム
フラグ変数でwhileループを作成しましたが、最大値を検出することはできません。
xをいくつかの数値に初期化する(x = 0など) 関数 'f(x)= -x^2 -3;' 変数 'xint'は、0.1と設定された間隔です。 変数 'i'は単にカウントを保持することです。
clc
clear all
syms x
f(x) = -x^2+3;
max = 0;
x = 0;
xint = 0.1;
flag =1;
while(flag ==1)
fprintf('\ninside while\n')
if(f(x+xint)> f(x))
x = x + xint;
fprintf('inside first: Value of x is set to = %f, where function value is %f', x, f(x));
elseif(f(x+xint) < f(x))
x = x-xint;
fprintf('inside second: Value of x is set to = %f, where function value is %f', x, f(x));
else if(f(x-xint)<f(x) & f(x+xint) < f(x))
disp('Max detected')
max = x;
flag =0;
end
i = i+1;
end
私に役立つヘルプがあります。
ありがとうございます。
アヌパム
入力: F(X)= -x^2 +3。
出力: whileループが実行されているため、statement.Andというプログラムが3番目のelseに入力されません。
あなたのデータは?例とその出力を与えれば、あなたが意味するものを理解することができます。説明は非常に混乱しています – smttsp