matlab中提取微分方程某点的值,从随机微分方程解中提取某些参数的值

我在matlab中求解随机微分方程。

例如:

考虑随机微分方程

dx=k A(x,t)dt+ B(x,t)dW(t)

其中k是常数,A和B是函数,dW(t)是Wiener过程。

我在[0,20]中为所有t绘制解决方案。我们知道dW(t)是随机生成的。我的问题是:我想知道特定的t值和特定子区间的A(x,t),B(x,t),dW(t)的值,比如说[3,6]。我可以使用Matlab中的哪个命令?

以下是我根据D.Higham的论文使用的代码:

clear all

close all

t0 = 0; % start time of simulation

tend = 20; % end time

m=2^9; %number of steps in each Brownian path

deltat= tend/m; % time increment for each Brownian path

D=0.1; %diffsuion

R=4;

dt = R*deltat;

dW=sqrt( deltat)*randn(2,m);

theta0=pi*rand(1);

phi0=2*pi*rand(1);

P_initial=[ theta0; phi0];

L = m/ R;

pem=zeros(2,L);

EM_rescale=zeros(2,L);

ptemp=P_initial;

for j=1:L

Winc = sum(dW(:,[ R*(j-1)+1: R*j]),2);

theta=ptemp(1);% updating theta

phi=ptemp(2); % updating phi

%psi=ptemp(3); % updating psi

A=[ D.*cot(theta);...

0];% updating the drift

B=[sqrt(D) 0 ;...

0 sqrt(D)./sin(theta) ]; %% updating the diffusion function

ptemp=ptemp+ dt*A+B*Winc;

pem(1,j)=ptemp(1);%store theta

pem(2,j)=ptemp(2);%store phi

EM_rescale(1,j)=mod(pem(1,j),pi); % re-scale theta

EM_rescale(2,j)=mod(pem(2,j),2*pi); % re-scale phi

end

plot([0:dt:tend],[P_initial,EM_rescale],'--*')

假设我想知道每个特定时间点或任何时间间隔的所有参数(包括随机:布朗)。怎么做?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值