推 billy00685:成功解決了0.0 ~原來呼叫的時候還有這種寫法_感謝 11/18 16:50
※ 引述《billy00685 (milano)》之銘言:
: %函數檔如下:
: function f = myfun3_11_3(x);
: w = 0.000188763;
: delta_P = 0.3*pp*0.0789;
: f = w*x(1)^3*x(2)+(x(2)*delta_P);
: ------------------------------------------
: %主程式如下:
: clear all
: clc
: pp = input('輸入人數:');
: x0 = [0.1 1];
: lb = [0.1 1];
: ub = [3 999999];
: options = optimset('LargeScale','off');
: [x,total_cost,flag] =
: fmincon(@myfun3_11_3,x0,[],[],[],[],lb,ub,@mycon3_11_3,options)
: %副程式當中的pp我要每次執行主程式時都要重新設定所以
: 我想把它放到主程式中使用input指令,但是會發生
: 無法定義函數或變數pp的錯誤
: Undefined function or variable 'pp'.
: %我在把"pp = input('輸入人數:');"
: 它放到副程式中去跑主程式會發生一直重複教我輸入人數:
: 如下:
: 輸入人數:30
: 輸入人數:30
: .
: .
: .
: .
: 到底該如何把主程式的變數給函數檔用啊?
重點不在input 而是怎麼把值從主程式傳到副程式
副程式多加個輸入把參數丟進去就好
function f = myfun3_11_3(x,pp);
w = 0.000188763;
delta_P = 0.3*pp*0.0789;
f = w*x(1)^3*x(2)+(x(2)*delta_P);
然後主程式呼叫當然也要多加個輸入
clear all
clc
pp = input('輸入人數:');
x0 = [0.1 1];
lb = [0.1 1];
ub = [3 999999];
options = optimset('LargeScale','off');
[x,total_cost,flag] =fmincon(@(x)...
myfun3_11_3(x,pp),x0,[],[],[],[],lb,ub,@mycon3_11_3,options)
因為我沒有@mycon3_11_3 我設成[]測試是ok的
你可以測試看看
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.121.146.175