Python 3 で数学を。

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

絶対値を含む1次不等式 (一次不等式) (Python 3, SymPy: Abs(), solve())

使用するライブラリ

SymPy

Python 3 コード

sym_abs_inequality.py

#!/usr/bin/env python3


"""(docstring)
"""


import sympy as sym


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


if __name__ == '__main__':
    # Symbol(), symbols() について:
    # 不等号の場合、第 2 引数に、real=True と記述する必要はないが、
    # 何か不具合が生じたら、記述し、実行してみること。
    x = sym.Symbol('x')

    expressions = [sym.Abs(3 + x) > 1,
                   sym.Abs(2*x - 1) > 3,
                   2*sym.Abs(x - 1) + sym.Abs(x + 2) <= 7]

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

出力

$ python3 sym_abs_inequality.py
(1)

数式:

│x + 3│ > 1

解答:

sym.pprint():
(-∞ < x ∧ x < -4) ∨ (-2 < x ∧ x < ∞)

print():
((-oo < x) & (x < -4)) | ((-2 < x) & (x < oo))

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

数式:

│2⋅x - 1│ > 3

解答:

sym.pprint():
(-∞ < x ∧ x < -1) ∨ (2 < x ∧ x < ∞)

print():
((-oo < x) & (x < -1)) | ((2 < x) & (x < oo))

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

数式:

2⋅│x - 1│ + │x + 2│ ≤ 7

解答:

sym.pprint():
-7/3 ≤ x ∧ x ≤ 7/3

print():
(-7/3 <= x) & (x <= 7/3)

-------------------------------------------------------------------------------

参考文献 (数式を参考)

高校数学解法事典 第九版

高校数学解法事典 第九版