O Método de Euler-Maruyama é uma esquema numérico desenvolvido para resolver equações diferenciais estocásticas. O nome homenageia os matemáticos Euler e Maruyama, de duas gerações completamente diferentes. O método é somente uma extensão do método de Euler, sendo assim o nome.Logan, J. David and Wolesensky, Willian R. Mathematical methods in biology. Pure and Applied Mathematics: a Wiley-interscience Series of Texts, Monographs, and Tracts. John Wiley& Sons, Inc. 2009.
Exemplo: crescimento populacional estocásticos
Considere a equação diferencial estocásticas:
Abaixo segue o código em Matlab para resolvê-la, e logo abaixo segue algumas simulações ao lado da solução determinística.
function EulerMaruyama %This function applies the method of Euler-Maruyama for solving the %stochastic differential equation: dX(t)= rX(t)(1-X(t)/K)dt + %sigmaX(t)(1-X(t)/K)dW(t)
r=0.8;%growth rate K=100;%Carrying capacity sigma=0.9;%stochasticity coefficient T=15;%time for simulation N=400;%number of steps in the grid dt=T/N;%small intervals of time x0=10;%initial condition
X=x0;%state vector Xvector=x0;%list of state vectors
for t=1:N %this loop shall repeat until we achieve the end of the simulation X=X + r*X*(1 - X/K)*dt + sigma*X*(1- X/K)*sqrt(dt)*randn;% the SDE Xvector=[Xvector,X];%save current simulation
end
mean=x0; meanlist=x0;
for t=1:N %here is just the Euler method: x(t+dt)= x(t) + dt*f(x,t) % for solving dx/dt=f(x,t) mean=mean + r*mean*(1 - mean/K)*dt; meanlist=[meanlist, mean];
end
time=0:dt:T; plot(time, Xvector, time, meanlist) hold on
ylim([0,130]);
end
A saída do código segue abaixo
miniaturadaimagem|Um exemplo de como aplicar o método de Euler-Maruyama a uma equação diferencial estocástica
Ver também
Equações diferenciais estocásticas
Categoria:Equações diferenciais Categoria:Processos estocásticos Categoria:Leonhard Euler