取余运算的Lyapunov指数
2015-12-22 10:24
190 查看
一、取余运算
1、 画出取余运算的运动轨迹
问题:在50多步的时候,输出的结果与我们想象的有出入,并且导致之后的结果全为0。
原因:下图是x变量值的变化:
从表中可以发现在第43步时,已经产生了错误的结果,继而导致最终为0.
错误结果的产生与matlab中小数的存储方式有关
解决方案:为了消除有存储方式带来的误差,可以通过两种方式解决这个问题:
1、 通过使用取整函数roundn,对x进行百分位取整
2、 将数据扩大一个数量级,即令x为1-9之间的整数,在取余时,对10取余。
2、计算Lyapunov指数(仿真方式)
取N=100,x0=0.6,∆x=0.1,则x1=0.7,
当N取的很大时,Lyapunov指数越来越小。
二、用Lyapunov第一方法求局部稳定性
与第一题无关
特征值是一对实部为0的共轭复根,所以系统平衡状态0在李雅普诺夫意义下稳定。
1、 画出取余运算的运动轨迹
N=100; %给定迭代次数 x=ones(1,N)*0.6; %对x赋初值 for i=2:N x(i)=mod(2*x(i-1),1); end plot(x(2:N)) %从第二个点开始画图 xlabel('\fontsize{16}n') ylabel('\fontsize{16}x')
问题:在50多步的时候,输出的结果与我们想象的有出入,并且导致之后的结果全为0。
原因:下图是x变量值的变化:
从表中可以发现在第43步时,已经产生了错误的结果,继而导致最终为0.
错误结果的产生与matlab中小数的存储方式有关
解决方案:为了消除有存储方式带来的误差,可以通过两种方式解决这个问题:
1、 通过使用取整函数roundn,对x进行百分位取整
2、 将数据扩大一个数量级,即令x为1-9之间的整数,在取余时,对10取余。
N=100; %给定迭代次数 x=ones(1,N)*0.6; %对x赋初值 for i=2:N x(i)=roundn(mod(2*x(i-1),1),-2);%利用roundn函数取整到x的百分位 end plot(x(2:N)) %从第二个点开始画图 xlabel('\fontsize{16}n') ylabel('\fontsize{16}x')
2、计算Lyapunov指数(仿真方式)
取N=100,x0=0.6,∆x=0.1,则x1=0.7,
N=100; %给定迭代次数 delta=0.1; x0=ones(1,N)*0.1; %对x赋初值 x1=ones(1,N)*(0.1+delta); for i=2:N x0(i)=roundn(mod(2*x0(i-1),1),-2);%利用roundn函数取整到x的百分位 x1(i)=roundn(mod(2*x1(i-1),1),-2); end L=log(abs(x1(N)-x0(N))/delta)/(N-1) L = 0.0070
当N取的很大时,Lyapunov指数越来越小。
二、用Lyapunov第一方法求局部稳定性
与第一题无关
syms x y f=[y-x*(x^2+y^2);-x-y*(x^2+y^2)]; v=[x,y]; R=jacobian(f, v); %求雅克比矩阵 R=subs(R,[x,y],[0,0]); eig(R) %雅克比矩阵的特征值 ans = -i i
特征值是一对实部为0的共轭复根,所以系统平衡状态0在李雅普诺夫意义下稳定。
相关文章推荐
- UV动画贴图——更换表情
- 复制Android Studio 工程到其它电脑后遇到The SDK directory 'XXXX‘ does not exist.问题的解决方法
- Spring整合Quartz(JobDetailBean方式)
- Java中apache下面FTPClient主动模式和被动模式
- Linux命令中使用正则表达式
- 利用Swift之协议语法实现页面间的传值功能
- 项目分享七:客户端防止表单重复提交
- 内核参数说明
- JAVA工程师成神之路--基础篇(一)目录
- 使CMD.exe支持UNC路径
- yii2.0实现验证用户名与邮箱功能
- 一个关于NGUI的点击和按键响应的Bug
- codeforces 476C 推公式
- 时序分析:使用卡尔曼滤波
- for_each
- Centos修炼----->Centos7办公环境打造(No3 Office安装)
- maven时报错Dmaven.multiModuleProjectDirectory system propery is not set
- hibernate04 懒加载、抓取策略、二者结合、session详解、一级缓存、二级缓存、查询缓存
- IScroll5 参数说明和调用方法
- windows下mysql忘记root密码的解决办法