Открытый язык / библиотека / формат представления, который позволяет обрабатывать числовые формулы как объекты? - PullRequest
2 голосов
/ 07 сентября 2011

Я ищу способ сохранить серию формул / уравнений в виде текста (чтобы их можно было легко найти). Более поздние формулы зависят от результатов более ранних.

Я должен иметь возможность оценивать формулы (аналогично Live Worksheets в 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 Ответ

4 голосов
/ 07 сентября 2011

вы можете использовать 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
...