Why Brownian Increments Need the Grid Length
A simulation grid turns a continuous-time SDE into a sequence of updates. The random input to each update is not an arbitrary normal error: it represents the change in a Brownian motion over that particular time interval. Its variance therefore depends on the interval length. Getting this scaling right is essential whether the grid is equally spaced, irregular, or used for several interacting pharmacokinetic compartments.
The construction below uses standard Brownian motion, as introduced in Stochastic Calculus. For an SDE driven by Brownian motion, Euler–Maruyama evaluates the drift and diffusion at the beginning of each grid interval and multiplies the diffusion by the Brownian increment for that interval. The resulting update is a discrete approximation to the SDE, not generally an exact transition.
The grid need not be regular. Each increment has variance equal to its own interval length, not to a single global step size. The square root in the construction is important: multiplying a standard normal by \(h_n\) would give variance \(h_n^2\), whereas multiplying by \(\sqrt{h_n}\) gives variance \(h_n\).
From Brownian Increments to an SDE Update
Consider the scalar SDE \(dX(t)=a(t,X(t))\,dt+b(t,X(t))\,dW(t)\). On an interval \([t_n,t_{n+1}]\), its integral form is \(X(t_{n+1})=X(t_n)+\int_{t_n}^{t_{n+1}}a(s,X(s))\,ds+\int_{t_n}^{t_{n+1}}b(s,X(s))\,dW(s)\). Euler–Maruyama approximates the two integrands by their values at the left endpoint. This gives the grid update below.
Here \(X_n\) is the simulated state at time \(t_n\). The random variable \(Z_n\) is generated afresh for each interval, independently of the previous Brownian increments. In an SDE model, \(X_n\) is determined by the information available by time \(t_n\); consequently, the new Brownian increment is independent of \(X_n\). This gives a useful check on the update’s one-step mean and variance.
To verify the result, write \(a_n=a(t_n,X_n)\) and \(b_n=b(t_n,X_n)\). Given the information at time \(t_n\), both are fixed. Since \(E[\Delta W_n]=0\), the conditional mean of \(a_nh_n+b_n\Delta W_n\) is \(a_nh_n\). Its conditional variance is \(b_n^2\operatorname{Var}(\Delta W_n)=b_n^2h_n\). This proves both statements. In particular, a simulation that gives a one-step noise variance proportional to \(h_n^2\) has used the wrong scaling. \(\square\)
Worked Example: A Scalar Concentration SDE
Consider \(dC(t)=-0.2C(t)\,dt+0.3C(t)\,dW(t)\), with \(C_0=10\), on a step of length \(h=0.25\). Suppose the sampled standard normal value for this step is \(Z_0=0.2\).
First construct the Brownian increment: \(\Delta W_0=\sqrt{0.25}(0.2)=0.5(0.2)=0.1\). Its distribution before observing the draw is \(N(0,0.25)\).
The drift contribution is \((-0.2)(10)(0.25)=-0.5\). The diffusion coefficient at the start of the step is \(0.3(10)=3\), so the stochastic contribution is \(3(0.1)=0.3\). Therefore \(C_1=10-0.5+0.3=9.8\).
Conditional on \(C_0=10\), the update has mean change \(-0.2(10)(0.25)=-0.5\) and variance \((0.3(10))^2(0.25)=2.25\). The particular draw gives a stochastic contribution of \(0.3\); it does not change the variance prescribed by the model.
Several Brownian Drivers and Compartment Systems
For a system with \(q\) independent Brownian drivers, generate \(q\) independent standard normal values on each interval and scale each by \(\sqrt{h_n}\). If \(X(t)\) is a \(d\)-component state, write its SDE as \(dX(t)=a(t,X(t))\,dt+B(t,X(t))\,dW(t)\), where \(W\) has \(q\) independent standard Brownian components and \(B\) is a \(d\)-by-\(q\) matrix. Its grid update is \(X_{n+1}=X_n+a(t_n,X_n)h_n+B(t_n,X_n)\Delta W_n\).
The conditional mean change is \(a(t_n,X_n)h_n\), and the conditional covariance matrix of the change is \(B(t_n,X_n)B(t_n,X_n)^\mathsf{T}h_n\). For correlated Brownian drivers with covariance matrix \(Q\) per unit time, use an increment with covariance \(h_nQ\); for example, if \(Q=LL^\mathsf{T}\), generate \(\Delta W_n=\sqrt{h_n}LZ_n\), where \(Z_n\) has independent standard normal components. The same correlation structure must be used at every step unless the model specifies otherwise.
Worked Example: A Two-Compartment PK Update
Let \(A_c\) and \(A_p\) denote central and peripheral amounts, with \(dA_c=(-0.1A_c-0.2A_c+0.1A_p)\,dt+0.05A_c\,dW_1\) and \(dA_p=(0.2A_c-0.1A_p)\,dt+0.1A_p\,dW_2\). Assume the two Brownian drivers are independent. At the start of a step, let \(A_c=100\), \(A_p=20\), and \(h=0.1\). Suppose \(Z_1=0.5\) and \(Z_2=-1\).
The two increments are \(\Delta W_1=\sqrt{0.1}(0.5)\approx0.158114\) and \(\Delta W_2=\sqrt{0.1}(-1)\approx-0.316228\). They are independent, each with variance \(0.1\).
The central drift rate is \(-0.1(100)-0.2(100)+0.1(20)=-28\), so its drift contribution is \(-28(0.1)=-2.8\). The central diffusion coefficient is \(0.05(100)=5\), giving stochastic contribution \(5(0.158114)\approx0.790570\). Thus \(A_{c,1}\approx100-2.8+0.790570=97.990570\).
The peripheral drift rate is \(0.2(100)-0.1(20)=18\), and its drift contribution is \(18(0.1)=1.8\). Its diffusion coefficient is \(0.1(20)=2\), giving stochastic contribution \(2(-0.316228)\approx-0.632456\). Thus \(A_{p,1}\approx20+1.8-0.632456=21.167544\).
Conditional on the starting state, the covariance matrix of the stochastic change is diagonal here, with entries \((5^2)(0.1)=2.5\) and \((2^2)(0.1)=0.4\). The off-diagonal entries are zero because the drivers are independent. Correlated drivers would generally produce nonzero off-diagonal entries.
Refining a Grid Without Changing Its Brownian Path
Independent increments are appropriate when simulating a new Brownian path on a chosen grid. But if a coarse interval is subdivided and the already simulated endpoint is to remain fixed, drawing two entirely new increments would generally change that endpoint. A Brownian bridge gives the conditional distribution of the finer increments given their sum.
For the derivation, before conditioning, \(\Delta W_1\) and \(\Delta W_2\) are independent normals with variances \(h_1\) and \(h_2\). Therefore \(D\) has variance \(h\), and \(\operatorname{Cov}(\Delta W_1,D)=h_1\). The conditional distribution formula for jointly normal variables gives conditional mean \(h_1D/h\) and conditional variance \(h_1-h_1^2/h=h_1h_2/h\). Defining the second increment as the difference makes the sum exactly \(D\), as required. \(\square\)
To simulate the split, draw an independent \(Z\sim N(0,1)\) and set \(\Delta W_1=(h_1/h)D+\sqrt{h_1h_2/h}\,Z\), then set \(\Delta W_2=D-\Delta W_1\). This construction is useful for grid refinement and for comparing calculations on nested grids: the fine increments agree with the previously generated coarse increment.
Worked Example: Splitting a Simulated Increment
Suppose the increment over a length-one interval is already fixed at \(D=0.2\), and the interval is split into lengths \(h_1=0.4\) and \(h_2=0.6\). The conditional mean and variance of the first increment are \((0.4)(0.2)/1=0.08\) and \((0.4)(0.6)/1=0.24\), respectively.
If the bridge draw is \(Z=0.5\), then \(\Delta W_1=0.08+\sqrt{0.24}(0.5)\approx0.08+0.244949=0.324949\). The second increment is \(\Delta W_2=0.2-0.324949=-0.124949\). Their sum is \(0.324949-0.124949=0.2\), exactly the original coarse increment. The individual fine increments are not independent conditional on their fixed sum.
Practical Checks, Alternatives, and Limitations
A simple implementation check is to generate many increments for each grid interval and examine their empirical means, variances, and pairwise correlations. Means should be near zero, variances near the corresponding \(h_n\), and increments on disjoint intervals should have near-zero empirical correlations. For multiple independent drivers, check cross-driver correlations as well. These are diagnostics for code, not proofs from a finite simulation; discrepancies can arise by chance, especially with few replicates.
The most common scaling mistake is to use \(\Delta W_n=h_nZ_n\). Its variance is \(h_n^2\), not \(h_n\), so the simulated stochastic variation is too small when \(h_n<1\) and too large when \(h_n>1\). Another mistake is reusing the same \(Z_n\) at every step. That creates dependent increments rather than the independent increments of Brownian motion. On an irregular grid, using one step length for all increments likewise gives the wrong interval-specific variances.
Euler–Maruyama is a convenient general-purpose grid update, but it is not the only approach. If a model has a tractable exact transition, sampling from that transition can avoid the left-endpoint approximation. More elaborate numerical schemes can improve accuracy under suitable conditions, but may require additional stochastic quantities beyond the Brownian increments used here. The appropriate choice depends on the model, the time scale, and the purpose of the simulation. In every case, correct increments are necessary, but they do not by themselves guarantee an accurate or biologically adequate simulation.
Compute each interval length \(h_n=t_{n+1}-t_n\), retaining the separate lengths if the grid is irregular.
For each interval and each independent Brownian driver, draw a fresh standard normal value.
Multiply each normal by \(\sqrt{h_n}\), then apply the appropriate scalar or vector SDE update.
Verify interval-specific variances, independence across intervals, and the intended cross-driver covariance.
Check Your Understanding
Work through each question, then compare your reasoning with the solutions.
- For an interval of length \(0.09\), what is the distribution of the Brownian increment? If \(Z=1.5\), what increment is generated?
- A scalar Euler–Maruyama step has \(h=0.2\) and diffusion coefficient \(b=4\) at the current state. What is the conditional variance of its stochastic change?
- For two independent Brownian drivers and \(h=0.25\), describe how to generate the two increments. What is their covariance?
- A length-one increment is \(D=0.3\) and the interval is split equally. State the conditional mean and variance of the first subincrement.
Solutions. (1) The increment has distribution \(N(0,0.09)\). Since \(\sqrt{0.09}=0.3\), the draw is \(0.3(1.5)=0.45\). (2) The conditional variance is \(b^2h=4^2(0.2)=3.2\). (3) Draw independent \(Z_1,Z_2\sim N(0,1)\) and set \(\Delta W_1=0.5Z_1\), \(\Delta W_2=0.5Z_2\). Each has variance \(0.25\), and their covariance is zero. (4) Here \(h_1=h_2=0.5\), \(h=1\). The conditional mean is \((0.5/1)(0.3)=0.15\), and the conditional variance is \((0.5)(0.5)/1=0.25\).