初めて投稿させていただきます。
高校で数学の教員(現在は講師)をしています。
こんなものがあったら便利、と思って作ってみました。
最終的にできたのは、texの数式コードを書き込めば、答え付きの演習プリントができる、というもの。
python: 軽量プログラミング言語の一つ。perl, ruby の仲間。
sympy: Mathematica,Maximaのような、数式処理(記号計算)をするためのpythonのライブラリ。
pythontex: texのコードのなかに、pythonのコードを書き実行させるもの。texliveの中に入っています。
これらを使って、
例えば、「因数分解」「整式の計算」の問題式と答えを出力(dvi)するtexのコードを書いてみます。
\pyc{} は python の command。
sympy.latex() は sympyの数式を、texの数式コードに変換する関数。
+ は文字列を連結する演算子。
print() は文字列を出力する関数。ここでは、texコードを出力。
他は、なんとなく分かると思います。
\pyc{expr=-12-8*x+15*x**2}
因数分解:~\pyc{print('$'+sympy.latex(expr)+'='+sympy.latex(sympy.factor(expr))+'$')}\\
%dvi出力--> 因数分解: 15x2-8x-12=(3x+2)(5x-6)
\pyc{expr=2*x+3*x}
整式の計算:~\pyc{print('$'+sympy.latex(expr)+'='+sympy.latex(sympy.simplify(expr))+'$')}
%dvi出力--> 整式の計算: 5x=5x
できるのですが、後半は
2x+3x=5x とならずに 5x=5x となってしまいます。
つまり、sympyは式を評価し、アルファベット順・降べきの順に整理してしまうのです。
これでは、問題が作れない!
解決方法は?
もし、関心と時間のある方がおられましたら、
私(pythonfan)のブログ3本(添付ファイルあり)
pythontexで高校数学の教材を作る --少し長い
pythontex+latex2sympyで高校数学の教材を作る
pythontex+latex2sympyで高校数学の教材を作る(その2)
を読んでいただき、ご意見(勘違いしていること、改善点、等々)を頂けたら有難いのですが、...。