数学中国

 找回密码
 注册
搜索
热搜: 活动 交友 discuz
12
返回列表 发新帖
楼主: 风花飘飘

方程验根必须帮mathematics写代码才行

[复制链接]
 楼主| 发表于 2026-8-3 11:21 | 显示全部楼层
(* ============================================================
   代数严格验证模块【修复稳定版】
   目的: 排除纯数值巧合,区分【精确代数恒等】与【浮点逼近】
   使用前提:xCandidate 必须是【符号根式表达式】,禁止直接使用N[]浮点数
   ============================================================ *)
Print["\n===== 代数严格验证模块启动 ====="];

(* ---------- 重要分界线 ----------
   关键要求:不要直接用N[]浮点数送入校验!
   正确:xCandidate = 完整符号根式构造式(未N[]求值)
   错误:xCandidate = N[构造式, 40]
---------------------------------- *)

(* 候选根:必须传入符号根式原始表达式!不要预先数值化 *)
xCandidateSym = rootListSym[[1]];  (* rootListSym:未经N[]的符号根集合 *)
xCandidateNum = N[xCandidateSym, 60];

Print["\n[1/5] 候选根符号表达式:"];
Print["  x_sym = ", Short[xCandidateSym, 5]];
Print["[1/5] 候选根数值 (60位精度):"];
Print["  x_num = ", N[xCandidateSym, 60]];

(* ✅ 核心验证1:符号域极小多项式检测(只接受精确代数表达式) *)
Print["\n[2/5] 极小多项式检测 MinimalPolynomial[符号表达式,z]:"];
minPoly = Quiet[MinimalPolynomial[xCandidateSym, z]];
Print["  极小多项式 = ", minPoly];
If[PolynomialQ[minPoly, z],
    degPoly = Exponent[minPoly, z];
    Print["  ✅ 识别成功,极小多项式次数 = ", degPoly];
    (* 判断极小多项式是否等价目标多项式 z^5-z+1 *)
    targetPoly = z^5 - z + 1;
    If[FullSimplify[minPoly / targetPoly] === Constant,
        Print["  🎯 极小多项式与目标方程完全等价!"];,
        Print["  ⚠️ 极小多项式 ≠ z^5-z+1,只是数值逼近解"];
    ];,
    Print["  ⚠️ 无法构造有限次极小多项式,表达式含有超越成分"];
];

(* ✅ 核心验证2: RootReduce 精确归约(符号输入) *)
Print["\n[3/5] RootReduce 精确化检测(符号输入):"];
reducedSym = Quiet[RootReduce[xCandidateSym]];
Print["  归约结果: ", reducedSym];
If[Head[reducedSym] === Root,
    Print["  ✅ 成功归约为标准Root代数对象"];,
    Print["  ⚠️ RootReduce无法化简为单一Root对象"];
];

(* ✅ 核心验证3:符号回代目标方程【终极判定标准】 *)
Print["\n[4/5] 符号精确回代 f(z)=z^5-z+1 == 0 验证:"];
residualSym = FullSimplify[xCandidateSym^5 - xCandidateSym + 1];
Print["  f(x_sym) = ", residualSym];
If[residualSym === 0,
    Print["  🎉【最终结论】精确恒等于零!该根式表达式是方程严格代数解"],
    Print["  ❌【最终结论】残差不为0,仅高精度数值逼近,非精确代数解"];
];

(* ✅ 辅助:高浮点精度残差对照参考(仅作参考,不作为代数证明!) *)
Print["\n[5/5] 60位精度数值残差(仅辅助参考,不能作为代数证明):"];
residualNum = N[xCandidateNum^5 - xCandidateNum + 1, 30];
Print["  f(x_num) = ", residualNum];

(* ===================== 全部5根批量符号核验模板 ===================== *)
Print["\n===== 全部5根批量代数核验 ====="];
Do[
    rkSym = rootListSym[[k + 1]];
    rkNum = N[rkSym, 60];
    mpR = Quiet[MinimalPolynomial[rkSym, z]];
    rrR = Quiet[RootReduce[rkSym]];
    resSymR = FullSimplify[rkSym^5 - rkSym + 1];
    isExactR = (resSymR === 0);
    degR = If[PolynomialQ[mpR, z], Exponent[mpR, z], "N/A"];
   
    Print["k=", k,
          " | 极小多项式次数=", degR,
          " | RootReduce=", If[Head[rrR] === Root, "✅", "❌"],
          " | 符号精确满足方程=", If[isExactR, "🎉精确解", "❌逼近解"]];
, {k, 0, 4}];
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|数学中国 ( 京ICP备05040119号 )

GMT+8, 2026-8-3 13:01 , Processed in 0.091631 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表