声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1273|回复: 8

[编程技巧] 请教一个关于R-K积分的问题

[复制链接]
发表于 2007-1-11 12:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

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

使用道具 举报

发表于 2007-1-11 16:10 | 显示全部楼层
你说的是不是延迟微分方程求解问题,好像ode23函数可以的,没做过,你试试!
 楼主| 发表于 2007-1-11 16:48 | 显示全部楼层
不是延迟微分方程。是在计算过程中,每一步需要判断某一个条件,而这个条件要用到前面的点。比如计算到t点时,需要判断t-1和t-2点的位移乘积,如果为正,则继续计算,否则停止计算。楼上有什么好办法?
发表于 2007-1-11 18:08 | 显示全部楼层
这样特殊的要求,是不是matlab默认的几个ode命令实现不了?
ode用过不多,对于这样的问题感觉有点意思。

哦,一个可以替代的方式就是:
时间t在自己编写的程序里循环,每一个时间步调用一次ode求解,返回这一步的求解值之后,自己怎么处理都可以了,然后再进行下一个时间的循环。
看看是否可行?没有尝试,想象中是可以的。
发表于 2007-1-11 18:41 | 显示全部楼层
可以把这个条件加入到你自己的方程中 用ode调用的时候 多一个输出结果 就可以了
最方便的就是自己编写runge-kutta程序 也不是很繁琐的
 楼主| 发表于 2007-1-11 23:40 | 显示全部楼层
按照4楼的建议试了,可行,谢谢!
同时也感谢5楼的意见!但是我觉得如果自己用Matlab来编R-K法的程序就体现不出Matlab的优点了。
发表于 2007-1-12 11:32 | 显示全部楼层
问一下,R-K法算完后为何没有计算结果(workspace中),在哪里还能看到计算结果,请解答,谢谢
发表于 2007-1-12 19:05 | 显示全部楼层

回复

建议先把你的计算代码贴出来, 否则很难猜到你的问题在哪里.
发表于 2007-1-13 12:05 | 显示全部楼层
原帖由 handb 于 2007-1-12 11:32 发表
问一下,R-K法算完后为何没有计算结果(workspace中),在哪里还能看到计算结果,请解答,谢谢


function中的计算变量不显示在workspace
你可以返回你需要的的结果

评分

1

查看全部评分

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

本版积分规则

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

GMT+8, 2024-11-12 14:45 , Processed in 0.064398 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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