开源语言/库/表示格式,允许将数字公式作为对象处理?

时间:2011-09-07 07:30:21

标签: python math code-generation formulas

我正在寻找一种将一系列公式/方程式存储为文本的方法(因此它们很容易区分)。后来的公式取决于早期公式的结果。

我应该能够将公式(类似于MathCAD中的实时工作表)评估为数值结果,但也能够以编程方式生成原始公式的字符串表示。

换句话说,我希望能够将公式本身视为数据,并评估公式。

我希望在编辑公式时有一个带语法高亮的文本编辑器。

我的第一种方法是使用存储为字符串的公式的Python文件,然后在字符串上调用eval()。但是,这不允许语法高亮显示公式。

我选择的语言是Python,但我会接受其他非专有解决方案。

示例:

a = 73
b = 13
c = 100
d = 20
e = 18

x = a^2 + b / (c - min(d, e))
y = c + sqrt(x * e)

目的是使用公式的评估结果自动生成其他代码,同时使用原始公式本身评论生成的代码。

1 个答案:

答案 0 :(得分:4)

你可以使用sympy:

from sympy import *

a,b,c,d,e = symbols("a,b,c,d,e")
x = a**2 + b/(c-min(d,e))
y = c+sqrt(x*e)

values = {a:73,b:13,c:100,d:20,e:18}

print x
print y

print x.subs(values)
print y.subs(values)

print N(x.subs(values))
print N(y.subs(values))

输出是:

a**2 + b/(c - d)
c + (e*(a**2 + b/(c - d)))**(1/2)
426333/80
100 + 3*4263330**(1/2)/20
5329.16250000000
409.717492240913