Solve
詳細とオプション
- 系 expr は以下の任意の論理結合でよい.
-
lhs==rhs 等式 lhs!=rhs 左辺と右辺は等しくない lhs>rhs または lhs>=rhs 不等式 expr∈dom 領域指定 {x,y,…}∈reg 領域指定 ForAll[x,cond,expr] 全称記号 Exists[x,cond,expr] 存在記号 - Solve[{expr1,expr2,…},vars]とSolve[expr1&&expr2&&…,vars]は等価である.
- 単一の変数または変数のリストを指定することができる.
- Solveは,以下の形式の規則の形で解を与える.
-
{} 解はない {{x->solx,y->soly,…},…} 複数の解 {{}} 全次元の解集合 - 指定された変数が1つの場合,ある方程式で特定の根が1より大きい重複性を示すときは,Solveは相当する解の複数のコピーを返す.
- Solve[expr,vars]は,デフォルトで,不等式に代数的に現れる数量は実数値であるが,その他の数量は複素数値であると仮定する.
- Solve[expr,vars,dom]はすべての変数とパラメータが領域 dom に属するように制限する.
- dom がRealsであるかIntegersやRationalsのようにその部分集合である場合,すべての定数と関数の値もまた実数に限られる.
- Solve[expr&&vars∈Reals,vars,Complexes]は変数の実数値について解くが,関数の値は複素数値でもよい.
- Solve[expr,vars,Integers]は整数領域でディオファントス(Diophantine)方程式を解く.
- Solve[…,x∈reg,Reals]は,領域 reg 内になるような x を含んでいる.x についての異なる座標はIndexed[x,i]で言及することができる.
- expr 中の代数的変数で vars および互いを含まないものは,独立パラメータとして扱われる.
- Solveは主として線形方程式と整方程式を扱う.
- expr が実領域あるいは複素領域で整方程式と整不等式のみを含むとき,Solveは理論的には常に vars について直接解くことができる.
- expr が超越条件や整数領域を含むとき,Solveはその結果に追加的なパラメータを導入する.
- Solveは整数領域上のすべての線形方程式と不等式の解の明示的な表現を与えることができ,文献に見られるディオファントス方程式の大部分を解くことができる.
- expr が実数と複素数の領域上で多項式条件のみを含むとき,Solve[expr,vars]は常に限定子を除くことができる.
- Solveは一般的な解のみを与える.連続的なパラメータが方程式を満足する場合にのみ有効な解は除かれる.条件付きで有効なその他の解はConditionalExpressionオブジェクトとして表される.
- ConditionalExpressionの解に含まれる条件には,不等式,Element文,非連続的なパラメータについての方程式や非等式,全次元の解を持つ方程式が含まれることがある.連続パラメータと変数についての非等式とNotElement条件は除かれる.
- Solveは不等価変換を使って超越方程式の解を求める.このため,求まらない解があるかもしれず,求まった解の有効性についても厳密な条件が求められない場合もある.そのような場合はエラーメッセージが出される.
- Solveは,近似数値係数を持つ線形方程式の疎な系の扱いに特別の効率的な技術を用いることがある.
- 使用可能なオプション
-
Assumptions $Assumptions パラメータについての仮定 Cubics Automatic すべての三次方程式を解くために明示的な累乗根を使うかどうか GeneratedParameters C 生成されたパラメータにどのように命名するか InverseFunctions Automatic 記号的逆関数を使うかどうか MaxExtraConditions 0 連続パラメータにいくつの追加的方程式条件を許すか MaxRoots Infinity 返される根の最大数 Method Automatic どのメソッドを使うべきか Modulus 0 整数に対して取る法 Quartics Automatic 四次方程式を解くために明示的な累乗根を使うかどうか VerifySolutions Automatic 不等価の変換を使って得られた解を検証するかどうか WorkingPrecision Infinity 計算に使う精度 - MaxExtraConditions->Automaticとすると,連続パラメータについて最少数の方程式条件を必要とする解のみが含まれる.
- MaxExtraConditions->Allとすると,パラメータについての任意の条件を必要とする解がすべての条件とともにが与えられる.
- MaxExtraConditions->k とすると,連続パラメータについての最高で k 個の方程式条件を必要とする解のみが含まれる.
- Method->Reduceとすると,Solveは等価変換のみを用い,すべての解を求める.
- Solve[eqns,…,Modulus->m]は m を法とする整数上で方程式を解く.Modulus->Automaticとすると,Solveは方程式に解がある法で最大のものを求めようとする.
例題
すべて開く すべて閉じる例 (5)
Solve[x ^ 2 + a x + 1 == 0, x]Solve[a x + y == 7 && b x - y == 1, {x, y}]Solve[(x ^ 2 + 2)(x ^ 2 - 2) == 0, x, Reals]Solve[x ^ 2 + 2y ^ 3 == 3681 && x > 0 && y > 0, {x, y}, Integers]Solve[{x, y}∈InfiniteLine[{{0, 0}, {2, 1}}] && {x, y}∈Circle[], {x, y}]Graphics[{{Blue, InfiniteLine[{{0, 0}, {2, 1}}], Circle[]}, {PointSize[Large], Red, Point[{x, y}] /. %}}]スコープ (85)
基本的な用法 (6)
sol = Solve[x ^ 2 + y ^ 2 == 2 && x - y == 1, {x, y}]ReplaceAll (/.)を使って
を解で置換する:
x /. solx ^ 2 + y ^ 2 == 2 && x - y == 1 /. solSolveは{}を使って空の解すなわち解がないことを表す:
Solve[x == 1 && x == 2, x]Solveは{{}}を使って普遍解,すなわち方程式を満足するすべての点を表す:
Solve[x == x, x]Solve[(x ^ 4 - 1)(x ^ 4 - 4) == 0, x, Complexes]Solve[(x ^ 4 - 1)(x ^ 4 - 4) == 0, x, Reals]Solve[(x ^ 4 - 1)(x ^ 4 - 4) == 0, x, Integers]sol = Solve[x ^ 2 + y ^ 2 == 1 && x + y == a, {x, y}]yについての解の実部をパラメータaの関数としてプロットする:
Plot[Evaluate[Re[y /. sol]], {a, 0, 2}]実数上でのこの方程式の解には,パラメータについての制約が必要である:
sol = Solve[x ^ 2 + a x + b == 0, x, Reals]x ^ 2 + a x /. sol//SimplifyNormalを使って制約を除く:
Normal[sol]正の整数上でのこの方程式の解には,新たなパラメータの導入が必要である:
sol = Solve[x ^ 2 - 2y ^ 2 == 1 && x > 0 && y > 0, {x, y}, Integers]{x, y} /. First[sol] /. Table[{C[1] -> i}, {i, 10}]//Simplify一変数複素方程式 (15)
Solve[x ^ 4 - x ^ 2 - 5 == 0, x]一般的な公式を使って三次方程式を解きたければCubicsTrueと設定するとよい:
Solve[x ^ 3 - 2x ^ 2 + 5x + 7 == 0, x, Cubics -> True]デフォルトで,SolveはRootオブジェクトを使って数値係数を持つ一般的な三次方程式の解を表す:
Solve[x ^ 3 - 2x ^ 2 + 5x + 7 == 0, x]Solve[x ^ 5 - 2x + 17 == 0, x]Solve[(x ^ 2 - 1)(x ^ 4 - 1) == 0, x]Solve[x ^ 1234567 + 9x ^ 2 + 7x - 1 == 0, x, MaxRoots -> 5]Solve[a x ^ 2 + b x + c == 0, x]Solve[a x ^ 5 + b x + c == 0, x]Solve[Sqrt[x] + 3x ^ (1 / 3) == 5, x]Solve[Sin[x] == 1 / 3, x]Solve[x ^ (2a) + 2x ^ a + 1 == 0, x]Solve[(x ^ 5 - 1) ^ x == 0, x]Solve[ArcTan[1 / Sqrt[1 + x ^ 2], x / Sqrt[1 + x ^ 2]] == a, x]Solveは,ここではすべての解を求めることはできない:
Solve[5 == x * 2 ^ (x ^ 2), x]Solve[5 == x * 2 ^ (x ^ 2), x, MaxRoots -> 3]Solve[Sin[E ^ x] - Cos[2 x] == 1 && -1 ≤ Re[x] ≤ 1 && -1 ≤ Im[x] ≤ 1, x]Solve[Gamma[x] - Log[x] == I / 2 && Abs[x - 2] < 3 / 2, x]次では,Solveはいくつかの解を求めることはできるがそれ以外の解がないことは証明できない:
Solve[x == E ^ (1 / x) && Abs[x] < 5, x]Solve[Cos[Exp[x]] == 3 Exp[-x] + 1 && 0 ≤ Re[x] ≤ 1, x]Solve[Sin[FresnelS[x] + BesselJ[3, x ^ 2 - 1]] == 2 ^ Cos[x] - 3, x, MaxRoots -> 5]Solve[f[x] ^ 3 + 2f[x] - 3 == 0, x]Solve[{Re[x] + Im[x]^2 == 1, Re[x] - Im[x] == -1}, x]Solve[{Abs[x] == 1, Arg[x] == π / 4}, x]多変数複素方程式系 (12)
Solve[{x + 2y + 3z == 4, 3x + 4y + 5z == 6, 7x + 7y + 8z == 9}, {x, y, z}]Solve[a x + b y + c z == d && 3x + 4y + 5z == 6 && 7x + 7y + 8z == 9, {x, y, z}]Solve[x + 2y + 3z == 4 && 3x + 4y + 5z == 6 && 6x + 7y + 8z == 9, {x, y, z}]Solve[x + 2y + 3z == 4 && 3x + 4y + 5z == 6 && 6x + 7y + 8z == 0, {x, y, z}]Solve[x ^ 2 + y ^ 2 == 1 && x + 2y == 3, {x, y}]Solve[x ^ 10000 == y ^ 2 + 3y + 2 && y ^ 10000 == z ^ 2 + 3z + 2 && z ^ 10000 == x ^ 2 + 3x + 2, {x, y, z}, MaxRoots -> 5]Solve[a x ^ 2 + b y ^ 2 == c && x + 2y == 3, {x, y}]Solve[Sqrt[x y] == Sqrt[x + y] && Sqrt[x] - y ^ (1 / 3) == 1, {x, y}]Solve[Sin[x + y] == 1 && Log[x - y] == 1 / 2, {x, y}]Solve[3 ^ x ^ 2 == 7 && x ^ 2 - y ^ 3 == 4, {x, y}]Solve[x ^ a + y ^ b == 1 && (x y) ^ (a b) == 2, {x, y}]Solve[Sin[x + y] == x y + 1 && Cos[x - y] == AiryAi[x y] + 2, {x, y}, MaxRoots -> 3]Solve[FresnelS[x - y] - AiryAi[x] + y == (3 + I) / 2 && CosIntegral[x] y - Sin[x y] == -5(1 - I) / 4 && 1 ≤ Re[x] ≤ 2 && 0 ≤ Im[x] ≤ 1 && 1 ≤ Re[y] ≤ 2 && 0 ≤ Im[y] ≤ 1, {x, y}]Solve[{Re[x^2] + Im[y] == 1, x^2 - y^2 == 0, Im[x^3] - Im[y]^2 == 2}, {x, y}]一変数実数方程式 (13)
Solve[x ^ 5 - 2x + 1 == 0, x, Reals]Solve[(x ^ 2 - 1)(x ^ 4 - 1) == 0, x, Reals]Solve[x ^ 3 + a x + a ^ 2 == 0, x, Reals]Solve[Sqrt[x] + 3x ^ (1 / 3) == 5, x, Reals]Solve[Abs[x] ^ 2 - x + UnitStep[x] == 9, x, Reals]Solve[E ^ x - x == 7, x, Reals]Solve[ 27^2x - 1^(1/(x)) == Sqrt[9^2x - 1], x, Reals]Solve[JacobiSN[x, y] == 1, x, Reals]Solve[AiryBi[1 - x ^ 2] == 0 && 2 < x < 3, x, Reals]Solve[900 < AiryAiZero[2t + 1] ^ 2 < 1000, t, Reals]Solve[E ^ (2E ^ x) - Log[x ^ 2 + 1] - 20x == 11, x, Reals]Solve[x ^ 1000000 - 2x ^ 777777 + 3x ^ 12345 + 9x ^ 67 - 10 == 0, x, Reals]Solve[2x ^ (123451 / 67890) - x ^ 2 + 4Sqrt[x] - 4x - 9 / 8 == 0, x, Reals]Solve[x ^ Pi - x ^ x ^ Sqrt[2] - Sqrt[3]x + 2 ^ (1 / 3) == 0, x, Reals]Solve[E ^ (2x) + x ^ 4 + 4(x ^ 2 + 1) == (2x ^ 2 + 4)E ^ x, x, Reals]Solve[10Sin[Tan[E ^ -x ^ 2]] - x == 3, x, Reals]Solve[2Sin[Exp[x]] - Cos[Pi x] == 3 / 2 && -1 < x < 1, x, Reals]Solve[Cos[x] - BesselJ[5, x] == 1 / 2 && 0 ≤ x ≤ 10, x]Solve[Exp[Sin[x]] - Sin[3 Cos[x]] == 0, x, Reals]多変数実数方程式と不等式の系 (10)
Solve[2 x + 3y - 5z == 1 && 3x - 4y + 7z == 3, {y, z}, Reals]Solve[x y == z ^ 2 - x && x y z == 2 && x ^ 2 + y ^ 2 + z ^ 2 ≤ 5, {y, z}, Reals]Solve[Exists[x, x ^ 2 + a x + b == 0 && 2 x + a == 0], a, Reals]Solve[ForAll[x, Exists[y, a x ^ 2 + b y ^ 2 - 3y == 1 && y < 0 && a y - y == b + 1]], {a, b}, Reals]Solve[Sqrt[x + 2y] - 3x + 4y ≥ 5 && x + y ^ (1 / 3) == 1, y, Reals]Solve[Max[x, y] == Min[y ^ 2 - x, x] + y && z + UnitStep[x - y] == 1, {y, z}, Reals]Solve[Sin[x + y] == 1 / 2 && E ^ x - y ≤ 1, y, Reals]Solve[ 3^x - 2^2y == 77 && Sqrt[3^x] - 2^y == 7, {x, y}, Reals]Solve[E ^ x y ^ 3 + Log[x]y == 1 && x y + E ^ x / x ≥ 2, y, Reals]Solve[Exists[a, a x ^ 2 + Sinh[x ^ 2 + 1]a ^ 2 == 1 && x ^ 2 - a ^ 2 == 1], x, Reals]Solve[Sin[x - Cos[x]] y ^ 3 - x == 1 && x ^ 2 + y ^ 2 ≤ 1, y, Reals]Solve[Exists[y, y ^ 3 - Cos[x] y + 2 x ^ 2 Sin[x ^ 2 - 1] == 0 && x ^ 2 + y ^ 2 == 2], x, Reals]Solve[y ^ 3 - BesselJ[2, x + 2] y - y - 3 x == -2 && y < 0 && x ^ 2 < 2, y, Reals]Solve[Exists[y, y ^ 4 - Gamma[x + 2] y - y - 3 ArcSin[x / 3] == 1 && x ^ 2 + y ^ 3 == 1 && 0 < x < 2], x, Reals]Solve[Gamma[x + y + 1] - Sin[x y] == 1 && Erf[x ^ 2 - y] - E ^ y - x + 4 == 0 && 0 < x < 3 && 0 < y < 3, {x, y}, Reals]ディオファントス方程式 (11)
Solve[2 x + 3y - 5z == 1 && 3x - 4y + 7z == 3, {x, y, z}, Integers]Solve[2 x + 3y == 4 && 3x - 4y ≤ 5 && x - 2y > -21, {x, y}, Integers]Solve[x ^ 12345 - 2x ^ 777 + 1 == 0, x, Integers]Solve[x ^ 2 + x y + y ^ 2 == 109, {x, y}, Integers]Solve[x ^ 2 - 3y ^ 2 == 22 && x > 0 && y > 0, {x, y}, Integers]Solve[x ^ 2 - 6 x y + 9y ^ 2 - x + 2y == 1, {x, y}, Integers]Solve[x ^ 3 - 2x ^ 2 y + y ^ 3 == 2, {x, y}, Integers]Solve[x ^ 2 + 4y ^ 2 + 9z ^ 2 + 16t ^ 2 == 354 && x > 0 && y > 0 && z > 0 && t > 0, {x, y, z, t}, Integers]Solve[x ^ 2 + y ^ 2 == z ^ 2, {x, y, z}, Integers]Solve[x ^ 4 + y ^ 4 + z ^ 4 ≤ 500 && x + y ^ 2 + z ^ 3 == 32, {x, y, z}, Integers]Solve[2x ^ 7 + 8y ^ 15 + 14 x y z == 3, {x, y, z}, Integers]Solve[Exp[y ^ 2] < x && Abs[x] < 5 && Abs[y] < 5, {x, y}, Integers]Solve[Exp[x ^ 2 - 5y ^ 2 + 1] + x ^ 2 - 5y ^ 2 == 0 && x > 0 && y > 0, {x, y}, Integers]Solve[Mod[x ^ 2 + y ^ 2, 2] == 1 && Mod[x - 2y, 3] == 2, {x, y}, Integers]モジュール方程式 (4)
Solve[2 x + 3y - 5z == 1 && 3x - 4y + 7z == 3 && 2x - 10y + 3z == 5, {x, y, z}, Modulus -> 12]Solve[2 x + 3y - 5z == 1 && 3x - 4y + 7z == 3, {x, y, z}, Modulus -> 12]Solve[x ^ 3 - 2x + 1 == 0, x, Modulus -> 5]Solve[x ^ 2 + y ^ 3 == 1 && x + 2y ^ 2 == 4, {x, y}, Modulus -> 7]Solve[x ^ 2 + y ^ 3 == z && x + 2y == 3z + 1 && x y z ≠ 0, {x, y, z}, Modulus -> 7]Solve[ForAll[x, Exists[y, a x ^ 2 + b y ^ 2 - 3y == 1 && y ≠ 0]], {a, b}, Modulus -> 3]有限体上の方程式 (3)
ℱ = FiniteField[53, 4];
Solve[x ^ 5 + ℱ[123]x == ℱ[234], x]Solve[x ^ 7 + 2 x + 3 == 0, x, ℱ]ℱ = FiniteField[71, 2];
Solve[ℱ[123]x + ℱ[234]y == ℱ[345] && ℱ[321]x + ℱ[432]y == ℱ[543], {x, y}]Solve[ℱ[1234]x + ℱ[2345]y + ℱ[3456]z == ℱ[4567] && ℱ[1]x + ℱ[2]y + ℱ[3]z == ℱ[4], {y, z}]ℱ = FiniteField[7, 5];
Solve[x ^ 2 + y ^ 2 == 3 && x ^ 5 + y ^ 5 == 5, {x, y}, ℱ]Solve[ℱ[123]x ^ 2 + ℱ[234]y ^ 3 + ℱ[345]z ^ 4 == ℱ[456] && ℱ[21]x + ℱ[32]y ^ 2 + ℱ[43]z ^ 3 == ℱ[54] && x y z == ℱ[1], {x, y, z}]変数領域の混合系 (2)
幾何学領域制約がある系 (9)
Subscript[ℛ, 1] = Circle[];
Subscript[ℛ, 2] = Line[{{-2, 1}, {1, -2}}];Solve[{x, y}∈Subscript[ℛ, 1] && {x, y}∈Subscript[ℛ, 2], {x, y}]Graphics[{{Blue, Subscript[ℛ, 1], Subscript[ℛ, 2]}, {Red, Point[{x, y}] /. %}}]Subscript[ℛ, 1] = Sphere[];
Subscript[ℛ, 2] = InfinitePlane[{{0, 0, 0}, {0, 1, 0}, {1, 0, 1}}];Solve[2 x y == z^2 && {x, y, z}∈Subscript[ℛ, 1] && {x, y, z}∈Subscript[ℛ, 2], {x, y, z}, Reals]Show[{ContourPlot3D[2 x y == z^2, {x, -1.2, 1.2}, {y, -1.2, 1.2}, {z, -1.2, 1.2}, Mesh -> None, ContourStyle -> Opacity[0.5]], Graphics3D[{{Opacity[0.5], Green, Subscript[ℛ, 1]}, {Opacity[0.5], Yellow, Subscript[ℛ, 2]}, {PointSize[Large], Red, Point[{x, y, z} /. %]}}]}]ℛ = Cone[{{0, 0, 0}, {1, 2, 3}}, 4];Solve[Subscript[∃, z](x^2 + y^2 == z^2 && x + y == z - 1 && {x, y, z}∈ℛ), y, Reals]ℛ = ImplicitRegion[a + 2 b - 3 c ≥ 1 && a b c == 7, {a, b, c}];Solve[y^2 + x z == 1 && {x, y, z}∈ℛ, {y, z}, Reals]ℛ = ParametricRegion[{s + t, s - t, s t}, {s, t}];Solve[x y == z && x + 2 y + 3 z == 1 && {x, y, z}∈ℛ, {x, y, z}, Reals]Subscript[ℛ, 1] = Disk[{0, 0}, 2];
Subscript[ℛ, 2] = Circle[{1, 1}, 2];
Subscript[ℛ, 3] = RegionIntersection[Subscript[ℛ, 1], Subscript[ℛ, 2]];Solve[x^2 == x y + 1 && {x, y}∈Subscript[ℛ, 3], {x, y}, Reals]Show[{ContourPlot[x^2 == x y + 1, {x, -2, 3}, {y, -2, 3}], Graphics[{{Opacity[0.5], Yellow, Subscript[ℛ, 1]}, {Green, Subscript[ℛ, 2]}, {Red, Point[{x, y} /. %]}}]}]ℛ = RegionProduct[Circle[], Circle[]];Solve[Subscript[∃, {a, b}](4 x y a b == 1 && {x, a, y, b}∈ℛ), {x, y}, Reals]Subscript[ℛ, 1] = InfiniteLine[{{2, 0}, {0, t}}];
Subscript[ℛ, 2] = Circle[];Solve[{x, y}∈Subscript[ℛ, 1] && {x, y}∈Subscript[ℛ, 2], {x, y}, Reals]ℛ = RegionIntersection[Circle[], Line[{{-2, -1}, {1, 2}}]];Solve[x∈ℛ, x]ℛ = Sphere[];Solve[x.{1, 2, 3} == 0 && x.{-3, -2, -1} == 0 && x∈ℛ, x]一般化と拡張 (1)
オプション (28)
Assumptions (4)
Assumptionsを使ってパラメータについての条件を指定する:
Solve[x ^ 2 == a, x, Reals, Assumptions -> a > 0]Solve[x ^ 2 == a, x, Reals, Assumptions -> a < 0]デフォルトで,方程式を満足するのにパラメータを必要とする解は生成されない:
Solve[s == (2t) / (1 + t ^ 2) && c == (1 - t ^ 2) / (1 + t ^ 2), t]パラメータが仮定として与えられている方程式の場合は解が返される:
Solve[s == (2t) / (1 + t ^ 2) && c == (1 - t ^ 2) / (1 + t ^ 2), t, Assumptions -> s ^ 2 + c ^ 2 == 1]Solve[2 ^ x == 8, x, Assumptions -> x > 0]Assumptionsを使わない同等の文:
Solve[2 ^ x == 8 && x > 0, x]パラメータが離散集合に属すと仮定される場合は,任意の条件を含む解が返される:
Solve[a x ^ 2 + b x + c == 0, x, Assumptions -> Element[a, Integers]]Cubics (4)
デフォルトで,Solveは,記号的なパラメータが存在する場合にのみ,一般的な公式を使って三次方程式を累乗根で解く:
Solve[x ^ 3 + a x ^ 2 + 2 x + 3 == 0, x]数値係数がある多項式については,Solveは公式を使わない:
Solve[x ^ 3 + 2 x ^ 2 + 3 x + 4 == 0, x]Cubics->Falseとすると,Solveは決して公式を使わない:
Solve[x ^ 3 + a x ^ 2 + 2 x + 3 == 0, x, Cubics -> False]Cubics->Trueとすると,Solveは常に公式を使う:
Solve[x ^ 3 + 2 x ^ 2 + 3 x + 4 == 0, x, Cubics -> True]既約三次関数の実根は,casus irreducibilis(還元不能性)のためにその代数形にはIを含んでいる:
Solve[-61 + 110x - 60 x^2 + 10 x^3 == 0, x, Cubics -> True]N[%]N[%%, 20]デフォルト設定のCubicsAutomaticを使うと,明示的な実数の結果が取得できる:
Solve[-61 + 110x - 60 x^2 + 10 x^3 == 0, x]N[%]GeneratedParameters (1)
Solveは解を表すために新たなパラメータを導入することがある:
Solve[x ^ 2 - 3y ^ 2 == 1 && x > 0 && y > 0, {x, y}, Integers]GeneratedParametersを使ってパラメータが生成される方法を制御する:
Solve[x ^ 2 - 3y ^ 2 == 1 && x > 0 && y > 0, {x, y}, Integers, GeneratedParameters -> (Subscript[k, #]&)]InverseFunctions (3)
デフォルトで,Solveは逆関数を使うが警告メッセージを出力する:
Solve[f[x] == 0, x]Solve[x + E ^ x == 1, x]NumericFunction属性を持つ記号については,記号による逆関数は使われない:
Solve[Gamma[x] == a, x]InverseFunctions->Trueとすると,Solveは逆関数の警告メッセージを出力しない:
Solve[f[x] == 0, x, InverseFunctions -> True]Solve[x + E ^ x == 1, x, InverseFunctions -> True]Solve[Gamma[x] == a, x, InverseFunctions -> True]InverseFunctions->Falseとすると,Solveは逆関数を使わない:
Solve[f[x] == 0, x, InverseFunctions -> False]Solve[x ^ 2 + 1 == 0, x, InverseFunctions -> False]次では,逆関数を使う必要がないため,Reduceに基づいたメソッドが使われている:
Solve[x + E ^ x == 1, x, InverseFunctions -> False]MaxExtraConditions (4)
Solve[a == 0 && x == 0, x]Solve[a == 0 && x == 0, x, Integers]デフォルト設定のMaxExtraConditions->0では,条件が必要な解は返されない:
Solve[(x - a)(x - b) == 0 && (x - c)(x - d) == 0 && (x - a)(x - e) == 0, x]Solve[(x - a)(x - b) == 0 && (x - c)(x - d) == 0 && (x - a)(x - e) == 0, x, MaxExtraConditions -> 0]MaxExtraConditions->1とするとパラメータに関する方程式が1つ必要であるものまで返される:
Solve[(x - a)(x - b) == 0 && (x - c)(x - d) == 0 && (x - a)(x - e) == 0, x, MaxExtraConditions -> 1]MaxExtraConditions->2とすると,パラメータに関する方程式が2つ必要であるものまで返される:
Solve[(x - a)(x - b) == 0 && (x - c)(x - d) == 0 && (x - a)(x - e) == 0, x, MaxExtraConditions -> 2]Solve[(x - a)(x - b) == 0 && (x - c)(x - d) == 0 && (x - a)(x - e) == 0, x, MaxExtraConditions -> Automatic]Solve[(x - a)(x - b) == 0 && (x - c)(x - d) == 0 && (x - a)(x - e) == 0, x, MaxExtraConditions -> All]デフォルトで,Solveは連続パラメータについての非同値条件は除去する:
Solve[a x == 1, x]MaxExtraConditions->Allとすると,Solveがすべての条件を含むようになる:
Solve[a x == 1, x, MaxExtraConditions -> All]MaxRoots (4)
Solve[x ^ 12345 + x + 1 == 0, x, MaxRoots -> 3]Solve[x ^ 1000 == y ^ 3 + 1 && y ^ 1000 == z ^ 3 + 1 && z ^ 1000 == x ^ 3 + 1, {x, y, z}, MaxRoots -> 3]Solve[Sin[x + y] == 2x + 3y + 1 && AiryAi[x ^ 2 - y] == y ^ 2 - 1, {x, y}, MaxRoots -> 5]系に記号パラメータが含まれる場合はオプション値が無視される:
Solve[x ^ 4 == a, x, MaxRoots -> 3]Method (1)
Modulus (2)
Quartics (3)
デフォルトで,Solveは,記号的なパラメータがある場合についてのみ累乗根を使って四次方程式を解く際に一般的な公式を使う:
Solve[x ^ 4 + a x ^ 2 + 2 x + 3 == 0, x][[1]]記号係数がある多項式については,Solveは公式を使わない:
Solve[x ^ 4 + 2 x ^ 2 + 3 x + 4 == 0, x]Quartics->Falseのときは,Solveは決して公式を使わない:
Solve[x ^ 4 + a x ^ 2 + 2 x + 3 == 0, x, Quartics -> False]Quartics->Trueのときは,Solveは常に公式を使う:
Solve[x ^ 4 + 2 x ^ 2 + 3 x + 4 == 0, x, Quartics -> True][[1]]VerifySolutions (1)
Solveは不等値変換を使って得た解を検証する:
eqns = Sqrt[x + Sqrt[x]] == 2 && y ^ 9 - y - 2 x ^ (1 / 7) == 3;
(sol1 = Solve[eqns, {x, y}]);//TimingVerifySolutions->Falseとすると,Solveは解を検証しない:
(sol2 = Solve[eqns, {x, y}, VerifySolutions -> False]);//TimingVerifySolutions->Falseによって返される解には正しくないものもある:
Length /@ {sol1, sol2}(sol3 = Select[sol2, TrueQ[eqns /. N[#, 20]]&]);//Timingsol3 === sol1WorkingPrecision (1)
デフォルトで,Solveは方程式の厳密解を求める:
SeedRandom[0];
mat = Table[RandomInteger[{-10 ^ 100, 10 ^ 100}], {200}, {200}];
b = Table[RandomInteger[{-10 ^ 100, 10 ^ 100}], {200}];
vars = x /@ Range[200];
(sol = Solve[Thread[mat.vars == b], vars]);//Timing(sol1 = Solve[Thread[mat.vars == b], vars, WorkingPrecision -> 100]);//TimingMax[Abs[(vars /. sol) - (vars /. sol1)]](sol2 = Solve[Thread[mat.vars == b], vars, WorkingPrecision -> MachinePrecision]);//TimingMax[Abs[(vars /. sol) - (vars /. sol2)]]アプリケーション (7)
Solve[a x ^ 2 + b x + c == 0, x]pts = Solve[x ^ 2 + y ^ 2 == 1 && y - 2x ^ 2 + 3 / 2 == 0, {x, y}]Show[{ContourPlot[{x ^ 2 + y ^ 2 == 1, y - 2x ^ 2 + 3 / 2 == 0}, {x, -1.5, 1.5}, {y, -1.5, 1.5}], Graphics[{Red, PointSize[Medium], Point[{x, y} /. pts]}]}]f[x_] := x ^ 4 + a x ^ 3 + b x ^ 2 + c x + dSubresultantsを使った方法:
Solve[Thread[Drop[Subresultants[f[x], D[f[x], x], x], -1] == 0], {b, c, d}]Solve[Exists[x, f[x] == 0, ForAll[y, f[y] == 0, x == y]], {b, c, d}]curve = x ^ 2 + y ^ 2 + z ^ 2 == 1 && x ^ 3 + x y ^ 2 == z ^ 2;sol = Solve[curve, {y, z}, Reals]cond = Union[#[[2]]& /@ Cases[sol, _ConditionalExpression, Infinity]]{l, u} = N[{cond[[1, 1]], cond[[1, 5]]}]ParametricPlot3D[{x, y, z} /. sol, {x, l, u}]proj = Solve[Exists[z, curve], y, Reals]ParametricPlot[{x, y} /. proj, {x, l, u}]Solve[x ^ 2 + y ^ 2 == 5 ^ 2 && y > x > 0, {x, y}, Integers]Table[Solve[x ^ 2 + y ^ 2 == z ^ 2 && y > x > 0, {x, y}, Integers], {z, 30}]2ドル27セントの郵送料を,10セント,23セント,37セントの切手の組合せで払う方法を求める:
Solve[a 10 + b 23 + c 37 == 227 && a >= 0 && b >= 0 && c >= 0, {a, b, c}, Integers]IntegerPartitionsを使っても同じタスクを行うことができる:
IntegerPartitions[227, All, {37, 23, 10}]rts = Solve[Sin[x ^ 3] - x ^ 5 == 1, x, MaxRoots -> 200];ComplexPlot[Sin[x ^ 3] - x ^ 5 - 1, {x, -7.5 - 7.5I, 7.5 + 7.5I}, ...]特性と関係 (15)
eqns = {x ^ 2 + y ^ 2 == 1 && 2x + 3y == 4};
Solve[eqns, {x, y}]eqns /. %Solveは空の解すなわち解がないことを表すのに{}を使う:
Solve[x == 1 && x == 2, x]Solveは{{}}を使って普遍解すなわち方程式を満足するすべての点を表す:
Solve[x == x, x]一変数方程式については,Solveはその多重度に従って解を繰り返す:
Solve[(x - 1) ^ 2(x - 2) ^ 3 == 0, x]代数方程式の解は,しばしばRootオブジェクトで与えられる:
Solve[x ^ 5 - 2x + 7 == 0, x]N[%, 20]Rootオブジェクトはパラメータを含むことがある:
Solve[x ^ 5 + a x + 1 == 0, x]Seriesを使ってRootオブジェクトの級数展開を計算する:
Series[x /. %[[1]], {a, 0, 10}]x ^ 5 + a x + 1 /. x -> %Solveは置換規則によって解を表す:
Solve[x ^ 4 == 4, x]Reduceは方程式と不等式のブール値の組合せで解を表す:
Reduce[x ^ 4 == 4, x]Solveは高速のヒューリスティックを用いて超越方程式を解くが,解は不完全であるかもしれない:
Solve[x - E ^ x == 1, x]Solve[x Log[x] == a, x]Reduceは使うメソッドは遅いことが多いが,すべての解とすべての必要条件を求める:
Reduce[x - E ^ x == 1, x]Reduce[x Log[x] == a, x]FindInstanceを使って解の例を求める:
FindInstance[x ^ 2 + y ^ 2 + z ^ 2 == 1 && 2x y == z ^ 3, {x, y, z}]Reduceのように,FindInstanceにも不等式と領域指定を与えることができる:
FindInstance[x ^ 2 - 3y ^ 2 == 1 && 0 < x < 10 ^ 10, {x, y}, Integers, 3]DSolveを使って微分方程式を解く:
DSolve[y''[x] == -y[x], y[x], x]DSolve[{y''[x] == -y[x], y[0] == 0, y'[0] == 1}, y[x], x]RSolveを使って再帰方程式を解く:
RSolve[f[n + 1] == n f[n], f[n], n]RSolve[{f[n + 1] == n + f[n], f[0] == 0}, f[n], n]SolveAlwaysは,複素方程式が常に真となるパラメータ値を与える:
SolveAlways[(a - 2b + 1)x ^ 2 + (a - b ^ 2 - c)x == a ^ 2 - b + 3c - 1, x]ForAllを使って同じ問題を表し,SolveまたはReduceを使って解くこともできる:
Solve[ForAll[x, (a - 2b + 1)x ^ 2 + (a - b ^ 2 - c)x == a ^ 2 - b + 3c - 1], {a, b, c}]Reduce[ForAll[x, (a - 2b + 1)x ^ 2 + (a - b ^ 2 - c)x == a ^ 2 - b + 3c - 1], {a, b, c}]Resolveは限定子を除去するが,結果の限定子を含まない系を解かないこともある:
Resolve[Exists[x, x ^ 2 + y ^ 2 + z ^ 2 == 1 && x y > z ^ 3], Reals]Resolve[ForAll[{x, y}, a x ^ 2 + b x + c == 0 && a y ^ 2 + b y + c == 0, x == y]]Eliminateは複素方程式系から変数を除去する:
Eliminate[x ^ 2 + y ^ 2 + z ^ 2 == 1 && x z == y ^ 3, x]以下で,Resolveを使って同じ問題を解く:
Resolve[Exists[x, x ^ 2 + y ^ 2 + z ^ 2 == 1 && x z == y ^ 3]]Reduce[Exists[x, x ^ 2 + y ^ 2 + z ^ 2 == 1 && x z == y ^ 3], {y, z}]Solve[Exists[x, x ^ 2 + y ^ 2 + z ^ 2 == 1 && x z == y ^ 3], z]方程式
が各
について厳密に1つの解を持つときかつそのときに限り,
は全単射である:
Solve[x ^ 3 + x + 1 == y, x, Reals]Solve[x ^ 2 + x + 1 == y, x, Reals]FunctionBijectiveを使って関数が全単射かどうかを調べる:
FunctionBijective[x ^ 3 + x + 1, x]FunctionBijective[x ^ 2 + x + 1, x]FunctionAnalyticを使って関数が解析的かどうかを調べる:
f = Sin[3x ^ 3] - 2x + 1;FunctionAnalytic[f, x, Complexes]Solve[f == 0 && Abs[x] ≤ 1, x]ComplexPlot[f, {x, -1 - I, 1 + I}, RegionFunction -> (Abs[#] ≤ 1&), Epilog -> {PointSize[Medium], Blue, Point[{Re[x], Im[x]}] /. %}]考えられる問題 (9)
Solveは一般的な解を与える.パラメータ上の方程式を含む解は与えられない:
Solve[a x ^ 2 + x == 1, x]Reduceは,パラメータ上の方程式を必要とする解も含め,すべての解を返す:
Reduce[a x ^ 2 + x == 1, x]MaxExtraConditions->Allとすると,Solveもまた一般的ではない解を与える:
Solve[a x ^ 2 + x == 1, x, MaxExtraConditions -> All]Solveの結果は入力式の中にパラメータしか含まないものがあるかどうかに依存しない.次の2つの系は等価で一般的な解を持たない:
Solve[x == 1 && a == 2, x]Solve[x == 1 && x + a == x + 2, x]MaxExtraConditionsを使って許容されるパラメータ条件の数を指定する:
Solve[x == 1 && a == 2, x, MaxExtraConditions -> 1]Solve[x == 1 && x + a == x + 2, x, MaxExtraConditions -> 1]Exists限定子を使ってパラメータ
のある値についてのみ有効な解を求める:
Solve[Exists[a, x == 1 && a == 2], x]Solve[Exists[a, x == 1 && x + a == x + 2], x]Solveは一般的に正しくも正しくなくもない解を除外しない:
Solve[Sqrt[((1 - z) / (1 + z)) ^ 2] == (1 - a) / (1 + a), z]Sqrt[((1 - z) / (1 + z)) ^ 2] - (1 - a) / (1 + a) /. % /. {{a -> (2 + 3I) / 4}, {a -> 2 + 3I}}超越方程式の場合,Solveはすべての解を与えない場合がある:
Solve[x + E ^ x == 1 / 2, x]Reduceを使ってすべての解を得る:
Reduce[x + E ^ x == 1 / 2, x]SolveをMethod->"Reduce"と一緒に使うと,Reduceを使って解が求められるが,置換規則が返される:
Solve[x + E ^ x == 1 / 2, x, Method -> "Reduce"]逆関数を使うようにするとSolveがある種の解を求めるのが速くなる:
Solve[x ^ n == 1, x]//Timing完全解を求めるのには,はるかに時間がかかり,解自体も大きくなることがある:
(red = Reduce[x ^ n == 1, x])//LeafCount//TimingReduce[red /. x -> 2, n]Simplify[x ^ n /. {x -> 2, n -> 2I Pi C[1] / Log[2]}, Element[C[1], Integers]]仮定の解釈は仮定の文法的特性に依存する.以下では,仮定で制約されたパラメータ空間で解は一般的である:
Solve[x == a && x == b, x, Assumptions -> a == b]以下の数学的に同値の仮定は解の変数を含んでおり,解の系の一部として扱われる:
Solve[x == a && x == b, x, Assumptions -> a + x == b + x]Solve[x == a && x == b && a + x == b + x, x]この解は方程式を満足するパラメータを必要とするので,一般解ではない:
Solve[x == a && x == b && a + x == b + x, x, MaxExtraConditions -> All]パラメータが離散集合に制限される場合は,一般的という概念がうまく定義できず,すべての解が返される:
Solve[a x ^ 2 + b x == 1, x, Assumptions -> Element[a | b, Integers]]Solve[(x ^ 2 - 2Sqrt[2]x + 2) / (x - Sqrt[2]) == 0, x]Limit[(x ^ 2 - 2Sqrt[2]x + 2) / (x - Sqrt[2]), x -> Sqrt[2]]しかし,解には自動簡約によって削除される可除特異点が含まれることがある:
Solve[x ^ 2 / x == 0, x]x ^ 2 / x == 0以下では
における可除特異点が方程式の前処理に使われたTogetherによって削除されている:
Solve[(x ^ 2 - 2x + 1) / (x - 1) == 0, x]Together[(x ^ 2 - 2x + 1) / (x - 1) == 0]MaxRootsの値は数値係数を持つ系にしか使われない:
Solve[x ^ 4 == y, {x, y}, MaxRoots -> 3]Solve[x ^ 4 == y, {x}, MaxRoots -> 3]変数として与えられた式は原子オブジェクトとして扱われ,その部分式の関数としては扱われない:
Solve[x + Sin[x] == 1, Sin[x]]事実上,変数は方程式を解く前に新たなシンボルに置き換えられる:
Solve[f[x] + Integrate[f[x], {x, 0, 1}] == 2x, f[x]]f[x] + Integrate[f[x], {x, 0, 1}] == 2x /. f[x] -> zテクニカルノート
-
▪
- 記号数学:基本操作 ▪
- 方程式の解法 ▪
- 連立方程式 ▪
- ベキ級数を含む方程式の解法 ▪
- 線形系の解法 ▪
- 論理結合した方程式の解法 ▪
- 一般的な解と一般的ではない解 ▪
- 変数の消去
履歴
1988 で導入 (1.0) | 1996 で更新 (3.0) ▪ 2014 (10.0) ▪ 2020 (12.2) ▪ 2024 (14.0)
テキスト
Wolfram Research (1988), Solve, Wolfram言語関数, https://reference.wolfram.com/language/ref/Solve.html (2024年に更新).
CMS
Wolfram Language. 1988. "Solve." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2024. https://reference.wolfram.com/language/ref/Solve.html.
APA
Wolfram Language. (1988). Solve. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/Solve.html
BibTeX
@misc{reference.wolfram_2026_solve, author="Wolfram Research", title="{Solve}", year="2024", howpublished="\url{https://reference.wolfram.com/language/ref/Solve.html}", note=[Accessed: 13-November-2026]}
BibLaTeX
@online{reference.wolfram_2026_solve, organization={Wolfram Research}, title={Solve}, year={2024}, url={https://reference.wolfram.com/language/ref/Solve.html}, note=[Accessed: 13-November-2026]}