【问题标题】:How to evaluate numeric math expressions symbolically in sympy?如何在 sympy 中象征性地评估数字数学表达式?
【发布时间】:2021-03-25 13:12:58
【问题描述】:

我是 sympy 的新手,而不是 python 专家。我需要做一些象征性的计算,就像下面的例子一样。

计算:C(4, 2) / C(7, 2)

2/7

C(4, 2)是我国广泛使用的一种表达方式,它是4x3/2x1。也许你称之为组合。 同样,C(7, 2) 是 7x6/2x1。

1,虽然我可以写一个函数来计算 C(x, y),但是 sympy 中是否有现有的轮子可以做到这一点?

2,不管我是怎么得到C(4, 2)和C(7, 2)的,我怎么能得到2/7格式的商,而不是非符号的浮点数呢?

3,我需要在变量中使用一些符号来在其他表达式中使用。怎么做?如下所示:

x = 2/7
y = x * 7

PS: 我已经学会了下面是一种符号方式,但是我怎样才能保持像上面这样的纯数字表达式的符号呢?

x = sympy.symol('x')
y = x / 7

【问题讨论】:

    标签: python math sympy symbolic-math


    【解决方案1】:

    有一个函数nC 这样做:

    In [51]: from sympy.functions.combinatorial.numbers import nC
    
    In [52]: nC(4, 2) / nC(7, 2)
    Out[52]: 2/7
    

    【讨论】:

    • 谢谢,这解决了我的第一个问题。但是,如果 2/7 不是来自 nC(x, y),我如何在变量中存储和使用符号?
    • 每当您说“x=...”时,您就是在定义 x。在 SymPy 中,x 可能是 Symbol('x') 或类似 2/7 的值。所以定义x=S(2)/7,不要将它重新定义为符号,你会没事的。如果你执行 `S(2)/7,你会得到一个精确的 SymPy Rational 而不是 python 浮点数。
    猜你喜欢
    • 2010-12-05
    • 1970-01-01
    • 1970-01-01
    • 2012-05-27
    • 2011-06-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多