zearo 发表于 2007-7-22 20:24

数值计算中Poincare映射如何实现?

已知:
dx/dt=f(t,x,p)
假设f以2*pi为周期,即 f(t+2*pi,x,p)=f(t,x,p)
假设存在解x(t)=z(t,u,p), u为初始条件即, x(0)=z(0,u,p)=u.
由周期性定义Poincare映射
T: u--->T(u)=z(2*pi,u,p)
求:
F(u,p)=u - T(u)=0 的解.

我的问题: 微分方程解x(t)=z(t,u,p)通常无法解析表达,只能用数值积分方法得到数值解,也就是一串时间序列.
那么

(1) 这个Poincare映射如何表达?或者如何利用数值解得到Poincare映射后的值T(u)?

(2) 如果得到的T(u)是数值解,那么如何利用迭代算法如Newton法得到F(u,p)=u - T(u)=0 的解?

可以 Duffing系统为例

dx/dt = y;
dy/dt = -ky-x^3+b*cos(t) + b0;
k = 0.2; b=0.3; b0 = 0.1;

咕噜噜 发表于 2007-7-22 20:26

第一个问题搜索论坛,这个问题还是很简单的
第二个问题想问为什么要问迭代算法如Newton法

zearo 发表于 2007-7-22 20:54

找了一下论坛,第一个问题基本可以解决.
第二个不用迭代算法能怎么做呢?Newton法只是个例子,有什么好方法么?觉得也不能用两组时间序列 u 和 T(u) 作比较来找解啊

咕噜噜 发表于 2007-7-22 21:00

求F(u,p)=u - T(u)=0时某u的值吗?

zearo 发表于 2007-7-23 08:07

是啊,就是求方程的解 u. 是一篇文献上用Newton迭代法,但我在实现的时候有困难.好像有一点思路了.就是每次求解的时间均为2*pi,那么不就得到一对儿(u_i,T(u_i)),再根据牛顿法迭代循环.不知道行不行,先试试看,呵呵

咕噜噜 发表于 2007-7-23 08:49

u不是初始条件吗,不是确定值?看来是符号形式。T(u)是2pi时刻的庞加莱映射?应该是这样的吧?可是我看的感觉其实意义上来说你说的就相当于在时刻零和时刻2pi时位移之差,不包含庞加莱映射啊,难道我理解错了

[ 本帖最后由 无水1324 于 2007-7-23 08:50 编辑 ]

无水1324 发表于 2007-7-23 09:16

是两个时刻的截面点

zearo 发表于 2007-7-23 10:19

我的问题按照刚才的思路搞定了,怪自己没仔细琢磨,谢谢两位版主启发啦
这个精度对结果影响还挺大的,我用matlab编的,感觉精度高到1e-5时迭代次数就要350以上,是不是用c更快啊?没用过.matlab的好处是微分方程比较好解啊,而且矩阵操作比较方便.

还有
两个时刻截面点是不是可以说是以前在论坛里看见的闪频法啊,这个是Poincare映射么?如果不是,应该怎么取Poincare映射呢?我好像看过闪频法和Poincare映射是有区别的,区别在哪儿呢?

[ 本帖最后由 zearo 于 2007-7-23 10:23 编辑 ]

octopussheng 发表于 2007-7-23 12:41

我有个帖子是关于Poincare截面和闪频法区别的,可以参考一下
http://forum.vibunion.com/forum/thread-48429-1-1.html

不过我现在看Poincare截面的东西越多,思路越乱啊!
页: [1]
查看完整版本: 数值计算中Poincare映射如何实现?