RSolve
詳細とオプション
- RSolve[eqn,a,n]は a の解を純関数として与える.
- この方程式は a[n+λ]の形式でオブジェクトを含むことができる.ただし,λ は定数あるいは a[ψ[n]], a[ψ[ψ[n]]], a[ψ[…[ψ[n]]…]]の形式の一般的なオブジェクトである.ψ は次のような形式を取ることができる.
-
n+λ 算術差分方程式 μ n 幾何方程式または
差分方程式μ n+λ 算術幾何関数差分方程式 μ nα 幾何ベキ関数差分方程式 
線形分数関数差分方程式 - 端末条件の指定のために,a[0]==val のような方程式を与えることができる.
- RSolveは,十分な端末条件が指定されていない場合は,未定定数を導入する一般的な解を返す.
- a∈Vectors[m]あるいは a∈Matrices[{m,p}]という指定を使って従属変数 a がベクトル値あるいは行列値の変数であることを示すことができる.a はVectorSymbolまたはMatrixSymbolとして指定することもできる. » »
- RSolveが導入する定数には連続する整数で指標が付けられる.オプションGeneratedParametersで各指標に適用する関数を指定する.デフォルトはGeneratedParameters->Cであり,これによって定数C[1], C[2], … が与えられる.
- GeneratedParameters->(Module[{C},C]&)は,たとえRSolveが別の機会に呼び出されても積分定数が一意的であることを保障する.
- 偏再帰方程式の場合,RSolveは任意の関数C[n][…]を生成する.
- RSolveが与える解はSumが明示的に実行できない総和を含むことがある.そのような総和には局所的な名前を持ったダミー変数が使われる.
- RSolveはSolveによる陰的な解を与えることがある.
- RSolveは常差分方程式と
差分方程式の両方を解くことができる. - RSolveは常差分方程式だけでなく差分代数方程式も扱うことができる.
- RSolveは定数係数を持つ任意の階数の線形再帰方程式を解くことができる.また,多くの非線形方程式に加え非定数係数を持つ二階までの線形方程式も解くことができる.
例題
すべて開く すべて閉じる例 (4)
RSolve[a[n + 1] - 2a[n] == 1, a[n], n]RSolve[{a[n + 1] - 2a[n] == 1, a[0] == 1}, a[n], n]RSolve[{a[n + 1] - 2a[n] == 1, a[0] == 1}, a, n]{a[n + 1] - 2a[n] == 1, a[0] == 1} /. %//SimplifyRSolve[a[n] == Sqrt[n]a[Sqrt[n]] + n, a, n]スコープ (40)
基本的な用法 (7)
RSolve[a[n + 1] == 3a[n], a[n], n]sol = RSolve[{a[n + 1] == 3a[n], a[0] == 1}, a[n], n]sol = RSolve[{a[n + 1] == 2 a[n] + 5, a[0] == 3}, a[n], n]DiscretePlot[a[n] /. sol[[1]], {n, 0, 10}]Table[a[n] /. sol[[1]], {n, 0, 10}]eqns = {a[n + 1] == 4a[n] + k E ^ n, a[0] == 3};sol = RSolve[eqns, a, n]eqns /. sol//SimplifyRSolve[a[n + 2] - 5a[n + 1] + 6a[n] == n, a[n], n]RSolve[{a[n + 2] - 5a[n + 1] + 6a[n] == n, a[0] == 1, a[1] == 3}, a[n], n]eqns = {a[n + 1] - b[n] == 2, a[n] - 3 b[n + 1] == 5, a[0] == 3, b[0] == 1};sol = RSolve[eqns, {a, b}, n]DiscretePlot[Evaluate[{a[n], b[n]} /. sol], {n, 0, 20}]eqns /. sol//SimplifyRSolve[7a[m + 1, n] - 6a[m, n + 1] == m, a[m, n], {m, n}]sol = a[m, n] /. %[[1]] /. C[1] -> CosDiscretePlot3D[sol, {m, 0, 15}, {n, 0, 15}]RSolve[a[n + 2] - 7a[n + 1] + 12a[n] == 1, a[n], n]RSolve[a[n + 2] - 7a[n + 1] + 12a[n] == 1, a[n], n, GeneratedParameters -> f]線形差分方程式 (7)
RSolve[{a[n + 1] == c a[n], a[0] == 1}, a, n]RSolve[a[n + 1] == (n ^ 2 - 1 / 4) / (n + 1) a[n], a[n], n]RSolve[a[n + 3] == 2a[n], a, n]RSolve[{a[n + 3] == 2a[n], a[0] == 1, a[1] == 2, a[2] == -1}, a, n]ListPlot[Table[a[n] /. First[%], {n, 15}], Filling -> Axis]RSolve[a[n + 2] - 4a[n + 1] + 3a[n] == n 4 ^ n, a[n], n]RSolve[ (n + 4) a[n + 2] - a[n + 1] - (n + 1)a[n] == 0, a[n], n ]RSolve[a[n + 2] == (n + 1)2 ^ n a[n], a[n], n]RSolve[2 a[n] - 2 n (-a[n] + a[n + 1]) + n (1 + n) (a[n] - 2 a[n + 1] + a[n + 2]) == 0, a, n]RSolve[(n + 2)a[n + 2] == (2 n + 3) x a[n + 1] - (n + 1) a[n], a, n]RSolve[a[n] == 2(1 + n) / (b + c z) a[n + 1] - a[n + 2], a[n], n]RSolve[a[n] == 2(n + 1) / n(c * z + d) a[n + 1] - (n + 2) / n a[n + 2], a, n]RSolve[ a[n + 2] + (2n + 1) a[n + 1] + n ^ 2 a[n] == 0, a[n], n ]RSolve[ y[k + 4] + 4y[k + 2] - 3 y[k + 1] + 2 y[k] == (2k^2 + 3k - 4) 2^3k, y[k], k ]非線形差分方程式 (5)
RSolve[a[n + 1] == 2(1 - a[n])a[n], a[n], n]RSolve[a[n + 1] == -2(1 - a[n])a[n], a[n], n]RSolve[a[n + 1] == 4(1 - a[n])a[n], a[n], n]RSolve[a[n + 1] == -(a[n] + 15) / (a[n] + 7), a[n], n]RSolve[ a[n + 1] a[n] - 2 a[n] + 2 == 0, a, n]RSolve[a[n + 1] == (40 + 21 a[n] - 24 a[n] ^ 2 + 4 a[n] ^ 3) / 9, a[n], n]RSolve[a[n + 1] == (-7300 + 9600 a[n] + 300 a[n] ^ 2 - 200 a[n] ^ 3 + a[n] ^ 4/2108 + 584 a[n] - 288 a[n] ^ 2 - 4 a[n] ^ 3 + a[n] ^ 4), a[n], n]RSolve[a[n + 1] == (-168 - 36 a[n] + 12 a[n] ^ 2 - a[n] ^ 3/-88 - 12 a[n] + 3 a[n] ^ 2), a[n], n]RSolve[ a[n + 2] == a[n + 1] a[n] ^ 2, a[n], n]RSolve[ a[n + 2] == b ^ n a[n + 1] a[n] ^ 2, a[n], n]RSolve[{a[n + 1] == Sum[a[m] a[n - m], {m, 0, n}], a[0] == 1}, a[n], n]差分方程式系 (8)
RSolve[{y[n + 1] + z[n] == 3, y[n] + 2 z[n + 1] == 1}, {y[n], z[n]}, n]RSolve[{y[n + 1] + z[n] == 3, y[n] + 2 z[n + 1] == 1, y[0] == 5, z[0] == 1}, {y, z}, n]ListPlot[Transpose @ Table[{y[n], z[n]} /. First[%], {n, 0, 15}], Filling -> Axis]RSolve[{y[n + 1] == (3y[n]/1 + y[n] + z[n]), z[n + 1] == (z[n]/1 + y[n] + z[n])}, {y[n], z[n]}, n]RSolve[{x[n + 1] == (x[n] + 3 y[n]/4 + x[n] + y[n] + z[n]), y[n + 1] == (y[n] + 2 z[n]/4 + x[n] + y[n] + z[n]), z[n + 1] == (z[n]/4 + x[n] + y[n] + z[n])}, {x[n], y[n], z[n]}, n]RSolve[{y[n + 1] == (n + 1) / 2 ^ n y[n], z[n + 1] == n ^ 2 z[n]}, {y[n], z[n]}, n]RSolve[ {-((1 + 3 n + n ^ 2) x[n]/n ^ 2) + x[n + 1] + (y[n]/n) + ((1 + 2 n) z[n]/n ^ 2) == 0, -y[n] + (n ^ 2y[n + 1] + (1 + 2 n) (-x[n] + z[n])/n ^ 2) == 0, (-x[n] + y[n] - n z[n] + n z[n + 1]/n) == 0}, {x, y, z}, n ]RSolve[{y[n + 1] + z[n + 1] == y[n] - 3z[n], y[n] + 2z[n] == 1}, {y[n], z[n]}, n]RSolve[{x[n + 1] == x[n] + 2y[n], y[n] == x[n] + 2 ^ n, x[n] + z[n] == 0}, {x[n], y[n], z[n]}, n]a = {{n, 1}, {1, 0}};RSolve[x[n + 1] == a.x[n], Element[x[n], Vectors[2]], n]
をVectorSymbolとして定義することもできる:
x = VectorSymbol["x", 2]RSolve[x[n + 1] == a.x[n], x[n], n]a = {{0, 1}, {-1, 0}};
x0 = {{1, 2}, {3, 4}};sol = RSolve[{x[n + 1] == a.x[n], x[0] == x0}, Element[x, Matrices[{2, 2}]], n];
x[n] /. sol[[1]]//MatrixForm
をMatrixSymbolとして定義することもできる:
x = MatrixSymbol["x", {2, 2}]sol = RSolve[{x[n + 1] == a.x[n], x[0] == x0}, x[n], n];
x[n] /. sol[[1]]//MatrixFormA = {{2, 1}, {-2, 0}};
B = {3t, 4}Exp[2t];RSolve[x[t + 1] + A.x[t] == B, Element[x[t], Vectors[2]], t]偏差分方程式 (3)
RSolve[a[m + 1, n] - 3 / 4a[m, n + 1] == 0, a[m, n], {m, n}]a[m, n] /. % /. C[1] -> Function[k, Sin[2k]]Plot3D[%, {m, 0, 10}, {n, 0, 10}, PlotRange -> All]RSolve[ a[m + 2, n] == 4a[m, n + 1], a[m, n], {m, n}]RSolve[ a[m + 3, n] - 3a[m + 2, n + 1] + 3a[m + 1, n + 2] - a[m, n + 3] == 0, a[m, n], {m, n}]RSolve[a[m + 4, n] - 4a[m + 3, n + 1] + 6a[m + 2, n + 2] - 4a[m + 1, n + 3] + a[m, n + 4] == 0, a, {m, n}]RSolve[a[m + 1, n] - 4a[m, n + 1] == 6m ^ 2 n + 4, a[m, n], {m, n}]RSolve[ a[m, n] - m a[m - 1, n - 1] == 0, a[m, n], {m, n}]RSolve[a[m, n] == m ^ 3a[m + 1, n + 1] , a, {m, n}]q差分方程式 (6)
RSolve[a[q n] == 2a[n], a[n], n]RSolve[a[n] == 2a[n / q], a[n], n]RSolve[{a[n] == 2a[n / q], a[1] == 1}, a[n], n]RSolve[a[q n] + a[n / q] == 0, a[n], n]RSolve[a[n] == a[n / q ^ 3], a, n]RSolve[a[q ^ 2 n] + a[n] == n, a[n], n]RSolve[{a[n] == 3 a[n / 2] + n, a[1] == 1}, a, n]ListPlot[Table[a[n] /. First[%], {n, 1, 10}], Filling -> Axis]RSolve[a[q n] == n a[n], a, n]RSolve[a[q ^ 2 n] == n a[n], a, n]RSolve[ a[q n] == a[n] ^ 2, a, n]RSolve[a[q n] == -(a[n] + 15) / (a[n] + 7), a[n], n]RSolve[{y[q ^ 2 n] - z[q n] == 0, z[q n] - 5 y[n] == 0}, {y[n], z[n]}, n]関数差分方程式 (4)
sol = RSolve[y[n + (1/3)] == 2 y[n + (1/6)] + n^2, y, n]y[n + 1 / 3] == 2y[n + 1 / 6] + n ^ 2 /. sol[[1]]//FullSimplifysol = RSolve[{y[n] == 2^n y[(n/2) + 1], y[3] == 4}, y, n]ListLogPlot[Table[y[n] /. First[sol], {n, 3, 10}], Filling -> Axis]sol = RSolve[{y[(2 n - 1/-n + 2)] == 3 y[n] + 5, y[4] == 3}, y, n]Table[y[n] /. sol[[1]], {n, 4, 10}]sol = RSolve[y[n] == Log[2, n] + 2 y[4 Sqrt[n]], y, n]y[n] == Log[2, n] + 2 y[4 Sqrt[n]] /. sol[[1]]//FullSimplify一般化と拡張 (1)
オプション (3)
GeneratedParameters (1)
Method (1)
RSolve[{a[n + 1] - 2a[n] == 0, a[0] == 1}, a[n], n]DifferenceRootによって解を取得する:
RSolve[{a[n + 1] - 2a[n] == 0, a[0] == 1}, a[n], n, Method -> "Holonomic"]Assumptions (1)
RSolve[{a[n + 2] == λ a[n], a[0] == 0, a[1] == 1}, a[n], n]Assumptionsを使ってパラメータ λ は正であると指定する:
RSolve[{a[n + 2] == λ a[n], a[0] == 0, a[1] == 1}, a[n], n, Assumptions -> λ > 0]Simplify[%]アプリケーション (11)
これは,利子 r が元本 p のみに対して払われたときに,年 n における金額 a[n]のモデルを出す:
RSolve[{a[n + 1] == a[n] + r p, a[0] == p}, a[n], n]//Factor以下では現在額 a[n]に対して利子が払われる,すなわち複利である:
RSolve[{a[n + 1] == (1 + r)a[n], a[0] == p}, a[n], n]ここでは,a[n]は n 枚の円板についての「ハノイの塔」問題で必要な移動回数を表している:
RSolve[{a[n + 1] == 2a[n] + 1, a[1] == 1}, a[n], n]ここでは,a[n]は n×3の空間を2×1のタイルで埋めるのに何通りあるかを表している:
RSolve[{a[n + 4] - 4a[n + 2] + a[n] == 0, a[1] == 0, a[2] == 3, a[3] == 0, a[4] == 11}, a, n]Table[Evaluate[a[n] /. First[%]], {n, 2, 20, 2}]//FullSimplifyRSolve[b[n] == b[n / 2] + 1 && b[1] == 1, b, n]RSolve[f[n] == 2 f[n / 2] + (3 / 2)n, f, n]RSolve[{e[n + 1] == 1 / n(Exp[-x] - x e[n]), e[1] == Gamma[0, x]}, e[n], n]RSolve[{i[n + 2] - 2Cos[ϕ]i[n + 1] + i[n] == 0, i[0] == 0, i[1] == Pi}, i[n], n]RSolve[{n a[n] == 2a[n - 2], a[0] == 1, a[1] == 0}, a[n], n]Table[Evaluate[a[n] /. First[%]], {n, 0, 10}]DSolve[{y'[x] == 2x y[x], y[0] == 1}, y[x], x]Series[y[x] /. First[%], {x, 0, 10}]SeriesCoefficient[Exp[x ^ 2], {x, 0, n}]Table[%, {n, 0, 10}]RSolve[{d[n + 2] == a d[n + 1] - b c d[n], d[1] == a, d[2] == a ^ 2 - b c}, d[n], n]Table[Evaluate[d[n] /. First[%]], {n, 2, 5}]//SimplifyTable[Det @SparseArray[{Band[{1, 1}] -> a, Band[{1, 2}] -> b, Band[{2, 1}] -> c}, {n, n}], {n, 2, 5}]これは,次元 n の単位球の表面積 s[n]のモデルである:
RSolve[{s[n + 2] == 2Pi / n s[n], s[2] == 2Pi, s[3] == 4Pi}, s[n], n]Table[s[n] /. First[%], {n, 2, 10}]RSolve[{v[n] == 2Pi v[n - 2] / n, v[2] == Pi, v[3] == 4 / 3Pi}, v[n], n]Table[v[n] /. First[%], {n, 2, 10}]RSolve[y[n + 1] == (1 / 2)(y[n] + 3 / y[n]) && y[0] == 1 / 5, y, n]Table[y[k] /. %[[1]], {k, 1., 6}]//ChopRSolve[ {(101 y[n]/100) - 2 y[n + 1] + y[n + 2] == 0, y[0] == 1, y[1] == 1}, y, n]Plot[Evaluate[y[k] /. First[%]], {k, 0, 10}]DSolve[ y''[x] + 1 / 100y[x] == 0 && y[0] == 1 && y[1] == 1, y, x]Plot[ Evaluate[y[x] /. First[%]], {x, 0, 10}]ksol = RSolve[ {t[n] == 3 t[n / 2 + 1] + n , t[3] == 1}, t, n ]DiscretePlot[{t[n] /. ksol, n ^ 2}, {n, 5, 300}, PlotLegends -> {"Karatsuba", "Schoolbook"}]特性と関係 (9)
RSolve[{a[n + 2] == a[n], a[0] == 1, a[1] == 2}, a, n]{a[n + 2] == a[n], a[0] == 1, a[1] == 2} /. %//SimplifySumに対応する差分方程式:
RSolve[a[n + 1] - a[n] == n ^ 2 && a[0] == 0, a[n], n]//ExpandSum[i ^ 2, {i, 0, n - 1}]//ExpandProductに対応する差分方程式:
RSolve[a[n + 1] == n a[n] && a[1] == 1, a[n], n]//FunctionExpandProduct[i, {i, 1, n - 1}]//FunctionExpandRSolveは,解についての規則を返す:
RSolve[a[n + 1] - 2a[n] == 1, a[n], n]RSolveValueは,解についての式を返す:
RSolveValue[a[n + 1] - 2a[n] == 1, a[n], n]RSolveは差分方程式の記号解を求める:
RSolve[{a[n + 1] == 2a[n] + 1, a[0] == 7}, a, n]Table[a[n] /. %[[1]], {n, 0, 7}]RecurrenceTableは,同じ問題についての手続き的解を生成する:
RecurrenceTable[{a[n + 1] == 2a[n] + 1, a[0] == 7}, a, {n, 0, 7}]FindLinearRecurrenceは,リストについての最小線形再帰を求める:
b = FindLinearRecurrence[Table[Fibonacci[k], {k, 7}]]RSolveは,再帰を満足する数列を求める:
RSolve[{a[n] == b.{a[n - 1], a[n - 2]}, a[1] == 1, a[2] == 1}, a[n], n]RecurrenceFilterを使って信号にフィルタをかける:
RecurrenceFilter[{{1, -(1/2)}, {1}}, {1, 0, 0, 0, 0, 0, 0, 0}]RSolveを使って対応する差分方程式を解く:
RSolve[{y[n] - (1/2)y[n - 1] == DiscreteDelta[n], y[-1] == 0}, y[n], n]Table[y[n] /. %[[1]], {n, 0, 7}]ARProcessに基づいて時系列の次の値を予測する:
proc = ARProcess[{a[2], a[1]}, v];TimeSeriesForecast[proc, {3, 5}]RSolveを使って同じ結果を得る:
sol = RSolve[{x[n + 1] == a[2] x[n] + a[1]x[n - 1], x[1] == 3, x[2] == 5}, x[n], n];x[n] /. sol[[1]] /. {n -> 3}//SimplifyRFixedPointsを使って2つの再帰方程式の系の固定点を求める:
RFixedPoints[{a[n + 1] - b[n] == 2, a[n] - 3 b[n + 1] == 5}, {a, b}, n]RStabilityConditionsを使って固定点の安定性を解析する:
RStabilityConditions[{a[n + 1] - b[n] == 2, a[n] - 3 b[n + 1] == 5}, {a, b}, n]sol = RSolve[{a[n + 1] - b[n] == 2, a[n] - 3 b[n + 1] == 5, a[0] == 1 / 2, b[0] == -3 / 2}, {a[n], b[n]}, n]sol = RSolve[{a[n + 1] - b[n] == 2, a[n] - 3 b[n + 1] == 5, a[0] == 3, b[0] == 1}, {a[n], b[n]}, n]DiscretePlot[Evaluate[{a[n], b[n]} /. sol], {n, 0, 20}]考えられる問題 (5)
RSolve[a[n + 1] == a[n] + f[n], a[n], n]RSolve[a[n + 1] == f[n]a[n], a[n], n]RSolve[{x[K + 1] == x[K] + Prime[K]}, x[K], K]RSolve[{x[C + 1] == x[C] + Prime[C]}, x[C], C]RSolve[{x[k + 1] == x[k] + Prime[k]}, x[k], k]RSolve[{x[c + 1] == x[c] + Prime[c]}, x[c], c]RSolve[a[n + 1] == 2a[n] && a[0] == 1, a, n]関数として,これは周期1の関数としてまでしか一意的ではない:
a[n + 1] == 2a[n] && a[0] == 1 /. a -> Function[n, 2 ^ n + a Sin[Pi n]]Simplify[ %, n∈Integers ]RSolve[a[n + 1] == a[n] ^ 2, a[n], n]RSolve[a[n + 1] == a[n] ^ 2 && a[1] == 3, a[n], n]eqn = Subscript[a, n + 1] - 2 Subscript[a, n] == 1;sol = RSolve[eqn, Subscript[a, n], n][[1]]Simplify[eqn /. (sol /. {Subscript[a, n] -> Subscript[a, n_]})]おもしろい例題 (1)
RSolve[{a[n + 1] == (2a[n] + 3/a[n] + 4), a[0] == 0}, a[n], n]Table[Evaluate[a[n] /. First[%]], {n, 0, 10}]NestList[(2 # + 3/1 # + 4)&, 0, 10]Apply[Composition, Table[(2 # + 3/1 # + 4)&, {10}]][0]テクニカルノート
関連リンク
履歴
2003 で導入 (5.0) | 2008 で更新 (7.0) ▪ 2022 (13.1) ▪ 2023 (13.3) ▪ 2025 (14.2)
テキスト
Wolfram Research (2003), RSolve, Wolfram言語関数, https://reference.wolfram.com/language/ref/RSolve.html (2025年に更新).
CMS
Wolfram Language. 2003. "RSolve." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2025. https://reference.wolfram.com/language/ref/RSolve.html.
APA
Wolfram Language. (2003). RSolve. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/RSolve.html
BibTeX
@misc{reference.wolfram_2026_rsolve, author="Wolfram Research", title="{RSolve}", year="2025", howpublished="\url{https://reference.wolfram.com/language/ref/RSolve.html}", note=[Accessed: 03-November-2026]}
BibLaTeX
@online{reference.wolfram_2026_rsolve, organization={Wolfram Research}, title={RSolve}, year={2025}, url={https://reference.wolfram.com/language/ref/RSolve.html}, note=[Accessed: 03-November-2026]}