二元函數極值 用matlab求
題目:
二元函數極值 用matlab求
關於h d的函數 求極值 還要求極值對應的h d的值
I=4000 L=11.25 h的定義域在8到12
函數中不取虛數解
儘量說明過程 本人是新手
d大概是在10到100之間的一個數
求最小值 謝謝
點圖片可放大看
能否說一下具體操作
就是輸入m文件後怎麼操作 直接在命令框裡輸入嗎
稍微解釋一下temp fmincon ezcontourf是什麼意思 怎麼操作
解答:
看來你根本沒學過MATLAB.
首先打開matlab窗口
1°在命令行中輸入
edit used_for_test
出來一個m編輯窗口,在m文件中,粘貼下面的內容:
function y=used_for_test(x)
I=4000;
L=11.25;
h=x(1);
d=x(2);
temp11=(d^2/4+L^2+h^2)^(3/2);
temp1=2*I*h/temp11;
temp21=(9*d^2/4+L^2+h^2)^(3/2);
temp2=I*h/temp21;
temp31=(L^2+h^2)^(3/2);
temp3=I*h/temp31;
temp41=(d^2+L^2+h^2)^(3/2);
temp4=2*I*h/temp41;
E=temp1+temp2-temp3-temp4;
y=E;
點擊保存
2°回到命令窗口,在命令窗口中,輸入如下命令:
[X,y]=fmincon(@(x)used_for_test(x),[10;50],[],[],[],[],[8,10,12,100])
便可以得到極小值,
另外,輸入如下命令可以得到全局最小值:
[X,y]=fminsearch(@(x)used_for_test(x),[10;50])
temp就是自己隨便取的臨時變量.
fmincon是求非線性條件極小值的函數
y是最小值,X是取最小值的坐標點.
[10;50]是坐標的初值,【8,10,12,100】是坐標點的取值範圍
ezcontourf是畫等值線的一個函數
function y=used_for_test(h,d)
I=4000;
L=11.25;
temp11=(d^2/4+L^2+h^2)^(3/2);
temp1=2*I*h/temp11;
temp21=(9*d^2/4+L^2+h^2)^(3/2);
temp2=I*h/temp21;
temp31=(L^2+h^2)^(3/2);
temp3=I*h/temp31;
temp41=(d^2+L^2+h^2)^(3/2);
temp4=2*I*h/temp41;
E=temp1+temp2-temp3-temp4;
y=E;
在命令窗口中直接輸入:
ezcontourf(@(h,d)used_for_test(h,d),[8,12,10,100]),colorbar
figure
ezcontourf(@(h,d)used_for_test(h,d),[8,10,80,100]),colorbar
便可直接從圖形上看到最小值在邊界點(8,100)上
添加新評論