shenyongjun 发表于 2007-1-11 12:47

请教一个关于R-K积分的问题

在R-K法进行数值积分的时候,中间的变量好像只能在计算过程中显示出来,但是计算完毕以后就见不到了。现在我遇到这样一个问题,即计算过程中在计算t点的位移速度时,需要用到上一个时间点(t-deltat)的结果,如位移、速度等,而此时(t点时)已经没有上一个点(t-deltat)的结果了。怎么办?有没有什么办法能够解决这个问题?

zhlong 发表于 2007-1-11 16:10

你说的是不是延迟微分方程求解问题,好像ode23函数可以的,没做过,你试试!

shenyongjun 发表于 2007-1-11 16:48

不是延迟微分方程。是在计算过程中,每一步需要判断某一个条件,而这个条件要用到前面的点。比如计算到t点时,需要判断t-1和t-2点的位移乘积,如果为正,则继续计算,否则停止计算。楼上有什么好办法?

心灯 发表于 2007-1-11 18:08

这样特殊的要求,是不是matlab默认的几个ode命令实现不了?
ode用过不多,对于这样的问题感觉有点意思。

哦,一个可以替代的方式就是:
时间t在自己编写的程序里循环,每一个时间步调用一次ode求解,返回这一步的求解值之后,自己怎么处理都可以了,然后再进行下一个时间的循环。
看看是否可行?没有尝试,想象中是可以的。

hohoo 发表于 2007-1-11 18:41

可以把这个条件加入到你自己的方程中 用ode调用的时候 多一个输出结果 就可以了
最方便的就是自己编写runge-kutta程序 也不是很繁琐的

shenyongjun 发表于 2007-1-11 23:40

按照4楼的建议试了,可行,谢谢!
同时也感谢5楼的意见!但是我觉得如果自己用Matlab来编R-K法的程序就体现不出Matlab的优点了。

handb 发表于 2007-1-12 11:32

问一下,R-K法算完后为何没有计算结果(workspace中),在哪里还能看到计算结果,请解答,谢谢

xjzuo 发表于 2007-1-12 19:05

回复

建议先把你的计算代码贴出来, 否则很难猜到你的问题在哪里.

AaronSpark 发表于 2007-1-13 12:05

原帖由 handb 于 2007-1-12 11:32 发表
问一下,R-K法算完后为何没有计算结果(workspace中),在哪里还能看到计算结果,请解答,谢谢

function中的计算变量不显示在workspace
你可以返回你需要的的结果
页: [1]
查看完整版本: 请教一个关于R-K积分的问题