vibration_zhang 发表于 2007-10-29 15:16

Matlab 用m文件采用ODE45与Simulink采用ODE45的运算结果异同??

我开始用M文件采用ODE45进行非线性微分方程求解,外部激励是一个Random,所以把外部激励参数传递到子函数里进行求解,但是计算过程比较慢
后来我用Simulink进行求解,同样采用ODE45方法,外部激励是相同的,但是两种方法算出的结果相差几个percent,按理来说,同样的条件,同样的方法,结果应该一致,所以我怀疑编程出了问题,可是找不出问题,只是怀疑是不是在子函数里调用外部激励时出了问题,请教高手:我的外部激励是用的randn函数,个数是时间段/时间步长,在子函数里要用到与每个时间点对应的一个Random数,所以我这样做的 floor(t/时间步长)+1,比如说在时间点2.5秒时调用的random是第2501的数,不知道这样做是不是真的会产生很大误差?

花如月 发表于 2007-10-29 15:26

换个确定性的激励试试看,随机的有时候不好说明问题

vibration_zhang 发表于 2007-10-29 16:03

谢谢,我试试,不过我最终还是要用随机的激励

yxzjs 发表于 2008-1-24 15:41

既然是随机激励,那么两次rand成的激励很可能不同(相同的概率很小),结果不同是必然的。

无水1324 发表于 2008-1-25 15:48

回复 4楼 的帖子

对,激励是随机的,结果不同是必然的,相同了才有大问题了

vibration_zhang 发表于 2008-2-19 10:50

我用的是randn函数生成的随机激励,但是我的m文件和simulink的随机激励产生的是一样的,这点我还是明白的

sigma665 发表于 2008-2-19 11:58

回复 6楼 的帖子

既然是随机的,当然每次产生的数都不会相同,所以你的外部激励就不一样了
页: [1]
查看完整版本: Matlab 用m文件采用ODE45与Simulink采用ODE45的运算结果异同??