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

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