我想使用回圈找到函式的區域最小值。
基本上,該函式有 2 個選擇變數,比如 f(x,y)。
但是我想使用 for 回圈找到 f(x,y) 的最小值,y 值從 1,2,3...10 開始。
例如,
obj = @(x,y) x^2 x*y y^2
for i = 1:30
fminsearch(...)
end
但我不確定如何正確使用它。
誰能幫我解決這個問題?
提前致謝。
uj5u.com熱心網友回復:
您可以使用包裝函式:
obj = @(x,y) x^2 x*y y^2;
for i = 1:30
y_i = generate_ith_y_value(i);
fminsearch(@(x) obj(x,y_i), x0)
end
如果你想找到一對(x,y),這樣obj(x,y)是區域最小而不是尋找當地最低時y是一個固定值(如你試圖用for回圈做什么),那么它的更好結合x并y成一個單一的載體。
可以obj直接修改:
% x(1) = x, x(2) = y
obj = @(x) x(1)^2 x(1)*x(2) x(2)^2;
fminsearch(@(x) obj(x), [x0; y0])
如果您不能obj直接修改,請使用一個包裝函式,該函式接受一個輸入引數并將其分開:
obj = @(x,y) x^2 x*y y^2;
% xx(1) = x, xx(2) = y
fminsearch(@(xx) obj(xx(1),xx(2)), [x0; y0])
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/351345.html
上一篇:For回圈不在串列范圍內回圈多次
