Python 3 で数学を。

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

関数。関数の定義、定義域、定義域外、簡単な表。(微分積分、解析学)。(Python 3, NumPy: sqrt(), linspace(), Pandas: DataFrame())

使用するライブラリ

NumPy

Pandas

Python 3 コード

functions2.py

#!/usr/bin/env python3


"""(docstring)
"""


import numpy as np


def print_math_problems():
    """(docstring)
    """
    print("""問題:

(1) h(x) = √x^2-1 を作成せよ。
    h が受け取る入力は 1 以上か -1 以下である。それ以外は許されない。

(2) 入力値と出力値の簡単な表を作成せよ。
""")


def h(x):
    """(docstring)
    """
    if x <= -1 or x >= 1:
        return np.sqrt(x**2 - 1)
    else:
        return '定義できない。'


if __name__ == '__main__':
    import pandas as pd

    print_math_problems()
    print('-'*79)

    print('解答例:\n')

    print('定義域外の確認:')
    for n in np.linspace(-1.0, 1.0, 20):
        print(n)
        print(h(n))
        print('')

    print('-'*79)

    x_list = [-3, -2.9, -2.8, -2, -2, -1, 1, 2, np.sqrt(5), 3]

    h_x = [h(x) for x in x_list]
    # or
    # h_x = []
    # for x in x_list:
    #     h_x.append(h(x))

    print('簡単な表:')
    dat = {'x': x_list,
           'h(x)': h_x}

    df = pd.DataFrame(dat, columns=['x', 'h(x)'])
    print(df)

出力

$ python3 functions2.py
問題:

(1) h(x) = √x^2-1 を作成せよ。
    h が受け取る入力は 1 以上か -1 以下である。それ以外は許されない。

(2) 入力値と出力値の簡単な表を作成せよ。

-------------------------------------------------------------------------------
解答例:

定義域外の確認:
-1.0
0.0

-0.8947368421052632
定義できない。

-0.7894736842105263
定義できない。

-0.6842105263157895
定義できない。

-0.5789473684210527
定義できない。

-0.4736842105263158
定義できない。

-0.368421052631579
定義できない。

-0.26315789473684215
定義できない。

-0.1578947368421053
定義できない。

-0.052631578947368474
定義できない。

0.05263157894736836
定義できない。

0.1578947368421053
定義できない。

0.26315789473684204
定義できない。

0.36842105263157876
定義できない。

0.4736842105263157
定義できない。

0.5789473684210527
定義できない。

0.6842105263157894
定義できない。

0.7894736842105261
定義できない。

0.894736842105263
定義できない。

1.0
0.0

-------------------------------------------------------------------------------
簡単な表:
          x      h(x)
0 -3.000000  2.828427
1 -2.900000  2.722132
2 -2.800000  2.615339
3 -2.000000  1.732051
4 -2.000000  1.732051
5 -1.000000  0.000000
6  1.000000  0.000000
7  2.000000  1.732051
8  2.236068  2.000000
9  3.000000  2.828427

参考文献 (数式等を参考)

マンガ 「解析学」超入門 微分積分の本質を理解する (ブルーバックス)

マンガ 「解析学」超入門 微分積分の本質を理解する (ブルーバックス)

関連過去記事

py3math.hatenablog.com