DSolveChangeVariables[dsolve,u,t,trans]
変換 trans を使って dsolve の解の関数を
に変える.
DSolveChangeVariables[dsolve,{u1,u2,…},t,trans]
系の解の関数を
に変える.
DSolveChangeVariables[dsolve,u,{t1,…,tn},trans]
偏微分方程式の解の関数を
に変える.
DSolveChangeVariables
DSolveChangeVariables[dsolve,u,t,trans]
変換 trans を使って dsolve の解の関数を
に変える.
DSolveChangeVariables[dsolve,{u1,u2,…},t,trans]
系の解の関数を
に変える.
DSolveChangeVariables[dsolve,u,{t1,…,tn},trans]
偏微分方程式の解の関数を
に変える.
詳細とオプション
- 変数の変更は微分方程式における係数を簡約するため,あるいは問題の対称性を利用するために微分方程式をより適切な極座標で表すためにしばしば用いられる.
- DSolveChangeVariablesを使って,単一の常微分方程式あるいは初期条件または境界条件がない偏微分方程式の変数が変更できる.
- 変数の変更は以下の連鎖律を
- 区間
上,あるいは - 領域
上で使って実行できる.
は関数
のその引数についてのヤコビアンを示す. - dsolve の可能な形はDSolveがサポートする形である.
-
DSolve[deq,y,x] 常微分方程式 DSolve[{deq1,…,deqn},{y1,…,yn},x] 微分方程式系 DSolve[deq,z,{x,y,…}] 偏微分方程式 - 未評価のDSolve[…]あるいはInactive[DSolve][…]を使うことができる.dsolve を評価しないことが重要なので,Inactivate[dsolve,DSolve]で生成されるInactive[DSolve][…]を使うとよいだろう.
- DSolveChangeVariablesは結果をInactive[DSolve][…]の形で返す.Activateを使って新たな座標で微分方程式を解く. »
- 変換 trans には次の形がある.
-
t==ϕ[x] ϕ[x]を t で置換する {u==ϕ[x,y,…],v==ψ[x,y,…],…} ϕ[x,y,…]を u で,ψ[x,y,…]を v で置換する等 chart1chart2 CoordinateChartDataからの名前付き座標系 - 変換
はその定義域上で微分可能であると仮定される. - 名前付きの座標系を使う際は,{oldsys,metric,dim}{newsys,metric,dim},{oldsysnewsys,metric,dim},および,より省略されたさまざまな形式を含むCoordinateTransformDataが取る任意の形で変換を入力することができる.
- 微分方程式の変数とパラメータの領域はAssumptionsを使って制限できる.
例題
すべて開く すべて閉じる例 (4)
DSolveChangeVariables[Inactive[DSolve][E^x Derivative[1][y][x] + y[x] == 0, y, x], u, t, t == E^x]Activate[%]DSolveChangeVariables[Inactive[DSolve][(Subscript[∂, η](η Derivative[1][f][η])/η) + (1 - (s^2/η^2)) f[η] - f[η]^3 == 0, f, η], g, ξ, η == Sqrt[(1 + ξ/1 - ξ)]]//SimplifyDSolveChangeVariables[Inactive[DSolve][Laplacian[f[x, y], {x, y}] == 0, f, {x, y}], f, {r, θ}, "Cartesian" -> "Polar"]//SimplifyDSolveChangeVariables[Inactive[DSolve][Log[x] Derivative[1][y][x] - y[x] == 0, y[x], x], u, t, t == Log[x]](u[t] /. First[Activate[%]]) /. t -> Log[x]DSolveValue[Log[x] Derivative[1][y][x] - y[x] == 0, y[x], x]スコープ (18)
常微分方程式 (6)
DSolveChangeVariables[Inactive[DSolve][Derivative[2][y][x] + f[x] Derivative[1][y][x] + ((f[x]^2/4) + (Derivative[1][f][x]/2) + a) y[x] == 0, y, x], u, x, y[x] == u[x] Exp[-(1/2) ∫f[x]ⅆx]]//Simplify変数
を変更して線形リッカティ(Riccati)方程式を常微分方程式に変換する:
DSolveChangeVariables[Inactive[DSolve][Derivative[1][y][x] + x^-a - 1 y[x]^2 == x^a, y[x], x], η, x, y[x] == (x^a + 1 Derivative[1][η][x]/η[x])]//SimplifyDSolveChangeVariables[Inactive[DSolve][x^2 Derivative[2][y][x] - (2 x Tan[x] - 1) x Derivative[1][y][x] - (x Tan[x] + a) y[x] == 0, y, x], u, x, y[x] == (u[x]/Cos[x])]//SimplifyDSolveChangeVariables[Inactive[DSolve][-4 E^x x^3 / 2 - (1 + 4 x^2) y[x] + 4 x Derivative[1][y][x] + 4 x^2 Derivative[2][y][x] == 0, y, x], η, ξ, {y[x] == (η[ξ]/Sqrt[x]), x == 2 I Sqrt[ξ]}]//SimplifyDSolveChangeVariables[Inactive[DSolve][Derivative[2][y][x] == 0, y[x], x], u, t, t == Cos[x]]
を次使って変数係数を持つ非線形常微分方程式を定数係数を持つ方程式に簡約する:
DSolveChangeVariables[Inactive[DSolve][{x^2 Derivative[1][y][x] Derivative[1][v][x] - v[x] == 0, x Derivative[1][y][x] - v[x] == 0}, {y, v}, x], {y, v}, t, x == E^t]偏微分方程式 (5)
DSolveChangeVariables[Inactive[DSolve][Subscript[∂, {t, 2}]u[x, t] == c^2 Subscript[∂, {x, 2}]u[x, t], u, {x, t}], {u}, {ξ, η}, {ξ == x - c t, η == x + c t}]//SimplifyDSolveChangeVariables[Inactive[DSolve][Subscript[∂, {t, 2}]u[x, t] == c^2 Subscript[∂, {x, 2}]u[x, t], u, {x, t}], {u}, {ξ, η}, {x == (ξ + η/2), t == -(ξ - η/2 c)}]//SimplifyDSolveChangeVariables[Inactive[DSolve][Subscript[∂, t]u[x, t] == Subscript[∂, {x, 2}]u[x, t], u, {x, t}], u, {ξ, t}, {x == ξ s[t]}]//SimplifyDSolveChangeVariables[Inactive[DSolve][Subscript[∂, t]y[x, t] - 2 Subscript[∂, x]y[x, t] == Exp[-(t - 1)^2 - (x - 5)^2], y, {x, t}], y, {ξ, η}, {ξ == t + (x/2), η == t}]//SimplifyDSolveChangeVariables[Inactive[DSolve][x^2 Subscript[∂, {x, 2}]u[x, y] - Subscript[∂, {y, 2}]u[x, y] + Subscript[∂, y]u[x, y] == 0, u, {x, y}], u, {s, t}, {s == x Exp[y], t == x Exp[-y]}]//SimplifyDSolveChangeVariables[Inactive[DSolve][Subscript[∂, x]u[x, y] - Subscript[∂, y]v[x, y] == 0, {u, v}, {x, y}], {u, v}, {ξ, η}, {x == x[ξ, η], y == y[ξ, η]}]//Simplify偏微分方程式と名前付きの座標系 (7)
3Dポアソン(Poisson)方程式を直交座標系から円柱座標系に変換する:
DSolveChangeVariables[Inactive[DSolve][Laplacian[u[x, y, z], {x, y, z}] == z^2(x^2 + y^2), u, {x, y, z}], u, {r, θ, Overscript[z, ~]}, "Cartesian" -> "Cylindrical"]//SimplifyDSolveChangeVariables[Inactive[DSolve][Laplacian[u[x, y, z, t], {x, y, z}] - (Subscript[∂, {t, 2}]u[x, y, z, t]/c^2) == 0, u, {x, y, z, t}], {u}, {r, θ, Overscript[z, ~], t}, Thread[{x, y, z} == CoordinateTransform["Cylindrical" -> "Cartesian", {r, θ, Overscript[z, ~]}]]]//SimplifyDSolveChangeVariables[Inactive[DSolve][f^(0, 0, 4)[x, y, z] + 2 f^(0, 2, 2)[x, y, z] + f^(0, 4, 0)[x, y, z] + 2 f^(2, 0, 2)[x, y, z] + 2 f^(2, 2, 0)[x, y, z] + f^(4, 0, 0)[x, y, z] == 0, f, {x, y, z}], {f}, {ρ, θ, ϕ}, "Cartesian" -> "Spherical"]//Simplifylap = Laplacian[f[r, θ, φ, t], {r, θ, φ}, "Spherical"]//SimplifyDSolveChangeVariables[Inactive[DSolve][lap == D[f[r, θ, φ, t], t], f, {r, θ, φ, t}], {f}, {x, y, z, t}, Thread[{x, y, z} == CoordinateTransform["Spherical" -> "Cartesian", {r, θ, φ}]]]//Simplify3Dシュレディンガー(Schrödinger)方程式を球座標系から円柱座標系に変換する:
DSolveChangeVariables[Inactive[DSolve][(-ℏ^2/2m)Laplacian[f[ρ, θ, φ], {ρ, θ, φ}, "Spherical"] + ρ^2f[ρ, θ, φ] == ℰ f[ρ, θ, φ], f, {ρ, θ, φ}], f, {r, ϕ, z}, "Spherical" -> "Cylindrical"]//SimplifyDSolveChangeVariables[Inactive[DSolve][Laplacian[u[x, y, z, w], {x, y, z, w}], {u}, {x, y, z, w}], {u}, {r, ϑ[1], ϑ[2], ϑ[3]}, "Cartesian" -> "Hyperspherical"]//FullSimplifyDSolveChangeVariables[Inactive[DSolve][Laplacian[f[θ, φ], {θ, φ}, {"Standard", {"Sphere", r}}] == r^2Cos[θ]Sin[θ], f, {θ, φ}], f, {x, y}, {"Standard" -> "Stereographic", {"Sphere", r}}]//FullSimplifyアプリケーション (6)
量子力学では,演算子
は
方向の角運動量の倍数である.方程式
を極座標に変換することでこれを示す:
DSolveChangeVariables[Inactive[DSolve][x Subscript[∂, y]u[x, y] - y Subscript[∂, x]u[x, y] == 0, u, {x, y}], {u}, {r, θ}, "Cartesian" -> "Polar"]//Simplifyコーシー・オイラー(Cauchy–Euler)方程式
について考える.変数の変更
を適用することで,この常微分方程式を定係数を持つ方程式に変換することができる:
DSolveChangeVariables[Inactive[DSolve][x^2 Derivative[2][y][x] + p x Derivative[1][y][x] + q y[x] == 0, y, x], y, t, x == E^t]//SimplifyDSolveChangeVariables[Inactive[DSolve][Derivative[2][y][x] + f[x] Derivative[1][y][x] + ((f[x]^2/4) + (Derivative[1][f][x]/2) + a) y[x] == 0, y, x], u, x, y[x] == u[x] Exp[-(1/2) ∫f[x]ⅆx]]//FullSimplify変形された方程式を
で割ると大幅に簡約された微分方程式になる:
MapAt[DivideSides[#1, E^-(1/2) ∫f[x]ⅆx, Assumptions -> E^-(1/2) ∫f[x]ⅆx != 0 ]&, %, 1]三次元熱方程式
の球対称解は線形常微分方程式に簡約できる.まず,方程式を球座標で書く:
D[f[r, t], t] == a^2Laplacian[f[r, t], {r, θ, φ}, "Spherical"]次に空間座標と時間座標の両方を組み合せる特異値
の関数に変形する:
DSolveChangeVariables[Inactive[DSolve][%, f, {r, t}], {g}, {u}, {f[r, t] == g[u], u == (r/Sqrt[t])}]~FullSimplify~(t u > 0)熱物質移動問題の方程式は
という形になる.ここで,
は定数,
は原点からの距離,
は極角の修正である.標準的な球座標から始めて,この方程式を局所座標で表し次にこれがポアソン(Poisson)方程式に簡約できることを示す.
が定数と等しいとし,DSolveChangeVariablesを使って極座標の表し方を変える:
DSolveChangeVariables[DSolve[Laplacian[H[r, θ], {r, θ, φ}, "Spherical"] == rhs, H[r, θ], {r, θ}], H, {r, μ}, μ == Cos[θ]]//Simplifylaplacian[H_, {r_, μ_}] = %[[1, 1]]DSolveChangeVariables[DSolve[laplacian[H, {r, μ}] == u (μ D[H[r, μ], r] + (1 - μ^2/r)D[H[r, μ], μ]), H[r, μ], {r, μ}], G, {r, μ}, H[r, μ] == G[r, μ]Exp[(u r μ/2)]]//SimplifyAddSides[DivideSides[First[%], -4r Exp[(u r μ/2)] , GenerateConditions -> False], (u^2 /4)G[r, μ]]//Simplify左辺は修正された球座標におけるラプラシアンで,これがポアソン方程式であることが確認できる:
First[%] == laplacian[G, {r, μ}]DSolveChangeVariables[Inactive[DSolve][-Subscript[∂, {x, 2}]u[x, t] + Subscript[∂, {t}]u[x, t] - Subscript[∂, {x}](x u[x, t]) == 0, u, {x, t}], {X, T}, {x, t}, u[x, t] == Exp[-(x^2/2)] X[x] T[t]]//SimplifyMapAt[Expand[(#/Exp[-(x^2/2)] X[x] T[t])]&, %, {{1, 1}}]特性と関係 (2)
DSolveChangeVariables[DSolve[Laplacian[f[θ, φ], {θ, φ}, {"Standard", {"Sphere", r}}] == r^2Cos[θ]Sin[θ], f, {θ, φ}], f, {x, y}, {"Standard" -> "Stereographic", {"Sphere", r}}]//FullSimplifyDSolveChangeVariablesは,事実上,CoordinateTransformDataの"Mapping"特性を使う:
DSolveChangeVariables[Inactive[DSolve][Laplacian[f[x, y], {x, y}] == 0, f, {x, y}], f, {r, θ}, "Cartesian" -> "Polar"]//SimplifyDSolveChangeVariables[Inactive[DSolve][Laplacian[f[x, y], {x, y}] == 0, f, {x, y}], f, {r, θ}, Thread[{x, y} == CoordinateTransformData["Polar" -> "Cartesian", "Mapping", {r, θ}]]]//Simplify考えられる問題 (1)
DSolveChangeVariablesは微分演算子を変換し,ここでは
を与えている:
DSolveChangeVariables[Inactive[DSolve][-y Subscript[∂, x]u[x, y] + x Subscript[∂, y]u[x, y] == 0, u, {x, y}], {u}, {r, θ}, "Cartesian" -> "Polar"]//SimplifyTransformedFieldは結果を正規直交基底で表し,ここでは
を与えているが,線形微分演算子はベクトル場として変換できる:
TransformedField["Cartesian" -> "Polar", {-y, x}, {x, y} -> {r, θ}]//Simplifyテクニカルノート
関連するガイド
-
▪
- 微積分
テキスト
Wolfram Research (2022), DSolveChangeVariables, Wolfram言語関数, https://reference.wolfram.com/language/ref/DSolveChangeVariables.html.
CMS
Wolfram Language. 2022. "DSolveChangeVariables." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/DSolveChangeVariables.html.
APA
Wolfram Language. (2022). DSolveChangeVariables. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/DSolveChangeVariables.html
BibTeX
@misc{reference.wolfram_2026_dsolvechangevariables, author="Wolfram Research", title="{DSolveChangeVariables}", year="2022", howpublished="\url{https://reference.wolfram.com/language/ref/DSolveChangeVariables.html}", note=[Accessed: 08-September-2026]}
BibLaTeX
@online{reference.wolfram_2026_dsolvechangevariables, organization={Wolfram Research}, title={DSolveChangeVariables}, year={2022}, url={https://reference.wolfram.com/language/ref/DSolveChangeVariables.html}, note=[Accessed: 08-September-2026]}