lihaitao123 发表于 2013-9-27 14:17

duffing方程的高斯白噪声该怎么加呢


function dy=Dyt(t,y)
dy=zeros(2,1);
    dy(1)=y(2);
    dy(2)=-muu*y(2)+a*y(1)-betaa*y(1)^3+rm+f*cos(t);
其中rm表示高斯噪声,这里简单用正态随机数表示。rm=randn(1,100)
clc;
%数据的初始化
muu=0.25;
a=1;
betaa=1;
f=0.3;
不知道怎样用ode来求解使得每运算一步使得rm序列中数依次加载到方程中?。。。谢谢了
以前看到randn(size(t)),那种做数字信号可以,对微分方程求解是不适合的。

lihaitao123 发表于 2013-9-27 14:39

我找到一种,可以运行,就是太慢了。。
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=;%噪声
for i=1:100
=ode45(@duffin,t0,y0,[ ],P);%在ode算法中传递参数P到子函数
%计算结果T和Y,看你自己怎么保存,因为每次for循环得到的T和Y可能点数不同。
end

lihaitao123 发表于 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=;%噪声
for i=1:100
=ode45(@duffin,t0,y0,[ ],P);%在ode算法中传递参数P到子函数
%计算结果T和Y,看你自己怎么保存,因为每次for循环得到的T和Y可能点数不同。
end
可以运行就是速度较慢。。
页: [1]
查看完整版本: duffing方程的高斯白噪声该怎么加呢