Sympyで算数

How can I program this in Python? [on hold] – StackOverflow

非常に単純な問題(暗記が得意なら暗算で解けそうな位).
LPとして線形代数的に解く事もできるけど,Sympyを使えば愚直にそのまま解ける.
 
 

x, y1, y2, y3, y4 = symbols('x y1 y2 y3 y4')
f1, f2, f3, f4 = symbols('f1 f2 f3 f4', cls=Function)

f1 = Eq(3*y1 - y1, x)
f2 = Eq(3*y2 - (y2 + y1), x)
f3 = Eq(3*y3 - (y3 + (y2 + y1)), x)
f4 = Eq(3*y4 - (y4 + (y3 + (y2 + y1))), x)
solve([f1, f2, f3, f4], (y1, y2, y3, y4))
\left \{ y_{1} : \frac{x}{2}, \quad y_{2} : \frac{3 x}{4}, \quad y_{3} : \frac{9 x}{8}, \quad y_{4} : \frac{27 x}{16}\right \}

 
 
 

x=30の場合,

x = 30

solve([f1, f2, f3, f4], (y1, y2, y3, y4))
\left \{ y_{1} : 15, \quad y_{2} : \frac{45}{2}, \quad y_{3} : \frac{135}{4}, \quad y_{4} : \frac{405}{8}\right \}

 
 
 
xを記号として置いておきたい場合は,

f = Eq(x, 30)
f1 = Eq(3*y1 - y1, x)
f2 = Eq(3*y2 - (y2 + y1), x)
f3 = Eq(3*y3 - (y3 + (y2 + y1)), x)
f4 = Eq(3*y4 - (y4 + (y3 + (y2 + y1))), x)
solve([f, f1, f2, f3, f4], (x, y1, y2, y3, y4))

とするか,

solve([f1.subs(x, 30), f2.subs(x, 30), f3.subs(x, 30), f4.subs(x, 30)], (y1, y2, y3, y4))

とするかだろうか.

広告
カテゴリー: 未分類 パーマリンク

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中