【Matlab】变分法求控制器(有约束)

在上篇文章中的例子是属于没有约束条件的泛函极值问题,但是在实际的最优控制问题中,泛函J所依赖的函数往往会受到系统状态方程的约束。那么如果碰到这种问题的话,使用变分法是如何处理呢?

思路应该是这样的:应用拉格朗日乘子法,之后就可以将这种有约束条件的泛函极值问题转化为无约束条件的泛函极值问题。

拉格朗日问题

假如有一个系统,并列出其性能泛函如下:

首先,我们需要将其写成约束方程的形式:

引入一个拉格朗日乘子,构造一个增广泛函:

之后,可以将此增广泛函单独再定义为H函数,此H函数称作哈密尔顿函数(有的教材中叫做哈密顿函数)

也就是说,可以将加入拉格朗日乘子的增广函数H,再与x的微分结合,再写作H-。

H-是x,x的微分,u,乘子,还有时间t的函数,对所有的相关变量求欧拉方程,变可得到哈密顿正则方程与控制方程:

实例

接下来我们可以看一个例子来加深印象

首先,我们可以将此系统的状态方程以及边界写出来:

之后,构造哈密顿函数:

之后求出欧拉方程:

之后,可以写出各变量的通解,再根据边界条件,可以求出各通解的常数项,便可以得到最终的u:

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值