2

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

我应该能够将公式(类似于 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)

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

4

1 回答 1

4

你可以使用同情:

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
于 2011-09-07T07:52:19.570 回答