Python 3 で数学を。

Python 3 とライブラリで数学の問題を解いていきます。統計学や機械学習はときどき。

1次不等式 (一次不等式) (Python 3, SymPy: solve(), Rational())

使用するライブラリ

SymPy

Python 3 コード

linear_inequality.py

#!/usr/bin/env python3


"""(docstring)
"""


import sympy as sym


def linear_inequality(expr):
    """(docstring)
    """
    return sym.solve(expr)


if __name__ == '__main__':
    a, x, y = sym.symbols('a x y')

    # 少数の誤差が気になる場合:
    # 例えば、6/5 なら、sym.Rational(6, 5) とする。
    expressions = [3*x + 1 > x - 5,
                   5 - 2*x < 3*x - 10,
                   (7 - 4*x) / 3 <= ((3*x + 5) / 2) - x,
                   sym.Rational(6, 5)*(4-a) <= 4]

    for idx, expr in enumerate(expressions):
        print('({})\n'.format(idx+1))
        print('数式:\n')
        sym.pprint(expr)
        print('\n解答:')
        print('sym.pprint(): ', end='')
        sym.pprint(linear_inequality(expr))
        print('print(): ', end='')
        print(linear_inequality(expr))
        print('')
        print('-'*79)

出力

$ python3 linear_inequality.py
(1)

数式:

3⋅x + 1 > x - 5

解答:
sym.pprint(): -3 < x ∧ x < ∞
print(): (-3 < x) & (x < oo)

-------------------------------------------------------------------------------
(2)

数式:

-2⋅x + 5 < 3⋅x - 10

解答:
sym.pprint(): 3 < x ∧ x < ∞
print(): (3 < x) & (x < oo)

-------------------------------------------------------------------------------
(3)

数式:

  4⋅x   7   x   5
- ─── + ─ ≤ ─ + ─
   3    3   2   2

解答:
sym.pprint(): -1/11 ≤ x ∧ x < ∞
print(): (-1/11 <= x) & (x < oo)

-------------------------------------------------------------------------------
(4)

数式:

  6⋅a   24    
- ─── + ── ≤ 4
   5    5     

解答:
sym.pprint(): 2/3 ≤ a ∧ a < ∞
print(): (2/3 <= a) & (a < oo)
-------------------------------------------------------------------------------

参考文献 (数式を参考)

高校数学解法事典 第九版

高校数学解法事典 第九版