Lagrange 乘子法求最优解

本文通过一个具体的四元函数优化问题,利用拉格朗日乘数法求解约束条件下的极值。展示了如何建立拉格朗日函数、求偏导数并联立方程组解决实际问题的过程。
clc
clear
syms x y z r1 r2 w
f=x^2+y^2+z^2+w^2;
g1=2*x-y+z-w-1;
g2=x+y-z+w-1;
h=f-r1*g1 -r2*g2;

hx=diff(h,x);
hy=diff(h,y);
hz=diff(h,z);
hw=diff(h,w);
hr1=diff(h,r1);
hr2=diff(h,r2);


r=solve([hx==0,hy==0,hz==0,hw==0,hr1==0,hr2==0],[x,y,z,w,r1,r2]);


arr_x=double(r.x)
arr_y=double(r.y)
arr_z=double(r.z)
arr_w=double(r.w)

arr_fv=[];
for i=1 : length(arr_x)
xv=arr_x(i);
yv=arr_y(i);
zv=arr_z(i);
wv=arr_w(i);
fv=subs(f,[x,y,z,w],[xv,yv,zv,wv]);
arr_fv(i)= double(fv);
g1v=subs(g1,[x,y,z,w],[xv,yv,zv,wv])
g2v=subs(g2,[x,y,z,w],[xv,yv,zv,wv])
end
arr_fv
disp('after sort:')
sort(arr_fv)
View Code

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值