声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2013|回复: 1

[综合讨论] 求解微分方程组,方程组中带有零均值的白噪声序列(很急)

[复制链接]
发表于 2010-11-3 16:25 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
微分方程如下(状态方程):
y1'=a*y1+b1*W(t)
y2'=c*y2+d*y1
其中W(t)为零均值的白噪声序列,求该方程在MATLAB中的解法,希望能给出详细的步骤,

点评

repeat!!!  发表于 2010-11-4 09:24
回复
分享到:

使用道具 举报

发表于 2010-11-11 04:53 | 显示全部楼层
一个例子:
马尔可夫链近似求解随机微分方程程序的Matlab程序
  1. function mecca_zj
  2. %马尔可夫链近似求解随机微分方程程序
  3. %最简单的情况,利用随机模拟的思想直接模拟飞行航迹。
  4. %利用多次模拟计算整体航迹空间分布的可能性

  5. %构建空间网格%%%%%%%%%%%%%%%%%
  6. M=500;
  7. N=1000;
  8. zMesh=repmat(0,[M N]);
  9. Max=50;
  10. %%%%%%%%%%%%%%%%%%%%%%%%%%%
  11. %模型参数和初值%%%%%%%%%%%%%%%%%%
  12. sigma=1;
  13. beita=1/5;
  14. lamga=1/(4*(sigma^2));
  15. X0=[-20;-30];
  16. derta=0.1;
  17. dertat=lamga*(derta^2);
  18. timef=40;
  19. stepMax=ceil(timef/dertat);
  20. %%%%%%%%%%%%%%%%%%%%%%%%%%%

  21. for i=1:Max
  22. %%%%%%%%%%%%%%%%%%%%%%%%%%%
  23. step=1;
  24. % 开始进入马尔可夫链的迭代过程
  25. X=X0;
  26. while(step<=stepMax)
  27.     % X=pointP(:,step);
  28. %     temp=(plan(step*dertat)+affine([0;0],step*dertat,0)*X);%无风场
  29.     temp=(plan(step*dertat)+affine(X,step*dertat,1));%存在仿射不变的风场
  30.     ekq=temp(1)/(2*(sigma^2)*(1-hfunction(X,beita)));
  31.     nkq=temp(2)/(2*(sigma^2)*(1-hfunction(X,beita)));
  32.     xkq=1/(lamga*(sigma^2)*(1-hfunction(X,beita)))-4;
  33.     ckq=2*cosh(-derta*ekq)+2*cosh(-derta*nkq)+xkq;
  34.    
  35.     pkl=exp(-derta*ekq)/ckq;
  36.     pkr=exp(derta*ekq)/ckq;
  37.     pkd=exp(-derta*nkq)/ckq;
  38.     pku=exp(derta*nkq)/ckq;
  39.     pko=xkq/ckq;
  40.     %%%%%%%%%%%%%%%%%%%%%%%%%
  41.    
  42.     seed=rand(1);
  43.     if(seed<pkl)
  44.         X=X+[-derta;0];
  45.     elseif(seed<pkl+pkr)
  46.         X=X+[derta;0];
  47.     elseif(seed<pkl+pkr+pkd)
  48.         X=X+[0;-derta];
  49.     elseif(seed<pkl+pkr+pkd+pku)
  50.         X=X+[0;derta];
  51.     else
  52.         X=X;
  53.     end
  54.    
  55.     J=round(N*(X(1)+30)/90);
  56.     I=round(M*(X(2)+50)/80);
  57.     if((I<=0)|(I>M))
  58.         I=M;
  59.     end
  60.     if((J<=0)|(J>N))
  61.         J=N;
  62.     end
  63.     zMesh(I,J)=zMesh(I,J)+1;
  64.     step=step+1;
  65. end
  66. %%%%%%%%%%%%%%%%%%%%%%%%%%%
  67. i
  68. end

  69. temp=max(max(zMesh));
  70. zMesh=255*zMesh/temp;
  71. zMesh=uint8(zMesh);
  72. imshow(zMesh);
  73. imwrite(zMesh,'概率图.bmp','bmp');
复制代码
  1. function v=plan(t)
  2. %飞行器的飞行计划,且与位置无关
  3. if(t<10)
  4.     v=[2;0];
  5. elseif(t<20)
  6.     v=[0;1];
  7. elseif(t<40)
  8.     v=[2;0];
  9. else
  10.     v=[0;0];
  11. end
复制代码
  1. function f=affine(x,t,flag);
  2. %风场的仿射变换矩阵函数

  3. if(flag)
  4.     R=(1/50)*[0 1;-1 0];
  5.     z=[3*t;(t.^2)/2];
  6. %     f=R*(x-z);
  7.     f=R*x;
  8. else
  9.     f=0;
  10. end
复制代码
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-25 01:45 , Processed in 0.069692 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表