ベレの方法
ベルレ法の最初のステップ、 n = 1 {\displaystyle n=1} 、 t = t 1 = Δ t {\displaystyle t=t_{1}=\Delta t} で、 x → 2 {\displaystyle {\vec {x}}_{2}} を計算するためには t = t 1 {\displaystyle t=t_{1}} における位置ベクトル x → 1 {\displaystyle {\vec {x}}_{1}} が必要となる。初期条件は t 0 = 0 {\displaystyle t_{0}=0} に対してのみ所与なので、一見これは問題をはらんでいるようにみえる。しかし、加速度 a → 0 = A → ( x → 0 ) {\displaystyle {\vec {a}}_{0}={\vec {A}}({\vec {x}}_{0})} は既知であるため、最初のステップは2次までのテイラー展開を用いて計算することができる。
x → 1 = x → 0 + v → 0 Δ t + 1 2 a → 0 Δ t 2 ≈ x → ( Δ t ) + O ( Δ t 3 ) . {\displaystyle {\vec {x}}_{1}={\vec {x}}_{0}+{\vec {v}}_{0}\Delta t+{\tfrac {1}{2}}{\vec {a}}_{0}\Delta t^{2}\approx {\vec {x}}(\Delta t)+{\mathcal {O}}(\Delta t^{3}).
x 2 ( t + Δ t ) = x ~ 2 ( t + Δ t ) − 1 2 d 1 d 3 . {\displaystyle x_{2}^{(t+\Delta t)}={\tilde {x}}_{2}^{(t+\Delta t)}-{\frac {1}{2}}d_{1}d_{3}.}
ベルレ法は位置を直接力に関係づけるため、速度を用いて問題を解くよりも使いやすい。
しかし、各粒子に複数の拘束条件が課される場合、問題が起きる。この問題を解決するには、シミュレーションのタイムステップを小さくしたり、タイムステップごとに決まったステップ数の拘束緩和を行ったり、残差が特定の値を下回るまで拘束を緩和する、などの方法でシミュレーションを実装する。
拘束条件を1次までで局所近似する場合、これはガウス=ザイデル法と同等となる。行列が小さい場合、LU分解の方が速いことが知られている。大きな系もクラスター(例:ラグドール=クラスター)に分解できることがある。クラスター内ではLU分解を用い、クラスター間にはガウス=ザイデル法を用いればよい。行列のコードを再利用し、力の位置への依存性を1次局所近似することにより、ベルレ積分をより暗黙的にすることができる。
SuperLUを始めとした、疎行列を用いて複雑な問題を解くための洗練されたも存在する。また、例えば音波を形成することなく力を布を伝わらせるなどの特殊化された問題を取り扱うための特殊な技法もある。
ホロノミック拘束(英語版)を解くには、拘束条件(英語版)を扱えるアルゴリズムを用いる必要がある。
衝突に応答する一つの方法として、ペナルティに基く方法が挙げられる。この方法では基本的に衝突した点に力を加える。問題は、加える力をどのように決めるかである。力が強すぎると物体は不安定になり、弱すぎると互いに貫通してしまう。衝突に応答する別の方法としては投影法があり、衝突した物体を最小の移動距離で相手の物体の内部から出すように動かすことで衝突に応答する。
ベルレ法では、後者の方法で衝突した場合の速度が自動的に決定する。しかし、このことは衝突の物理が自動的に満たされる(すなわち運動量の変化が現実的なものとなる)ことを意味しない。速度項を暗黙的に変化させる代わりに、衝突した物体の最終速度を陽に(直前のタイムステップにおいて記録された位置を変化させることにより)制御する必要がある。
新しい速度を決める最も単純な方法として、完全弾性衝突もしくは完全非弾性衝突を仮定することが挙げられる。より複雑な制御方法では、反発係数を用いることもある。