多項式が二重根を持ち、それだけを持つための基準を見つけるにはどうすればよいですか?

Aug 19 2020

関数のヘルプドキュメントでSolveAlways、多項式が三重根を持つという条件を見ました。

(*Find a condition for a cubic polynomial to have a triple root:*)
f[x_] := x^3 + a x^2 + b x + c;
SolveAlways[Implies[f[x] == 0 && f[y] == 0, x == y], {x, y}]

ここで、この例を模倣して、多項式の根が2つしかない(2次よりも高い重根がない)という条件を見つけたいと思います。

A = {{1, 2, -3}, {-1, 4, -3}, {1, a, 5}};
f[λ_] := CharacteristicPolynomial[A, λ]
Reduce[Exists[{x, y}, Implies[f[x] == 0 && f[y] == 0, x == y]], {a}]
Solve[(f[x] /. a -> -2) == 0, x]

SolveAlways[Implies[(f[x] == f'[x] == 0), f''[x] != 0], x]

ただし、上記のコードの出力は判断条件ではありません。この問題を解決するにはどうすればよいですか?

回答

7 DanielLichtblau Aug 19 2020 at 22:46

判別式を消滅させ、導関数の判別式を消滅させたくない。

mat = {{1, 2, -3}, {-1, 4, -3}, {1, a, 5}};
cpoly = CharacteristicPolynomial[mat, x];
disc1 = Discriminant[cpoly, x]
disc2 = Discriminant[D[cpoly, x], x]

(* Out[616]= -288 - 720 a - 504 a^2 - 108 a^3

Out[617]= -4 (2 + 9 a) *)

次に、これらを整理します。

Reduce[disc1 == 0 && disc2 != 0]

(* Out[618]= a == -2 || a == -(2/3) *)
7 user64494 Aug 19 2020 at 23:47

多重度2の根の定義を利用すると、次のようになります。

A = {{1, 2, -3},{-1, 4, -3},{1, a, 5}};f[\[Lambda]_]:= CharacteristicPolynomial[A,\[Lambda]]
Reduce[Exists[x, f[x] == 0 && f'[x] == 0 && f''[x] != 0], a, Reals]
(*a == -2 || a == -(2/3)*)

このアプローチは、多項式だけで機能するわけではありません。

6 J.M.'sennui Aug 19 2020 at 14:02

これは、判別式が使用できる目的です。

Reduce[Discriminant[CharacteristicPolynomial[{{1, 2, -3},
                                              {-1, 4, -3},
                                              {1, a, 5}}, x], x] == 0, a]
   a == -2 || a == -2/3

小切手:

With[{a = -2/3}, Eigenvalues[{{1, 2, -3}, {-1, 4, -3}, {1, a, 5}}]]
   {4, 4, 2}

With[{a = -2}, Eigenvalues[{{1, 2, -3}, {-1, 4, -3}, {1, a, 5}}]]
   {6, 2, 2}