FindIntegerNullVector[{x1,x2,…,xn}]
であるような整数
のリストを求める.
FindIntegerNullVector[{x1,x2,…,xn},d]
であるような
の整数
のリストを求める.
FindIntegerNullVector
FindIntegerNullVector[{x1,x2,…,xn}]
であるような整数
のリストを求める.
FindIntegerNullVector[{x1,x2,…,xn},d]
であるような
の整数
のリストを求める.
詳細とオプション
- FindIntegerNullVectorは,PSLQあるいは番号識別としても知られている.
- すべての aiが0である訳ではない.数 xiは実数でも複素数でもよい.複素数 xiについては,数 aiはガウス整数である.
- FindIntegerNullVector[{x1,x2,…},d]では,指定されたノルム境界では整数零ベクトルは存在しないかもしれない.その場合,入力は未評価で返される.
- 指定可能なオプション
-
WorkingPrecision Automatic 内部計算で使う精度 ZeroTest Automatic 数が0であるかどうかをテストするメソッド - ZeroTest->Automaticと設定すると整数関係
をテストするメソッドが自動的に決められる. - 非厳密数 xiについては,求まった関係は入力の精度まで正しい.厳密数 xi については,求まった関係はPossibleZeroQを使って証明される.
- 非厳密数 xiでWorkingPrecision->Automaticの場合,精度は入力精度であると解釈される.
- 厳密数 xiでWorkingPrecision->Automaticの場合,精度はMachinePrecisionから始まってノルム境界 d が指定されていない場合に整数零ベクトルを求める場合には$MaxExtraPrecisionまで使われると考えられる.ノルム境界 d が定まっている場合には,零ベクトルを求めるかあるいは零ベクトルが存在しないことを証明するために十分な精度が使われる.
例題
すべて開く すべて閉じる例 (3)
FindIntegerNullVector[{Log[2], Log[4]}]{Log[2], Log[4]}.%//SimplifyFindIntegerNullVector[N@{Log[2], Log[4]}]FindIntegerNullVector[{Log[2], Log[4]}, 3]FindIntegerNullVector[{Log[2], Log[4]}, 2]スコープ (6)
v = Sin[Pi / 8] ^ Range[0, 4]rel = FindIntegerNullVector[v]Simplify[rel.v]次は,8以下のノルムでは零ベクトルがないことを証明している:
FindIntegerNullVector[v, 8]零ベクトルのノルム近くの境界では,零ベクトルが存在しないことが証明できないことがある:
FindIntegerNullVector[v, 9]
Norm[%]//NFindIntegerNullVectorは数が整数上で線形非依存であることは証明できない:
FindIntegerNullVector[{E, Pi}]次は与えられれた境界以下では整数零ベクトルがないことを証明している:
FindIntegerNullVector[{E, Pi}, 1000000]FindIntegerNullVector[N[{E, Pi}, 20]]N[{E, Pi}, 20].%FindIntegerNullVector[N[{E, Pi}, 20], 10]次では零ベクトルは求まらないが,零ベクトルが存在しないことは小さいノルム境界についてしか証明されない:
FindIntegerNullVector[N[{E, Pi}, 20], 10 ^ 9]
v = {Log[2 ^ 12345 3 ^ 67890], Log[2 ^ 9876543], Log[3 ^ 6543210]};
r20 = FindIntegerNullVector[N[v, 20]]N[v, 20].r20N[r20.v, 50]
のより高精度の近似で求まった零ベクトルは厳密ベクトル
についても零ベクトルである:
r50 = FindIntegerNullVector[N[v, 50]]FullSimplify[r50.v]v = {1, 2I + Sqrt[3], (2I + Sqrt[3]) ^ 2}FindIntegerNullVector[v]Expand[%.v]v = N[{Log[-1024], 1234 Pi, Log[4]}, 20]FindIntegerNullVector[v]オプション (2)
WorkingPrecision (1)
デフォルトで,最高$MachinePrecision+$MaxExtraPrecision桁の精度が使われる:
v = Table[(2 ^ (1 / 6) + 3 ^ (1 / 5)) ^ i, {i, 0, 30}];FindIntegerNullVector[v]
より高いWorkingPrecisionを使うと零ベクトルが求まる:
FindIntegerNullVector[v, WorkingPrecision -> 300]ZeroTest (1)
デフォルトで,関係の証明にはMethod->"ExactAlgebraics"のPossibleZeroQが使われる:
a = Root[# ^ 7 + 5# - 7&, 1];
b = Root[# ^ 7 - 12# + 82&, 1];
c = RootReduce[12345a - 67890b];FindIntegerNullVector[{a, b, c}]//TimingFindIntegerNullVector[{a, b, c}, ZeroTest -> (Quiet[N[#, 2000]] == 0&)]//Timingアプリケーション (3)
a = Sqrt[2] + 3 ^ (1 / 3);
FindIntegerNullVector[Table[a ^ i, {i, 0, 6}]]CoefficientList[MinimalPolynomial[a, x], x]FindIntegerNullVector[{Sin[1] ^ 3, Sin[1], Sin[3]}]FindIntegerNullVector[{π, ArcTan[1 / 5], ArcTan[1 / 239]}]%.{π, ArcTan[1 / 5], ArcTan[1 / 239]}//FullSimplify特性と関係 (3)
FindIntegerNullVectorは指定されたベクトルの整数零ベクトルを返す:
FindIntegerNullVector[{Log[2], Log[3], Log[72]}]%.{Log[2], Log[3], Log[72]}//Simplifycoeffs = {Cos[4], Cos[1] ^ 4, Cos[1] ^ 2, 1};
vars = {x, y, z, t};
eqn = coeffs.vars == 0FindIntegerNullVector[coeffs]eqn /. Thread[vars -> %]//SimplifyFindInstanceを使って方程式の解を求める:
FindInstance[eqn && x ≠ 0, vars, Integers]a = N[Sqrt[2] + Sqrt[3], 20]FindIntegerNullVector[a ^ Range[0, 4]]RootApproximantを使って代数的数をその近似から求める:
RootApproximant[a]考えられる問題 (2)
数の間の関係を求めるためには近似精度が十分ではないかもしれない:
v = (Sqrt[2] + Sqrt[3] + Sqrt[5]) ^ Range[0, 8];FindIntegerNullVector[N[v]]N[v.%, 20]FindIntegerNullVector[N[v, 50]]Expand[v.%]非代数的数に対しての数値的なゼロテストは零ベクトルではない結果も許容する:
FindIntegerNullVector[{Pi, Rationalize[N[Pi, 100], 0]}]次は記号的ゼロテストメソッドがどれも適用されない場合にゼロテストに使われた精度を与える:
ztprec = SystemOptions["ZeroTestNumericalPrecision"]ゼロテストの精度をより高くすると,FindIntegerNullVectorはベクトルを正しく棄却する:
SetSystemOptions["ZeroTestNumericalPrecision" -> 200];FindIntegerNullVector[{Pi, Rationalize[N[Pi, 100], 0]}]
SetSystemOptions["ZeroTestNumericalPrecision" -> ztprec];関連するガイド
-
▪
- 数の認識
テキスト
Wolfram Research (2010), FindIntegerNullVector, Wolfram言語関数, https://reference.wolfram.com/language/ref/FindIntegerNullVector.html.
CMS
Wolfram Language. 2010. "FindIntegerNullVector." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/FindIntegerNullVector.html.
APA
Wolfram Language. (2010). FindIntegerNullVector. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/FindIntegerNullVector.html
BibTeX
@misc{reference.wolfram_2026_findintegernullvector, author="Wolfram Research", title="{FindIntegerNullVector}", year="2010", howpublished="\url{https://reference.wolfram.com/language/ref/FindIntegerNullVector.html}", note=[Accessed: 07-September-2026]}
BibLaTeX
@online{reference.wolfram_2026_findintegernullvector, organization={Wolfram Research}, title={FindIntegerNullVector}, year={2010}, url={https://reference.wolfram.com/language/ref/FindIntegerNullVector.html}, note=[Accessed: 07-September-2026]}