matlab实现郎之万方程的粒子轨迹追踪

算是感恩回馈吧,因为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)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值