如何用matlab求多元函式的極值

時間 2021-08-30 09:25:11

1樓:扈多綦祖

on來求解。寫成向量形式,約束a*x<=b,初始值x0附近可以搜出出區域性極小值。輸入:

z=@(x)7.2*sqrt(25+(15-x(1))^2)+(7.2+(107/(20-x(1))))*sqrt((8-x(2))^2+(20-x(1))^2)+7.2*x(2);

a=[1,0;0,1];

b=[15;8];

x0=[1;1];

[x,feval]=fmincon(z,x0,a,b)得到區域性極小值的座標和函式值:x=

15.0000

6.6994

feval

=231.9944

2樓:匿名使用者

當x=pi/3 y=pi/3 z有極大值 3/8*3^(1/2) %定義二元函式

clc;clear;

syms x y;

z=sin(x)*sin(y)*sin(x+y);

ezsurf(x,y,z,[0,pi/2,0,pi/2]);

%求解駐點

dzx=diff(z,x)

dzy=diff(z,y)

[xx,yy]=solve('cos(x)*sin(y)*sin(x+y)+sin(x)*sin(y)*cos(x+y)=0',...

'sin(x)*cos(y)*sin(x+y)+sin(x)*sin(y)*cos(x+y)=0','x','y')

%對於定義域內的駐點求解二階偏導函式

a=diff(z,x,2);

b=diff(diff(z,x),y);

c=diff(z,y,2);

d=a*c-b^2;

%判別極大值點

d1=subs(subs(d,'x',xx(1)),'y',yy(1))

a1=subs(subs(a,'x',xx(1)),'y',yy(1))

d2=subs(subs(d,'x',xx(2)),'y',yy(2))

a2=subs(subs(a,'x',xx(2)),'y',yy(2))

%極大值點和極大值

[xx(2) yy(2)]

jdz=subs(subs(z,'x',xx(2)),'y',yy(2)) 程式執行結果ans =

[ 1/3*pi, 1/3*pi]

jdz =

3/8*3^(1/2)

matlab多元函式條件極值 fmincon 5

3樓:heart浩皛

求極值問題,首先,必須編寫有函式表示式或目標函式的m檔案;其次,還要編寫有有約束函式(條件)和非約束函式(條件)的m檔案;再次,編寫求函式極值的m檔案。求解方法: 1、求f1(x)=(x(1)*3200+x(2)*4045+x(3)*5900-x(4)*5800的最優解; 2、求f2(x)=(x(1)+x(2)+x(3)-x(4)的最優解; 3、構造統一的目標函式f(x)=(f1(x)-fval1)/fval1)2+(f2(x)-fval2)/fval2)2,利用fmincon()求解。

4、得到f1(x)、f2(x)

在matlab中,如何求多元函式在一個區域內的極值?

4樓:小恭

函式有表示式麼?如果有表示式的話可以直接求出解析解,如果函式太複雜,那可能得用優化演算法了,粒子群應該可以用

如何用matlab求兩個函式的卷積

雙槍老椰子 function convolution t 4 0.001 4 e rectpuls t 0.25,1.5 plot t,e pause h tripuls t 1,2,1 plot t,h pause s 8 0.001 8 f conv e,h plot s,f 卷積後訊號就變長了...

如何用matlab對這個函式進行積分

1 雙擊matlab軟體圖示,開啟matlab軟體,如下圖所示。2 使用syms命令,建立七個符號變數a b c d x y z,如下圖所示。3 這裡進行乙個較為複雜的積分舉例,使用符號變數a b x y z,建立多元函式a,其中a 32 a b 5 sin 7 z x y,如下圖所示。4 使用函式...

如何用matlab求逆矩陣,如何用MATLAB求逆矩陣

白鯨 第一步 啟動matlab。第二步 輸入 clear 和 clc 清屏 第三步 根據你的需求設定一個矩陣。圖中示例設定為矩陣a 1 2 3 4 a 可以定義為你需要的任何字母 第四步 用 b inv a b 可以定義為你需要的其他字母,inv 裡的字母為你需要求逆的矩陣。第五步 驗證自己求解的逆...