You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mathematica三次正根求解代码逻辑及abs、arg变量作用咨询

代码功能说明

你提供的PositiveCubicRoot[p_, q_, r_]是用来求解首一三次多项式(x^3 + px^2 + qx + r = 0)正实根的工具函数,基于卡尔达诺三次方程求根公式实现,同时兼容判别式为负的不可约情形,通过三角解法规避了复数运算。

完整运行逻辑流程
  • 第一步:定义消参变量po3 = p/3,对应三次方程消去二次项的替换参数,会通过(x = t - p/3)的变量替换,把原三次方程转换为不含二次项的简约三次方程
  • 第二步:计算简约三次方程的两个核心系数a、b
  • 第三步:计算三次方程判别式det = a^3 + b^2,判别式的符号直接决定三次方程的实根数量:det≥0时仅存在1个实根,det<0时存在3个不同实根
  • 第四步:根据判别式结果分支计算实根:
    • 若det ≥ 0:直接使用卡尔达诺代数公式计算唯一实根,计算完成后直接返回根值
    • 若det < 0:属于三次方程的不可约情形,直接使用代数公式会出现复数开方运算,因此切换为三角解法计算实根,最终返回计算得到的正实根
变量abs、arg的作用

这两个变量仅在det<0的三角解法分支中使用:

  • abs为三角解法的模长参数,会经过三次更新:
    1. 第一次赋值abs = Sqrt[-a^3],是三角形式下的初始模长
    2. 第二次赋值abs = Power[abs, 1/3],对模长做三次开方处理
    3. 第三次赋值abs = (abs - a/abs),得到后续余弦项的系数
  • arg为三角解法的幅角参数,最后会被复用为最终根结果:
    1. 第一次赋值arg = ArcCos[-b/abs],计算三角形式下的初始幅角,取值范围固定在[0, π],保证后续计算得到的是正实根
    2. 第二次赋值arg = -po3 + abs*Cos[arg/3],这一步已经完成最终实根的计算,直接把变量名复用为返回的根值

内容的提问来源于stack exchange,提问作者Mogine Showey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 20:24:04