octopussheng 发表于 2006-12-26 11:02

把白噪声数据加入至微分方程求解

请问,有没有办法把白噪声数据写成z=x(t)的形式,写到微分方程里面再求解啊??

方程为:

y''=-z''-B*y-C*y'^2

请各位帮忙啦

octopussheng 发表于 2006-12-28 20:47

唉,怎么没人帮忙啊!!!郁闷中啊!!

happy 发表于 2006-12-29 20:20

既然是白噪声了怎么能写成z=x(t)的形式?理论上说不通

octopussheng 发表于 2006-12-29 20:44

就是想请教一下,能不能把它写入微分方程中进行求解啊??:'( :'(

octopussheng 发表于 2006-12-30 08:03

自己已经解决啦!呵呵

dc1hawk 发表于 2007-1-4 15:36

原帖由 octopussheng 于 2006-12-30 08:03 发表
自己已经解决啦!呵呵
能不能告知一下啊,我也有同问啊,那位仁兄指点一下啊!最好使用matlab原有的ode函数!

octopussheng 发表于 2007-1-5 15:16

我是参考这个例子做的:
如下的例子需要用到interp1 命令。 建立如下的微分方程函数:

% FUN2.M 带有数据集合的时变微分方程的例子
functionxdot = fun2 ( t, x, beta, omega, T, P )
pt = interp1 ( T, P, t );
xdot (2 ) = beta * x (2 ) – omega^2 * x (1) + pt ;
xdot (1 ) = x (2 );
xdot = xdot ( : );% 使得xdot是一列
% fun2.m 结束

在MATLAB中采用如下的形式调用这个函数:
beta = .1 ;
omega = 2 ;
A = .1 ;
w0 = 1.3 ;
theta = pi /4 ;
X0 = [ 0 1]’;
t0 = 0 ;
tf = 20 ;
T = t0 – eps : .1 : tf + theta +eps ;
P = A.* sin(w0 .*T –theta );
[ t, y ] = ode23 ( @ fun2 , [ t0, tf ], X0, [ ], theta, omega, T, P );
plot ( t, y (:,1));
hold on;
plot(t,y(:,2),'g');

octopussheng 发表于 2007-1-5 15:17

我在做的时候直接将T和P写成之前算出来的向量,写在方程的程序里面,这样是可行的

dc1hawk 发表于 2007-1-6 12:19

Thank you!
原来我是用自编的函数做的,做Monte-carlo的时候很慢,谢谢你的那个interp1 函数 ,
thany you!!

hellosnoopy 发表于 2011-5-15 16:43

感谢分享,刚好碰到类似问题了。先学习学习

lihaitao123 发表于 2013-9-27 13:29

octopussheng 发表于 2007-1-5 15:17 static/image/common/back.gif
我在做的时候直接将T和P写成之前算出来的向量,写在方程的程序里面,这样是可行的

oct,我用duffing系统这样得不到结果?
functionxdot=fun2(t,x,beta,T,P)
pt = interp1(T,P,t);
xdot(1)=x(2);
xdot(2)=0.1*x(2)+x(1)-beta*x(1)^3+f*cos(t)+pt ;
xdot=xdot(:);% 使得xdot是一列
% fun2.m 结束

clear all
clc
%在MATLAB中采用如下的形式调用这个函数:
beta =.1 ;
f =.1;
w0 =1.3;
X0=;
t0=0;
tf=50;
T=t0:.01:tf;
P=0.01*rand(1,length(T));
=ode23(@fun2,T,X0,[ ],T,P );
plot(t,y(:,1));
hold on;
plot(t,y(:,2),'g');

报错是 Not enough input arguments.
页: [1]
查看完整版本: 把白噪声数据加入至微分方程求解