satsukiya
@satsukiya (Kazuo Sato)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

Pythonで方程式の計算ができる方法

Q&A

Closed

背景

クラウドワークスでもし、システム利用料と消費税抜きでの金額をクライアントに支払いたい場合があったとします。

例として、1万円をそのまま支払うとシステム使用料20%+消費税分がクラウドワークスに支払われます。

https://crowdworks.jp/pages/guides/employee/fee
にも計算例が書かれていますが、

x = 10000
_plus_tax = x * 1.1
sum = _plus_tax - _plus_tax * 0.2 * 1.1
print(sum)
8580.0

となります。

ここで求めたいのは、 sum=10000 としたいときの x の値です。

手動では、

sum = 10000
#消費税あり
_plus_tax = sum / (1 - 0.2 * 1.1)

#消費税なし
x = sum / (1.1 * (1 - 0.2 * 1.1))

とできますが、もっといい方法はないでしょうか。

0

2Answer

Sympyのソルバーを用いることができます。
Python, SymPyの使い方(因数分解、方程式、微分積分など) | note.nkmk.me

以下は一例です。

import sympy

def myfunc1(x):
    _plus_tax = x * 1.1
    sums = _plus_tax - _plus_tax * 0.2 * 1.1
    return sums


myfunc1(10000)  # -> 8580.0

# ---------
# 1. 変数xを定義
x = sympy.Symbol('x')
# 2. `myfunc1(x) = 10000`という方程式を立てる(sympy.Eq(左辺, 右辺))
eq = sympy.Eq(myfunc1(x), 10000)
# 3. ソルバーに方程式を与える
out = sympy.solve(eq)[0]  # -> 11655.0116550117

myfunc1(out)  # -> 10000.0000000000

なお、sumは予約語ですので変数名に使用しないようにしましょう。

1Like

Your answer might help someone💌