ItoProcess[{a,b},x,t]
伊藤過程
を表す.ただし,
である.
ItoProcess[{a,b,c},x,t]
伊藤過程
を表す.ただし,
である.
ItoProcess[…,{x,x0},{t,t0}]
初期条件
を使う.
ItoProcess[…,…,…,Σ]
共分散 Σ のウィナー(Wiener)過程
を使用する.
ItoProcess[proc]
可能な場合は常に proc を標準伊藤過程に変換する.
ItoProcess[sdeqns,expr,x,t,wdproc]
確率微分方程式 sdeqns,出力式 expr,状態 x,時間 t で指定され,過程 dproc に従う w によって駆動される伊藤過程を表す.
ItoProcess
ItoProcess[{a,b},x,t]
伊藤過程
を表す.ただし,
である.
ItoProcess[{a,b,c},x,t]
伊藤過程
を表す.ただし,
である.
ItoProcess[…,{x,x0},{t,t0}]
初期条件
を使う.
ItoProcess[…,…,…,Σ]
共分散 Σ のウィナー(Wiener)過程
を使用する.
ItoProcess[proc]
可能な場合は常に proc を標準伊藤過程に変換する.
ItoProcess[sdeqns,expr,x,t,wdproc]
確率微分方程式 sdeqns,出力式 expr,状態 x,時間 t で指定され,過程 dproc に従う w によって駆動される伊藤過程を表す.
詳細とオプション
- ItoProcessは伊藤拡散あるいは確率微分方程式としても知られている.
- ItoProcessは連続時間・連続状態のランダム過程である.
- ドリフト a が
次元ベクトルで拡散 b が
×
次元行列の場合,過程は
次元で
次元WienerProcessによって駆動される. - 係数 a および b によく使われる指定
-
a スカラー,b スカラー 
a スカラー,b ベクトル 
a ベクトル,b ベクトル 
a ベクトル,b 行列 
- 確率微分方程式
は積分方程式
として書かれることもある. - デフォルトの初期時間 t0 は0であるとみなされる.デフォルトの初期状態 x0 は0である.
- デフォルトの共分散 Σ は恒等行列である.
- 一般共分散 Σ については,ItoProcessは拡散行列 b を b.Σ1/2に変換することで過程を正規化する.Σ1/2は可能な場合は Σ の下コレスキー因子である. »
- 標準伊藤過程は,微分状態
の部分集合からなる出力
を持つ. - 標準ItoProcess形式に変換できる過程 proc には,OrnsteinUhlenbeckProcess,GeometricBrownianMotionProcess,StratonovichProcess,ItoProcessが含まれる.
- ItoProcessを標準形式に変換するためには,伊藤の補助定理が自動的に使われる.
- sdeqns における確率微分方程式は
の形式を取ることができる,ここで,
は \[DifferentialD]であり,
dd
を使って入力することができる.微分
と
は伊藤微分であると解釈される. - 出力式 expr は x[t] と t を含む任意の式でよい.
- 駆動する過程 dproc は標準伊藤過程に変換できる任意の過程でよい.
- 次は,ItoProcessの関連特性である.
-
"Drift" ドリフト項 "Diffusion" 拡散行列 "Output" 出力状態 "TimeVariable" 時間変数 "TimeOrigin" 時間変数の原点 "StateVariables" 状態変数 "InitialState" 初期状態値 "KolmogorovForwardEquation" Kolmogorov前進方程式(Fokker-Planckの方程式) "KolmogorovBackwardEquation" Kolmogorov後退方程式 "Derivative" 伊藤導関数 "FeynmanKacFormula" Feynman-Kacの公式から得られた偏微分方程式 - ItoProcessに特有のRandomFunctionにおけるMethod設定 »
-
"EulerMaruyama" オイラー・丸山(次数1/2,デフォルト) "KloedenPlatenSchurz" Kloeden–Platen–Schurz(次数3/2) "Milstein" Milstein(次数1) "StochasticRungeKutta" 3段階Rossler SRKスキーム(次数1) "StochasticRungeKuttaScalarNoise" スカラーノイズのための3段階Rossler SRKスキーム(次数3/2) - ItoProcessは,RandomFunction,CovarianceFunction,PDF,Expectation等の関数で使うことができる.
例題
すべて開く すべて閉じる例 (1)
proc = ItoProcess[ⅆx[t] == -x[t]ⅆt + Sqrt[1 + x[t] ^ 2]ⅆw[t], x[t], {x, 1}, t, wWienerProcess[]]RandomFunction[proc, {0., 5., 0.01}]ListLinePlot[%, Filling -> Axis]Mean[proc[t]]CovarianceFunction[proc, s, t]Plot3D[%, {s, 0, 5}, {t, 0, 5}, ColorFunction -> "Rainbow"]スコープ (19)
基本的な用法 (10)
確率微分方程式
からのドリフト
と拡散
でウィナー過程を定義する:
ItoProcess[{μ, σ}, {x, 0}, t]ItoProcess[WienerProcess[μ, σ]]ItoProcess[{μ, σ, c[x[t]]}, {x, 0}, t]ItoProcess[ⅆx[t] == μ ⅆt + σ ⅆw[t], c[x[t]], {x, 0}, t, wWienerProcess[]]ItoProcess[{{v, -x}, {0, 1}, x}, {{x, v}, {x0, v0}}, {t, 0}]ItoProcess[{ⅆx[t] == v[t] ⅆt, ⅆv[t] == -x[t]ⅆt + ⅆw[t]}, x[t], {{x, v}, {x0, v0}}, t, wWienerProcess[]]ItoProcess[{μ, σ, {x, x ^ 2}}, {x, 0}, t]ItoProcess[ⅆx[t] == μⅆt + σ ⅆw[t], {x[t], x[t] ^ 2}, {x, 0}, t, wWienerProcess[]]ItoProcess[{{y, -x}, {{1, 0}, {0, 1}}}, {{x, y}, {0, 0}}, t]ItoProcess[{ⅆx[t] == y[t]ⅆt + ⅆw1[t], ⅆy[t] == -x[t]ⅆt + ⅆw2[t]}, {x[t], y[t]}, {{x, y}, {0, 0}}, t, {w1WienerProcess[], w2WienerProcess[]}]Σ = {{1, 3 / 5}, {3 / 5, 1}};b = {{Subscript[σ, 1], Subscript[σ, 2]}};
proc = ItoProcess[{{1 - x[t]}, b, x[t]}, {{x}, {1 / 2}}, {t, 0}, Σ]正規化された過程は
と等しい拡散行列を持つ.
は正規化前の拡散行列である:
bnew = proc[[1, 2]]bnew == b.CholeskyDecomposition[Σ]ItoProcess[ⅆx[t] == Subscript[w, 1][t]ⅆSubscript[w, 2][t], x[t], {x, 0}, t, {Subscript[w, 1]WienerProcess[], Subscript[w, 2]WienerProcess[]}]確率微分方程式
および
に対応するベクトル過程
および
を定義する:
ItoProcess[{ⅆx[t] == Subscript[w, 1][t]ⅆSubscript[w, 2][t], ⅆy[t] == Subscript[w, 1][t]ⅆSubscript[w, 1][t]}, {x[t], y[t]}, {{x, y}, {0, 0}}, t, {Subscript[w, 1]WienerProcess[], Subscript[w, 2]WienerProcess[]}]noise𝒫[σ1_, σ2_, ρ_] = Refine[ItoProcess[{{0, 0}, {{σ1, 0}, {0, σ2}}}, {{w1, w2}, {0, 0}}, t, {{1, ρ}, {ρ, 1}}], -1 < ρ < 1];ItoProcess[{ⅆs[t] == μ s[t]ⅆt + Sqrt[r[t]]s[t]ⅆn1[t], ⅆr[t] == θ(μ - r[t])ⅆt + Sqrt[r[t]]ⅆn2[t]
}, {s[t], r[t]}, {{s, r}, {s0, r0}}, t, {n1, n2}noise𝒫[Subscript[σ, 1], Subscript[σ, 2], ρ]]さまざまなメソッドでItoProcessの経路のシミュレーションを行う:
proc = ItoProcess[{ⅆx[t] == v[t]ⅆt, ⅆv[t] == -x[t]ⅆt + ⅆn[t]}, x[t], {{x, v}, {1, 0}}, t, nWienerProcess[]]methods = {"EulerMaruyama", "Milstein", "StochasticRungeKutta", "KloedenPlatenSchurz", "StochasticRungeKuttaScalarNoise"};orders = {"order 1/2", "order 1", "order 1", "order 3/2", "order 3/2"};シミュレーションメソッドをRandomFunctionのオプションとして指定する:
paths = Table[RandomFunction[proc, {0., 2. Pi, 0.05}, 6, Method -> m], {m, methods}];Grid[Partition[MapThread[ListLinePlot[#1, PlotLabel -> Column[{#2, #3}], ImageSize -> 160]& , {paths, methods, orders}], UpTo[3]], Spacings -> 2]過程特性の抽出 (2)
proc = ItoProcess[ⅆx[t] == (μ - x[t])ⅆt + Sqrt[1 + x[t] ^ 2]ⅆw[t], x[t], {x, 1}, t, wWienerProcess[]]proc["Properties"]proc /@ {"Drift", "Diffusion"}proc["KolmogorovForwardEquation"]//TraditionalFormここではInactiveを使って偏導関数の展開を防いでいる.Activateを使って式を展開する:
Activate[%]//TraditionalFormproc["KolmogorovBackwardEquation"]//TraditionalForm関数
の伊藤導関数を計算する.出力はドリフト項と拡散項からなるリストである:
{mu, sig} = proc["Derivative", f[x[t], t]];TraditionalForm[mu]TraditionalForm[sig]特性"FeynmanKacFormula"は,解
が条件付き期待値
と終端条件
を満足する偏微分方程式を与える:
proc["FeynmanKacFormula"]//TraditionalForm一般化された状態には追加的な引数を与えることができる.特性"FeynmanKacFormula"は,追加引数
を与えられると解が条件付き期待値
と同じ終端条件を満足する偏微分方程式を与える:
proc["FeynmanKacFormula", α[x, t]]//TraditionalForm特性"FeynmanKacFormula"は,第3引数
があると解が条件付き期待値
と同じ終端条件を満足する偏微分方程式を与える:
proc["FeynmanKacFormula", α[x, t], β[x, t]]//TraditionalFormItoProcessでHestonモデルを定義する:
heston = ItoProcess[{{μ S[t], κ(θ - ν[t])}, {{ν[t]^1 / 2S[t], 0}, {0, σ ν[t]^1 / 2}}}, {{S, ν}, {Subscript[S, 0], Subscript[ν, 0]}}, t, {{1, 1 / 2}, {1 / 2, 1}}]heston["Drift"]heston["Diffusion"]heston["KolmogorovForwardEquation"]//TraditionalFormheston["KolmogorovBackwardEquation"]//TraditionalForm{mu, sig} = heston["Derivative", f[S[t], ν[t], t]];mu//TraditionalFormsig//TraditionalForm特殊伊藤過程 (5)
WienerProcessに対応する伊藤過程:
ItoProcess[WienerProcess[μ, σ]]GeometricBrownianMotionProcessに対応する伊藤過程:
ItoProcess[GeometricBrownianMotionProcess[μ, σ, x0]]BrownianBridgeProcessに対応する伊藤過程:
ItoProcess[BrownianBridgeProcess[σ, {Subscript[t, 1], a}, {Subscript[t, 2], b}]]OrnsteinUhlenbeckProcessに対応する伊藤過程:
ItoProcess[OrnsteinUhlenbeckProcess[μ, σ, θ, x0]]CoxIngersollRossProcessに対応する伊藤過程:
ItoProcess[CoxIngersollRossProcess[μ, σ, θ, x0]]過程スライス特性 (2)
Jacobi𝒫[x0_] := ItoProcess[ⅆx[t] == (1 / 2 - x[t])ⅆt + Sqrt[x[t](1 - x[t])]ⅆw[t], x[t], {x, x0}, t, wWienerProcess[]]Table[Cumulant[Jacobi𝒫[x0][t], r], {r, 1, 4}]Limit[%, t -> ∞]Table[Cumulant[UniformDistribution[], r], {r, 1, 4}]proc[{σ1_, σ2_}, {x0_, y0_}] = ItoProcess[ⅆx[t] == -(x[t] + y[t])ⅆt + σ1 ⅆw[t] && ⅆy[t] == -2x[t]ⅆt + σ2ⅆw[t], {x[t], y[t]}, {{x, y}, {x0, y0}}, t, wWienerProcess[]]PDF[proc[{1, -1}, {1 / 2, -1 / 4}][t], {x, y}]cov = Covariance[proc[{Subscript[σ, 1], Subscript[σ, 2]}, {x0, y0}][t], 1, 2]Collect[cov, E ^ _, Simplify]アプリケーション (11)
計算特性 (3)
Ornstein–Uhlenbeck過程
ともとになっているウィナー過程
の相互共分散を計算する:
joint𝒫 = ItoProcess[ⅆx[t] == θ(μ - x[t])ⅆt + σ ⅆw[t], {x[t], w[t]}, {x, x0}, t, wWienerProcess[]]Covariance[joint𝒫[t], 1, 2]過程
のモーメントを計算する.ただし,
は標準ウィナー過程である:
ItoProcess[ⅆx[t] == w[t] ^ 2ⅆt, x[t], {x, 0}, t, wWienerProcess[]]Table[Moment[%[t], r], {r, 0, 8}]スカラーノイズに駆動されたベクトル伊藤過程(ホワイトノイズに駆動された1D振動子):
proc = ItoProcess[{ⅆx[t] == v[t]ⅆt, ⅆv[t] == -x[t]ⅆt + ⅆn[t]}, x[t], {{x, v}, {1, 0}}, t, nWienerProcess[]]path = RandomFunction[proc, {0., 2. Pi, 0.05}, 12, Method -> "StochasticRungeKutta"];ListLinePlot[path]mf[t_] = Mean[proc[t]]vf[t_] = Simplify[Variance[proc[t]]]平均値関数と標準偏差帯を生成された経路とともにをプロットする:
Show[Plot[{mf[t] - Sqrt[vf[t]], mf[t] + Sqrt[vf[t]], mf[t]}, {t, 0, 2Pi}, Filling -> {1 -> {2}}], ListLinePlot[path], PlotRange -> All]マルチンゲール (3)
過程
がマルチンゲールである
と
の値を決定する.ただし,
は標準ウィナー過程である:
x𝒫 = ItoProcess[{0, 1, Exp[α w[t] + β t]}, {w, 0}, t]st𝒫 = ItoProcess[x𝒫]標準形式のゼロドリフト係数は,
がマルチンゲールになるための必要条件である:
Reduce[st𝒫[[1, 1]] == 0, {α, β}]ItoProcess[{0, {1, 1, 1}}, {x, 0}, {t, 0}]ItoProcess[ⅆx[t] == ⅆw1[t] + ⅆw2[t] + ⅆw3[t], x[t], {x, 0}, t, {w1WienerProcess[], w2WienerProcess[], w3WienerProcess[]}]2つのWiener過程によって駆動されたスカラー過程を構築する:
proc1 = ItoProcess[ⅆx[t] == (w1[t]/Sqrt[w1[t]^2 + w2[t]^2])ⅆw1[t] + (w2[t]/Sqrt[w1[t]^2 + w2[t]^2])ⅆw2[t], x[t], {x, x0}, t, {w1WienerProcess[], w2WienerProcess[]}]Integrate[Simplify[#.#&[proc1["Derivative", x[t]][[2, 1]]]], {t, 0, t}]Lévy条件によると,
はブラウン運動である.過程の平均は初期状態に等しい:
Mean[proc1[t]]モデリング (2)
熱変動の影響下での自由粒子のダイナミクスは,Langevin運動方程式
によってモデル化できる.ここで
は標準のWienerProcessであり,
は熱ノイズの強度である.ここでは,
は
にのみ依存し,速度の方程式に焦点を当てることができると想定されている.運動方程式の統合には,伊藤定式化とStratonovich定式化という一般的な2つの方法があるが,それらは次の方法で定義できる:
ito = ItoProcess[ⅆv[t] == -v[t]ⅆt + σ[v[t]]ⅆb[t], v[t], {v, vi}, t, bWienerProcess[]];str = StratonovichProcess[ⅆv[t] == -v[t]ⅆt + σ[v[t]]ⅆb[t], v[t], {v, vs}, t, bWienerProcess[]];
が定数のとき,2つの定式化は同一で,
のときに同じ定常分布に至る:
Limit[PDF[ito[t] /. {σ[v[t]] -> Sqrt[2]σ1}, v]//Simplify, t -> Infinity]Limit[PDF[str[t] /. {σ[v[t]] -> Sqrt[2]σ1}, v]//Simplify, t -> Infinity]
が速度に依存する場合は,WienerProcessの性質のために,
は非零の二次変動を持ち,2つの定式化は異なる結果をもたらす.Stratonovichの公式を伊藤の公式相当に変換する:
istr = ItoProcess[str]Stratonovichの定式化でのドリフトは伊藤の定式化でのドリフトとは異なる:
ito["Drift"]istr["Drift"]Gompertz曲線は,腫瘍の成長のような成長過程のモデリングによく使われる.成長過程の対数にガウスノイズを仮定すると,モデルを確率微分方程式として書くことができる:
proc = ItoProcess[ⅆX[t] == -α Exp[-α t]Log[X0 / K]X[t]ⅆt + σ X[t]ⅆW[t], X[t], {X, X0}, t, WWienerProcess[]]Mean[proc[t]]時点
における過程のスライス分布はLogNormalDistributionに従う:
PDF[proc[t], x]proc1 = proc /. {X0 -> 1, K -> 2, σ -> 0.1, α -> 0.3};sample = RandomFunction[proc1, {0, 10, 0.01}];ListLinePlot[sample, Filling -> Axis]同じ条件で1000個のサンプルを生成し,次に
における経路とスライスデータを可視化する:
samples = RandomFunction[proc1, {0, 10, 0.1}, 1000];GraphicsRow[{ListLinePlot[samples, ImageSize -> 250, PlotRange -> All,
AspectRatio -> 3 / 4, BaseStyle -> Directive[Thin, Opacity[0.5]], PlotRangePadding -> {{0, .25}, {.5, .5}}], Histogram[samples["SliceData", 10], Automatic, "PDF"]}]伊藤過程表現 (3)
ItoProcessを使って標準的なWienerProcessを表す:
wiener = ItoProcess[ⅆB[t] == ⅆw[t], B[t], {B, 0}, t, wWienerProcess[]]
はマルチンゲールである.伊藤の補題を使って
の導関数を計算する:
M = Exp[t / 2]Sin[B[t]];
{drift, diffusion} = wiener["Derivative", M]CoxIngersollRossProcessを作成し,ItoProcessでこれを表す:
cir = CoxIngersollRossProcess[5, 1, 1 / 2, 10];
proc = ItoProcess[cir]forward = Activate[proc["KolmogorovForwardEquation"]] /. { -> x, -> t, -> p}
,
における局所化された初期条件,ディリクレ境界条件で方程式を数値的に解く:
f[x_] = Exp[-100 (x - 10) ^ 2]Sqrt[200 / (2Pi)];
Plot[f[x], {x, 0, 30}, PlotRange -> All]//Quietsol = p /. First[NDSolve[{forward, p[0, t] == p[30, t] == 0, p[x, 0] == f[x]}, p, {x, 0, 30}, {t, 0, 1}, Method -> {"MethodOfLines", "SpatialDiscretization" -> {"TensorProductGrid", "DifferenceOrder" -> "Pseudospectral"}}]]Kolmogorov前進方程式の
における解をプロットし,これを閉じた形の密度関数と比較する:
Plot[{sol[x, 1], PDF[cir[1], x]}, {x, 0, 30}, PlotRange -> All]Animateで解のダイナミクスを可視化する:
Animate[Plot[sol[x, t], {x, 0, 30}, PlotRange -> {0, 0.3}], {t, 0, 1}, AnimationRunning -> False, TrackedSymbols :> t, SaveDefinitions -> True]GeometricBrownianMotionProcessをItoProcessで表す.ここで,
は無リスク金利を,
は変動性を表す:
proc = ItoProcess[GeometricBrownianMotionProcess[r, σ, x0]] /. { -> x, -> t}{drift, diffusion} = proc["Derivative", Exp[-r t]V[x[t], t]]古典的なブラック・ショールズ(Black–Scholes)方程式は,若干の単純化を加えてドリフトを0にすることで得られる:
(First[drift]Exp[r t] /. {x[t] -> x}//Simplify) == 0この方程式はFeynman–Kacの公式から直接得ることもできる:
bs = proc["FeynmanKacFormula", r] /. { -> V}DSolveでブラック・ショールズ方程式を記号的に解く:
DSolve[{bs, V[x, T] == H[x]}, V[x, t], {x, t}]特性と関係 (2)
StratonovichProcessをItoProcessに変換する:
StratonovichProcess[ⅆx[t] == a[t, x[t]]ⅆt + b[t, x[t]]ⅆw[t], x[t], {x, x0}, t, wWienerProcess[]]ItoProcess[%]StratonovichProcess[%]変換ウィナーはItoProcessに関連している:
𝒫1 = TransformedProcess[b[t] ^ 2, bWienerProcess[], t];
𝒫2 = ItoProcess[{0, 1, b[t] ^ 2}, b, t];{Mean[𝒫1[t]] == Mean[𝒫2[t]], Variance[𝒫1[t]] == Variance[𝒫2[t]]}考えられる問題 (2)
ItoProcessはランダムな初期条件をサポートしないので,表現することができない:
ItoProcess[OrnsteinUhlenbeckProcess[μ, σ, θ]]ItoProcess[ⅆx[t] == aⅆt + b x[t]ⅆy[t], x[t], {x, x0}, t, yOrnsteinUhlenbeckProcess[μ, σ, θ]]ItoProcess[OrnsteinUhlenbeckProcess[μ, σ, θ, Subscript[x, 0]]]ItoProcess[ⅆx[t] == aⅆt + b x[t]ⅆy[t], x[t], {x, x0}, t, yOrnsteinUhlenbeckProcess[μ, σ, θ, x0]]駆動された過程の初期時間はItoProcessにマッチする必要がある:
ItoProcess[ⅆx[t] == -x[t] ⅆt + ⅆw[t], x[t], {x, 1}, {t, 3}, wOrnsteinUhlenbeckProcess[0, 1, 1, 1]]//ProcessParameterQItoProcess[ⅆx[t] == -x[t] ⅆt + ⅆw[t], x[t], {x, 1}, {t, 0}, wOrnsteinUhlenbeckProcess[0, 1, 1, 1]]//ProcessParameterQテキスト
Wolfram Research (2012), ItoProcess, Wolfram言語関数, https://reference.wolfram.com/language/ref/ItoProcess.html (2016年に更新).
CMS
Wolfram Language. 2012. "ItoProcess." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2016. https://reference.wolfram.com/language/ref/ItoProcess.html.
APA
Wolfram Language. (2012). ItoProcess. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/ItoProcess.html
BibTeX
@misc{reference.wolfram_2026_itoprocess, author="Wolfram Research", title="{ItoProcess}", year="2016", howpublished="\url{https://reference.wolfram.com/language/ref/ItoProcess.html}", note=[Accessed: 02-November-2026]}
BibLaTeX
@online{reference.wolfram_2026_itoprocess, organization={Wolfram Research}, title={ItoProcess}, year={2016}, url={https://reference.wolfram.com/language/ref/ItoProcess.html}, note=[Accessed: 02-November-2026]}