无水1324 发表于 2007-7-21 11:15

碰撞求解

function dydt = vv(t,y)
dydt = ;

上面这个方程,假设给他加一个控制条件。
当位移x=0.5时候产生碰撞,然后反向。但是此时速度变为碰撞前的0.8倍。
请问用ode45求解的时候怎么控制?

octopussheng 发表于 2007-7-21 12:22

加一个判断语句,类似于分段线性函数的写法,不知道可不可行!

无水1324 发表于 2007-7-21 13:55

回复 #2 octopussheng 的帖子

这样不行

octopussheng 发表于 2007-7-21 14:39

那考虑在求解程序中添加判断语句,

想了下,还真不好实现!难哦!

是不是考虑做一个循环,在循环中加入一个判断语句,我再想想!

hohoo 发表于 2007-7-21 17:05

我这样考虑 给一个位移的误差 比如 0.5+(1e-5)和 0.5-(1e-5), 如果位移进入这个范围内,就反向 当然位移的误差越小越好 计算时间就长了:@)

无水1324 发表于 2007-7-21 17:36

原帖由 hohoo 于 2007-7-21 17:05 发表 http://www.chinavib.com/forum/images/common/back.gif
我这样考虑 给一个位移的误差 比如 0.5+(1e-5)和 0.5-(1e-5), 如果位移进入这个范围内,就反向 当然位移的误差越小越好 计算时间就长了:@)

想法是这样的,但是直接用ode45求解的时候是控制不住的

中原 发表于 2007-7-21 20:52

用fortran或c编个程序就ok,龙特库塔求解模块很好找,然后几条判断语句ok

octopussheng 发表于 2007-7-22 08:36

确实修改Runge-Kutta法计算程序比我们在这里想着怎么修改函数去让RK识别要好很多,呵呵!

在下面贴两个程序模块,一个是Fotran的,一个是C的,省得无水去找了!

直接作为模块使用,我测试过,没有问题的!

无水1324 发表于 2007-7-22 09:21

原帖由 octopussheng 于 2007-7-22 08:36 发表 http://www.chinavib.com/forum/images/common/back.gif
确实修改Runge-Kutta法计算程序比我们在这里想着怎么修改函数去让RK识别要好很多,呵呵!

在下面贴两个程序模块,一个是Fotran的,一个是C的,省得无水去找了!

直接作为模块使用,我测试过,没有问题的!

你说的是已经试着解决上面那个问题了?

octopussheng 发表于 2007-7-22 09:38

不是,我的意思是这两个模块我用别的方程算过,模块本身是没有问题的

但是里面还需要作些修改,像中原说的,加一些判断语句!

我这两天在算些东西,有些忙不过头,所以就不能帮着修改啦!

无水加油哦,呵呵!

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

已经想到一个比较笨的方法解决。就是直接自己编写一个定步长RK 法。如:
http://forum.vibunion.com/forum/viewthread.php?tid=32704&extra=page%3D1%26amp%3Bfilter%3Ddigest

octopussheng 发表于 2007-7-23 19:51

确实,这个因为是在计算过程中进行判断的,只能根据你的要求去修改RK方法了

xiejinling 发表于 2008-1-15 18:19

可以用解析法来做吧!但是我现在也还没有调出来!!

无水1324 发表于 2008-1-15 19:55

回复 13楼 的帖子

但是我这个解析解比较困难啊

beel 发表于 2008-12-12 22:35

请问碰撞需要哪些数学方面的知识
页: [1] 2
查看完整版本: 碰撞求解