回覆列表
-
1 # nzrur24356
-
2 # 使用者1465424935672
像這種問題Matlab庫函式直接可以求解。
編寫三個m檔案,一個主程式,兩個function
主程式main.m
p0=[0 0 0];
A=[];b=[];Aeq=[];beq=[];vlb=[-2;-2;-2];vub=[2;2;2];
[x,fval]=fmincon("fun_u",p0,A,b,Aeq,beq,vlb,vub,"confun_u")
fun_u.m子函式即目標函式u
function y=fun_u(x)
y= (x(1)-0.1).^2 + (x(2) - 0.4).^2 + (x(3) - 0.3).^2;
約束條件confun_u.m檔案,由於本問題無約束條件,所以該函式這樣來寫
function [g,ceq]=confun_u(x)
g=-1;
ceq=-1;
執行的時候直接執行main程式即可。當然你可以把main.m也改為一個function,輸入引數為目標函式名‘fname’,這時你需要自己定義"fname"的內容。要是不清楚的地方可以繼續追問
1、根據y,z值,求出x值2、分揀x>=1.5以上對應的y,z值3、用polt3()函式繪製圖形,即plot3(x,y,z)