拉格朗日乘数法matlab代码
时间: 2023-11-05 18:13:43 浏览: 55
拉格朗日算法 代码
以下是使用拉格朗日乘数法求解约束最优化问题的 MATLAB 代码示例:
假设有以下最优化问题:
maximize f(x,y) = x^2 + y^2 subject to g(x,y) = x + y - 1 = 0
首先,定义拉格朗日函数:
L(x,y,λ) = f(x,y) - λ * g(x,y)
然后,求解 L(x,y,λ) 对 x、y 和 λ 的偏导数,令它们等于零,得到以下方程组:
∂L/∂x = 2x - λ = 0
∂L/∂y = 2y - λ = 0
∂L/∂λ = x + y - 1 = 0
解这个方程组可以得到最优解。以下是 MATLAB 代码示例:
```matlab
syms x y lambda;
% 定义目标函数和约束条件
f = x^2 + y^2;
g = x + y - 1;
% 定义拉格朗日函数
L = f - lambda * g;
% 求解偏导数,令其等于零
eq1 = diff(L, x) == 0;
eq2 = diff(L, y) == 0;
eq3 = diff(L, lambda) == 0;
% 解方程组,得到最优解
sol = solve([eq1, eq2, eq3], [x, y, lambda]);
% 输出结果
x_optimal = sol.x
y_optimal = sol.y
lambda_optimal = sol.lambda
```
运行这段代码会输出最优解 x、y 和 λ 的值。
阅读全文