|
楼主 |
发表于 2013-9-27 14:40
|
显示全部楼层
我找到一种,可以运行,就是太慢了。。
function dy=duffin(t,y,P)
wd=1;
f=1;
k=0.1;
dy(1)=y(2);
p=interp1(P(1,:),P(2,:),t);%循环步t时刻的噪声值
dy(2)=-k*y(2)+y(1)-y(1)^3+f*cos(wd*t)+p;
dy = dy ( : );
clc
clear all
%很简单的算法思想:让ode算法在迭代步的时刻读取到相应时刻点上的噪声值即可例如
t0=0:1:99;y0=[ 0 0];%时间与初值
randn('state',0)
P=[t0;rand(1,100)];%噪声
for i=1:100
[T Y]=ode45(@duffin,t0,y0,[ ],P);%在ode算法中传递参数P到子函数
%计算结果T和Y,看你自己怎么保存,因为每次for循环得到的T和Y可能点数不同。
end
可以运行就是速度较慢。。 |
|