目標函式有兩個未知變數,怎麼用matlab求最優解

時間 2021-08-11 17:55:51

1樓:匿名使用者

z = @(x)(1.8-x(1))/400*x(2)^2 + (-1.8*x(1)^2+146.24*x(1)-1270)/50*x(2) ...

+(-3.24*x(1)^3+262.872*x(1)^2-3771*x(1)-82375)/100;

x = fmincon(@(x)-z(x),[0 0],,,,,[0 0])

得到的結果為:

x =35.6887  195.5207

其中第一個值為p,第二個為q。目標函式為:

>> z(x)

ans =

2.9446e+003

需要注意的是初值的選擇需要慎重,選擇不當很容易落在區域性最優點(0,0)處。

優化結果繪製二維圖如下:

h=ezmesh(@(p,q)arrayfun(@(x1,x2)z([x1,x2]),p,q),[0 50 0 300]);

set(h,'edgealpha',0.2)

hold on

plot3(x(1),x(2),z(x),'rp')

view(-20,6)

hold off

這裡需要注意,ezmesh那句不能簡單寫成ezmesh(@(x1,x2)z([x1 x2])),因為匿名函式z不支援向量運算。

2樓:

問題主要是三角形隸屬函式引數的確定問題,具體是如何求出第1張圖中t1和t2。第1張圖是一個三角形隸屬函式,其函式的形式為圖2所示,目的是求使圖3所示的函式達到最小值時的t1和t2的值,t1和t2的取值範圍是(8.8,16.

8)和(16.8,31.3),x取值為一系列離散值。

使用matlab 解個方程,已知資料如何求兩個未知數?

3樓:匿名使用者

這不能叫解方程,而是引數擬合

對方程取對數 可得

ln(k)=ln(a)-ea/r*(1/t);

用k的對數結果作y,t的倒數1/t作x,進行線性擬合

的到的斜率是-ea/r   ,截距是ln(a) 由此可以求出a和ea

t=[700 730 760 790 810 840 910 1000];

k=[0.011 0.035 0.105 0.343 0.789 2.17 20 145];

r=8.314;

p=polyfit(1./t,log(k),1);

a=exp(p(2));

ea=-p(1)*r;

tt=700:1000;

kk=a*exp(-ea./(r*tt));

plot(t,k,'o');hold on;%資料

plot(tt,kk,'k');hold off;%擬合

axis([690 1010 -10 160]);

title(['a=' num2str(a,'%e') ',  ea=' num2str(ea,'%e')]);

legend('資料點','擬合曲線','location','north');

得到的結果如圖所示

matlab多目標多約束 最優問題求解,求大神指點

4樓:我行我素

matlab多目標多約束 最優問題求解可用gamultiobj函式,具體用法可help瞭解學習。

怎麼接有兩個未知數的方程,怎麼接有兩個未知數的方程???

有兩個數的方程,叫二元一次方程。通常使用代入消元法,加減消元法和順序消元法。不過前提是有兩個方程。像只有乙個方程的二元一次方程,也可根據規律,定律解出來,不過比較複雜。例 13x 14y 41 1 14x 13y 40 2 解 2 1 得 x y 1 即x y 1 3 把 3 代入 1 得 13 y...

編寫函式strcmp用主函式呼叫實現兩個字串的比較。int strcmp char s1char s

int strcmp char s1,char s2 else if p q else if p 0 q 0 if p 0 q 0 if p 0 q 0 int mystrcmp const char str1,const char str2 if ret 0 ret 1 else if ret 0...

MATLAB中的兩個變數相乘怎麼編寫

楊好巨蟹座 驗證成功,可以執行 x rand 3,4 y rand 4,5 row1,col1 size x row2,col2 size y if col1 row2 disp input is error else result zeros row1,col2 for ii 1 row1 for...