笔记:Jensen不等式证明与MATLAB仿真注意点

B站影视 2025-02-23 18:38 1

摘要:如果能够证明f(x) 在xϵ(0, +∞) 是单调递减函数.那么原不等式成立。这其实是比原问题更具普遍性的命题。(因为原问题p,q是正整数,而这里x能取任意正实数。原问题是新问题的特例。)有时问题难以证明,跳出原问题证明更普遍的命题反而容易。用求导数方法证明函

目录

1 琴生不等式证明

2 MATLAB仿真注意点

2.1负数开根号会得复数解

2.2 欧拉法比龙格库塔法更可靠

正文

Jensen不等式有多种,共同点都是凸函数。这里指的是

证明

构造函数

如果能够证明f(x) 在xϵ(0, +∞) 是单调递减函数.那么原不等式成立。这其实是比原问题更具普遍性的命题。(因为原问题p,q是正整数,而这里x能取任意正实数。原问题是新问题的特例。)有时问题难以证明,跳出原问题证明更普遍的命题反而容易。用求导数方法证明函数单调递减。

因为 ln f(x) ∝ f(x), 而计算 ln f(x) 更容易。因此我们后面就考虑 ln f(x) 。

下面就要证明 g(x)是单调递减函数。用求导数法。

//利用ln是上凸函数的性质(另一个Jensen不等式)于是得到

//此处把分母乘积展开比分子多出很多项,因此分式

得证。

向量的1-范数大于2-范数大于无穷范数。是本定理的实例

其中

负数开根号会得到复数解

我们解方程一般都是想得到实数解。负数开根号也可以得到实数。例如

但是在Matlab里面,凡是负数开根号,默认的都是复变函数的运算,给出的都是复数根。

例如 -1 的复数表示:

的三个根分别是

Matlab给出的就是第一个复数根0.5000 + 0.8660i

Matlab程序运行窗口:

而我们一般需要实数根。这点一定要注意。我就多次掉坑。特此记录以免遗忘。

怎么让Matlab给出实数根呢?我们知道负数开根号还会得到负数。我们先对绝对值开根号再乘以-1即可.

于是对于任意实数x, Matlab开根号的通用公式是 sign(x)*(abs(x))^(p/q)

其中sign是符号函数,abs是绝对值函数。

MATLAB运行窗口:

欧拉法比龙格库塔法更可靠

微分方程的数值解法一般用四阶龙格库塔算法,优点是精度比较高,缺点是程序复杂。欧拉法的精度较低,但是程序简单。

但是!在某些参数剧烈变化的控制算法程序中,用龙格库塔方法会产生与实际方案不符的错误结果,误导开发者。对于滑模控制就一定要用欧拉法。某些自适应控制也应该使用欧拉法。某院士专门研究滑模控制,就曾说过滑模控制仿真应该用欧拉法。

究其原因,滑模控制里面有符号函数,它是可能跳变的。龙格库塔方法每一步长要计算四次函数值,最后加权平均得到每一步长的导数值。之前的四个值都是临时的导数值。函数中如果有符号函数,那么在这四个值中可能反复跳变,计算误差也可能造成错误的跳变。最终加权得到的结果可能是错误的。应该在每个步长符号函数保持不变。剧烈变化的参数也有同样问题。

用欧拉法不存在这个问题。一个步长计算一个导数值没有临时值。欧拉法精度较低的缺点可以用小的步长来弥补。仿真时用步长

本账号“星辰博士讲数学”专注大学理工科教育科研和数学思维训练。

如果本文对你有用,请关注作者。欢迎点赞评论转发收藏。

来源:正豪教育

相关推荐