2次方程式の解

2次方程式の解は、以下のようにします。

>>> def roots(a, b, c):
...   D = (b * b - 4 * a * c) ** 0.5
...   x_1 = (-b + D) / (2 * a)
...   x_2 = (-b - D) / (2 * a)
...   return {'x1':x_1, 'x2':x_2}

>>> # x**2 + 5x + 4 = 0の解

>>> roots(1, 5, 4)

{'x1': -1.0, 'x2': -4.0}



>>> # x**2 + 5x + 6 = 0の解
>>> roots(1, 5, 6)
{'x1': -2.0, 'x2': -3.0}

sympyを使えばもっと簡単に求められます。
以下の例では、解答を辞書形式で出力したり、ax2+bx+cの様な式でも解答が得られる例も示してあります。
from sympy import Symbol, solve
x = Symbol('x')
expr = x**2 + 5*x + 4
s = solve(expr)
print(s)

# dict=Trueで解答を辞書形式で返却してくれる
d = solve(expr, dict=True)
print(d)

# ax**2+bx+cみたいな式も対応可能
x = Symbol('x')
a = Symbol('a')
b = Symbol('b')
c = Symbol('c')
expr = a*x**2 + b*x + c
# xの解を得る
d = solve(expr, x, dict=True)
print(d)

0 件のコメント:

コメントを投稿