声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2372|回复: 6

[编程技巧] 哈密顿正则方程的数值积分

[复制链接]
发表于 2008-7-9 11:07 | 显示全部楼层 |阅读模式
50体能
各位大侠请帮忙看看。小弟正在做一个哈密顿系统的正则运动方程积分的问题,采用了matlab中的ode函数对微分方程组进行积分运算(正则运动方程是微分方程组),但是得到的解并不能保持哈密顿系统的能量守恒,多数是表现为能量逐渐耗散的形式,如图能量的随时间变化的曲线,不知道大家有没有遇到过类似的情形,还请大家多多帮忙啊。 h-t2.jpg
嗯。可能我说的不太明白吧。也可以还原成这样的一个数学问题,就是说有一个满足一个约束条件的微分方程组,如何求解才能使求得的这样一组数值解尽可能的满足这么一个约束条件。举个例子,有这个一个微分方程组;
dx1/dt=x2;
dx2/dt=-x1;
满足的约束条件 E=1/2*x1^2+1/2*x2^2,E为一个常数,这是一个谐振子的哈密顿量和正则方程,根据哈密顿原理,由微分方程组解出来的随时间变化的数值解,应满足约束条件, E=1/2*x1^2+1/2*x2^2,但事实上得到的结果并非如此。我想是我的计算方法出现了问题,不知道大家有没有遇到过这样的关于约束条件的问题,有什么好的解决办法没有,请大家不吝赐教

[ 本帖最后由 ChaChing 于 2010-4-25 16:37 编辑 ]

评分

1

查看全部评分

回复
分享到:

使用道具 举报

发表于 2010-2-4 08:38 | 显示全部楼层

辛方法

关于这类问题不能用一般的RK方法,要用基于哈密顿系统建立的辛方法(冯康提出的)或者是李群上的数值方法。没做过具体的问题,详细的内容可以在网上查到。

点评

赞成: 5.0
赞成: 5
正解!yangzhanwen兄台功底深厚,要常来交流啊!  发表于 2010-12-20 21:32

评分

1

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2010-12-20 19:15 | 显示全部楼层
多谢提醒,
回复

使用道具 举报

发表于 2010-12-20 21:33 | 显示全部楼层
回复 3 # zhailiangjun 的帖子

问一下啊,你开始使用辛方法了么?如果是的话,用的是什么编程语言?
回复

使用道具 举报

 楼主| 发表于 2010-12-21 09:37 | 显示全部楼层
回复 4 # Rainyboy 的帖子

没有,因为我能够用龙哥库塔的方法来做一部分,暂时的回避了这些问题,但是现在又不得不面对了。我不会这个辛算法,你有辛算法的程序吗?
回复

使用道具 举报

发表于 2010-12-21 09:40 | 显示全部楼层
回复 5 # zhailiangjun 的帖子

我还没到程序那一步呢,现在还在学习,呵呵。
我看的书是《力功能量与幸数学》,还有《弹性力学的幸数学方法》。
回复

使用道具 举报

发表于 2010-12-21 13:29 | 显示全部楼层
matlab里的rk方法是不能的,你可以查查文献,有保辛的rk方法,但好像是隐式的,也有改进的保辛性质比较好的(但不完全保辛)的伪辛算法。

评分

1

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-6-7 12:24 , Processed in 0.061160 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表