算是感恩回馈吧,因为matlab学习过程中在这个平台上也搜到了某些解决问题的办法。
直接上代码和效果图(for循环中的朗之万方程的随机力项是OU过程而非正态分布的随机力。)
T=50;dt = 1e-1; t=0:dt:T; d = sqrt(dt) ; alp=1.42;
ksi1 = normrnd(0,d,[1 length(t)]) ;x = zeros(1,length(t));
vx = zeros(1,length(t));eta1 = zeros(1,length(t));
ksi2 = normrnd(0,d,[1 length(t)]) ;y = zeros(1,length(t));
vy = zeros(1,length(t));eta2 = zeros(1,length(t));
for i = 1:length(t)-1
vx(1,i+1) = vx(1,i)-alp.*vx(1,i).*dt+eta1(1,i).*dt;
x(1,i+1) = x(1,i)+vx(1,i).*dt;
eta1(1,i+1) = (1-dt).*eta1(1,i)+ksi1(1,i);
vy(1,i+1) = vy(1,i)-alp.*vy(1,i).*dt+eta2(1,i).*dt;
y(1,i+1) = y(1,i)+vy(1,i).*dt;
eta2(1,i+1) =(1-dt).*eta2(1,i)+ksi2(1,i));
plot(x,y,'.',x(i),y(i),'o')
axis( [-10 10 -10 10] )
m(i)=getframe;
end
movie(m);
avi1=VideoWriter('gjdt2.avi');
avi1.FrameRate=50;
open(avi1);
writeVideo(avi1,m);
close(avi1)