前提・実現したいこと
中学生が文字計算の練習に使えるプリントを出力するシステムを作成しています。ブラウザ経由で問題のタイプを選択し、ランダムに問題が作成されるシステムです。
通常計算から方程式までこなせるということでsympyを利用しているのですが、特定の値で文字式が降べきの順に整理できない問題が発生しています。
該当のソースコード
python
1import sympy as sy 2 3x = sy.Symbol("x", real=True) 4 5result1 = 3 * x + 4 6print(result1) 7print(sy.collect(result1, x)) 8result2 = 3 * x - 4 9print(result2) 10print(sy.collect(result2, x)) 11result3 = -4 * x + 4 12print(result3) 13print(sy.collect(result3, x)) 14result4 = 3 - 2 * x 15print(result4) 16print(sy.collect(result4, x))
3*x + 4 3*x + 4 3*x - 4 3*x - 4 4 - 4*x 4 - 4*x 3 - 2*x 3 - 2*x
このようにxの係数で負の数、定数項に正の数を設定した際、逆に出力されてしまいます。
試したこと
整数をsy.Integerで定義したり、掛け算や足し算をsympyのadd,mulなどで処理したりしましたが、結果は変わりませんでした。
また、evaluate=Falseでパラメータを指定して、辞書をdefaultdictに変換し、そこから手動で計算結果を作成することも試みましたが、次数がランダムにx,x^2,x^6,xy,x/y,y/x,y^2/xなど設定されるので、限られた範囲しか対応できていません。
補足情報(FW/ツールのバージョンなど)
python=3.6
sympy=1.9
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/11/23 05:32