matlab求多元函数最值在线等y1= -15.3954*x1+0.1630*x2+0.1133*x3+0.1679*x1^2-0.0002*x2^2-0.0004*x3^2-0.0004*x1^3

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/15 01:46:13
matlab求多元函数最值在线等y1= -15.3954*x1+0.1630*x2+0.1133*x3+0.1679*x1^2-0.0002*x2^2-0.0004*x3^2-0.0004*x1^3

matlab求多元函数最值在线等y1= -15.3954*x1+0.1630*x2+0.1133*x3+0.1679*x1^2-0.0002*x2^2-0.0004*x3^2-0.0004*x1^3
matlab求多元函数最值在线等
y1= -15.3954*x1+0.1630*x2+0.1133*x3+0.1679*x1^2-0.0002*x2^2-0.0004*x3^2-0.0004*x1^3

matlab求多元函数最值在线等y1= -15.3954*x1+0.1630*x2+0.1133*x3+0.1679*x1^2-0.0002*x2^2-0.0004*x3^2-0.0004*x1^3
由于函数变量比较多,所以初始值的取值可能对结果影响很大
甚至有时会不收敛
这里采取了随机数作为初始值,知道收敛位置的做法
的到一个极值,521.8202
我试了一下,在比较大的范围内,极值都是收敛于这个值
但是在某些范围是不能够得到收敛的极值的
实际上你的这个函数是没有最值的,只是在某区域有个极值
fun=@(x) -15.3954*x(1)+0.1630*x(2)+0.1133*x(3)+0.1679*x(1)^2-0.0002*x(2)^2-0.0004*x(3)^2-0.0004*x(1)^3;
flag=0;
while (flag~=1);
[x,fval,flag] = fminsearch(@(x) -fun(x),1000*rand(1,4));
end
disp(['当x1-x4的取值' num2str(x) '时']);
disp(['函数有极大值' num2str(-fval)]);
结果:
当x1-x4的取值222.0579 407.4999 141.625 199.4355时
函数有极大值521.8202

>> f=@(x)-15.3954*x(1)+0.1630*x(2)+0.1133*x(3)+0.1679*x(1)^2-0.0002*x(2)^2-0.0004*x(3)^2-0.0004*x(1)^3;
>> [x,fv]=fminsearch(f,[0,0,0])

Exiting: Maximum number of function evaluations ha...

全部展开

>> f=@(x)-15.3954*x(1)+0.1630*x(2)+0.1133*x(3)+0.1679*x(1)^2-0.0002*x(2)^2-0.0004*x(3)^2-0.0004*x(1)^3;
>> [x,fv]=fminsearch(f,[0,0,0])

Exiting: Maximum number of function evaluations has been exceeded
- increase MaxFunEvals option.
Current function value: -8421906140161461600000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000
x =
1.0e+35 *
0.2761 0.0955 -6.4727
fv =
-8.4219e+99
初始点选择不同,多少会有些影响

收起

这里x>=0,y>=0时比较好算一点,依据偏导数为零是的点可能为函数极值点来计算:
syms x y z;
z = (1+x)*sqrt((1-x)^2+y^2)+x^2;
dx = diff(z,'x');
dy = diff(z,'y');
%求解dx,dy的偏导数为零的x和y
X = solve('2*x + ((x - 1)^2 + y^2...

全部展开

这里x>=0,y>=0时比较好算一点,依据偏导数为零是的点可能为函数极值点来计算:
syms x y z;
z = (1+x)*sqrt((1-x)^2+y^2)+x^2;
dx = diff(z,'x');
dy = diff(z,'y');
%求解dx,dy的偏导数为零的x和y
X = solve('2*x + ((x - 1)^2 + y^2)^(1/2) + ((2*x - 2)*(x + 1))/(2*((x - 1)^2 + y^2)^(1/2))=0','x');
Y = solve('(y*(x + 1))/((x - 1)^2 + y^2)^(1/2)=0','y');
%得到X=y^2/4,Y=0,当偏导数为零时函数取得极值,又有已知条件x,y的范围得到x,y都为零是有极值
x0=0;y0=0;
Z = (1+x0)*sqrt((1-x0)^2+y0^2)+x0^2;
fprintf('极小值为:%i\n',Z);
求采纳为满意回答。

收起

最小值:
fun=inline('(-15.3954*x(1)+0.1630*x(2)+0.1133*x(3)+0.1679*x(1)^2-0.0002*x(2)^2-0.0004*x(3)^2-0.0004*x(1)^3)'); 定义最小值函数
x =
57.775484271854 0.935469699107605 ...

全部展开

最小值:
fun=inline('(-15.3954*x(1)+0.1630*x(2)+0.1133*x(3)+0.1679*x(1)^2-0.0002*x(2)^2-0.0004*x(3)^2-0.0004*x(1)^3)'); 定义最小值函数
x =
57.775484271854 0.935469699107605 0.916904439913408
f =
-405.911508501718
EXITFLAG =
1
最大值:
fun=inline('-(-15.3954*x(1)+0.1630*x(2)+0.1133*x(3)+0.1679*x(1)^2-0.0002*x(2)^2-0.0004*x(3)^2-0.0004*x(1)^3)') 定义最大值函数
[x,f,EXITFLAG]=fmincon(fun,[1,1,1],[],[],[],[],[rand(),rand(),rand()],[])
x =
0.444703364353194 407.499611143861 141.62469777931
f =
-34.4210889820753
EXITFLAG =
1

收起

matlab求多元函数最值在线等y1= -15.3954*x1+0.1630*x2+0.1133*x3+0.1679*x1^2-0.0002*x2^2-0.0004*x3^2-0.0004*x1^3 多元函数最值 求思路.高数 多元函数微分求思路 与解题过程 谢谢 在线等. 怎么用MATLAB求多元函数极值求z=x^2-(y-1)^2的极值,包括极大值和极小值,用MATLAB怎么编程? 用MATLAB求多元函数的最值问题:如L=2x+4y+z,其中x,y,z是n行3列矩阵,应该如何编程. 求matlab中多元拟合函数及参数 MATLAB遗传算法求多元函数最大值代码 matlab求解啊 求a 在线等 编写M函数统计200以内素数的个数 matlab 题 在线等急求 高等数学多元函数极值与最值 微积分 多元函数最值问题 一次函数y=kx+b的图像过点(x1,y1)(x2,y2).若x1y2,则k__0(填“”) 求过程~谢谢!在线等 matlab多元函数求极值若已知x∈[0,10],y∈[0,5],z=2*x1*y1+3*x2*y2+x3*y3+5*x4*y4求minz在matlab里可以实现吗,如果可以的话怎么实现?谢谢了,新手,麻烦稍微详细一点.谢谢了,好心人帮忙啊,很急,不胜感激 Matlab中多元函数求极小值问题单形替换法求 f(x1,x2)=4*(x1-5)^2+(x2-6)^2 的极小值 在线等matlab二分法函数程序,要求:函数体中不使用feval函数如题,求高手指导. 如何用MATLAB求线性多元函数的值y= 0.475x1+ 0.236x2+0.055x3+0.099x4+0.110x5 写出绘制函数y=x2+x-1图像的Matlab程序!非常急在线等 已知两个二次函数y1和y2,当x=a时,y1最大为5,y2=25;又y2最小为-2,y1+y2=x²+16x+13,求a的值及y1