1樓:春日野穹
使用匿名函式控制代碼就可以了
fmincon 需要的函式fun只有乙個輸入引數 fun(x)
而你的函式需要多乙個能改變的變數 那麼形式變成 myfun(p,x)
p就是你要傳遞的引數,x還是原來的輸入
當然首先,你得寫個m檔案,假設為myfun.m,其內容大致如下
function [out]=myfun,(p,x)
...........
end就是根據引數p和輸入x,求的輸出,當然名字可以自己取,然後就是主程式了
for p=p0:pn %引數p的取值
[x,fval]=fmincon(@(x) myfun(p,x),bt0,,,,,lb,ub,@constr);
.......
end其中關鍵就是@(x) myfun(p,x)
這會返回乙個匿名的函式控制代碼,會使用當時的p值代入myfun
得到乙個只有乙個輸入x的函式,這樣就能把額外的引數傳遞給需要優化的函式
如果你的函式有等多的引數例如
myfun(a,b,c,x)
a=..
b=..
c=..
同樣用@(x) myfun(a,b,c,x)把a,b,c引數的值傳給要優化的函式
在以上的基礎上,加幾句,儲存每次的引數p和對應的優化結果
然後畫圖就可以了
打字不易,如滿意,望採納。
2樓:柘薰
function y=shorpath(a,s,t)if nargin<3
%t設定預設值
if nargin<2
%s設定初值
if nargin<1
%全部引數預設初值設定
%或者提示error
endend
end%函式體
%......
end函式一般都是這麼寫的,所以呼叫shorpath(a,s)一般而言t都是採取的程式設定好的預設值。
matlab非線性規劃fmincon函式中目標函式引數傳遞問題,怎麼解?
3樓:小青蛙跳著走
使用匿名函式控制代碼就可以了 fmincon 需要
的函式fun只有乙個輸入引數 fun(x) 而你的函式需要多乙個能改變的變數。
1、在到達迭代次數閾值或目標函式估值次數閾值時,求解器沒有最小化目標到要求的精度,此時求解器停止。接下來,可以嘗試以下方法:
(1)設定『display』為『iter』,檢視每步的迭代資訊,這些資訊包括:目標函式(fval or f(x) or resnorm)是否是下降的;檢查約束越界(max constraint)是否是遞減趨向於0;檢視一階優化是否是遞減趨向於0;檢視置信域半徑(trust-region radius)是否下降趨向於乙個小的值。若其中至少一種情況為是,就表示結果是不斷改善的。
如果結果是不斷改善的,可以採取下邊的措施:設定maxiter、maxfunevals比預設值大的值,預設值可以在優化工具箱或求解器的函式參考頁的優化表中檢視;從最後計算出的點開始重新求解。如果結果沒有改善,嘗試以下其他的方法。
(2)放鬆精度
如果tolx或tolfun太小,當求解器達到乙個最小值時可能也不會識別到,這就會導致無限次徒勞的迭代。diffmaxchange和diffminchange選項能影響求解器的改善,它們控制求導估計中有限差分的步長。
2、無可行點
在tolcon約束精度內,求解器不能找到乙個滿足所有約束條件的點,此時,可以嘗試以下方法:
(1)檢查線性約束
通過求解乙個線性規劃問題來找到乙個滿足界約束和線性約束的點。
i)定義乙個目標函式是常值0的線性規劃問題、
f = zeros(size(x0)); % assumes x0 is the initial point
ii)求解這個線性規劃問題看是否有乙個可行點。
xnew = linprog(f,a,b,aeq,beq,lb,ub);
iii)如果有可行點xnew,用xnew作為初始點去求解原始問題。
iv)如果沒有可行點,那說明原始模型建的不好,檢查界約束和線性約束。
matlab多引數函式,Matlab多引數函式
用函式lsqnonlin 你應該己知p,q,s,y,對吧?擬合只是找他們的關係而己,實際上就是 y f p,q,s 你需要先建乙個y fun.m的function,比如 function res y fun x global p q s y ymodel f p,q,s,x 你的p,q,s二次函式 ...
在MATLAB中建立函式M檔案,該函式的功能是 找出矩陣A A為100行,78列 中的最大值及其位置
function b question a a max max a c,d find a a b example a 1 6 4 6 7 6 3 8 3 3 3 8 8 2 8 5 8 6 3 5 1 5 8 5 3 b question a bans 8b ans 3 2 4 2 2 3 3 3 ...
matlab中函式式M檔案怎樣編寫
開啟matlab,然後點左上方的file 選擇new,裡面就有m檔案 這個類似函式的,不好說啊。你找本書看看吧 請教關於matlab中的m函式和m檔案的程式編寫,謝謝!函式檔案 function myfun a,b,c x b 2 a 5 0.1 b 2 a 5 y a x.2 b x c plot...