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

如何提取SymPy平面方程的单独系数?

问题:如何单独提取Sympy平面方程的系数?

现有代码:

from sympy import Point3D, Plane

p1 = Plane(Point3D(0, 0, 1),
           Point3D(0, 1, 0),
           Point3D(1, 0, 0))
p2 = p1.equation()
print(p2)

程序输出结果:-10*x - 10*y - z + 10,对应平面方程标准形式 (ax + by + cz + d = 0) 的系数为a=-10、b=-10、c=-1、d=10。目前自行编写了解析器,但因输出格式不固定,解析器需大量优化甚至重写,请问是否有方法可直接单独输出这些系数?


解决方法

Sympy的Plane对象本身提供了直接获取系数的内置属性,完全无需自行编写解析器:

  • 获取平面的法向量分量(对应a、b、c):使用Plane.normal_vector属性,返回Point3D对象,可直接提取坐标值
  • 获取常数项d:使用Plane.d属性

示例代码:

from sympy import Point3D, Plane

p1 = Plane(Point3D(0, 0, 1),
           Point3D(0, 1, 0),
           Point3D(1, 0, 0))

# 提取a、b、c(法向量的三个分量)
a, b, c = p1.normal_vector.coordinates
# 提取d
d = p1.d

print(f"a={a}, b={b}, c={c}, d={d}")

输出结果:

a=-10, b=-10, c=-1, d=10

如果已经持有方程表达式(比如示例中的p2),也可以通过表达式的as_coeff_Add、as_coeff_Mul方法拆分系数,但直接使用Plane的内置属性更简洁可靠,能完全规避输出格式变化带来的解析问题。

内容的提问来源于stack exchange,提问作者Pablo Picasso

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 20:19:51