ODE45调用的函数odefun只能有两个变量(t,y)吗
如果odefun中需要从主程序接受其他输入参数,比如m,c,k等等,如何实现?多谢! 本帖最后由 qibbxxt 于 2011-1-19 10:09 编辑
一个简单例子,供参考clear;clc;close all
lorenzeq=@(t,x,beta,rou,sig)[-beta*x(1)+x(2)*x(3);-rou*x(2)+rou*x(3);-x(1)*x(2)+sig*x(2)-x(3)];
beta=2;rou=5;sig=20;
t_final=100;
x0=;
=ode45(@(t,x)lorenzeq(t,x,beta,rou,sig),,x0);
PS:方法比较多,可以在ode45输入参数后面继续加参数,也可以用全局变量,也可以用内嵌函数共享变量 本帖最后由 vibration1996 于 2011-1-19 13:27 编辑
多谢指教!
在此基础上另一个问题:假设sig是随时间t变化的已知的量,如何修改上边这个程序?
比如说: t = 0,1,2,3,4,5
sig 对应这些时间点是一个无规律的测试得到数据:8, 29, 1,32,58
如何把这些无规律的实测数据传到ode里边去呢?
再次感谢!
我用sig(t/dt)来取sig对应的值,但是如果t采用的是变步长的,那么sig的值如何传
***这样做不对!
一个简单例子,供参考clear;clc;close all
lorenzeq=@(t,x,beta,rou,sig)[-beta*x(1)+x(2)*x(3);-rou*x(2)+rou*x(3);-x(1)*x(2)+sig*x(2)-x(3)];
beta=2;rou=5;sig=20;
t_final=100;
x0=;
=ode ...
qibbxxt 发表于 2011-1-19 10:08 http://forum.simwe.com/images/common/back.gif 3# vibration1996
那你传入一个向量就可以了啊
真是不明白你的意思
帮助文件里面介绍的很详细,如果方程中有f(t)的话,该怎么做,请lz仔细看看 搞定了,
但是除了t,y(或者叫t,x) 能否输出一些其他计算中产生的变量
这个一直不知道怎么弄,多谢!
[
quote] 3# vibration1996
那你传入一个向量就可以了啊
真是不明白你的意思
帮助文件里面介绍的很详细,如果方程中有f(t)的话,该怎么做,请lz仔细看看
qibbxxt 发表于 2011-1-19 13:39 http://forum.simwe.com/images/common/back.gif
页:
[1]