Pythonで無限大を扱う7つの方法

Pythonを使用した無限大の表現と操作の説明のためのイラストPython
この記事は約6分で読めます。

【サイト内のコードはご自由に個人利用・商用利用いただけます】

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

基本的な知識があればサンプルコードを活用して機能追加、目的を達成できるように作ってあります。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を凌駕する現役のプログラマチームによって監修されています。

サイト内のコードを共有する場合は、参照元として引用して下さいますと幸いです

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

Pythonはその機能の豊富さと独特な書き方により、初学者から研究者まで幅広く利用されています。

その中でも、数学関連の処理が得意なPythonでは、「無限大」をどのように扱うのか、という問いが生じます。

そこで今回は、Pythonで無限大を表現し、操作するための具体的な手法を7つ紹介します。

●Pythonでの無限大の表現とは

Pythonでは無限大は主に2つの方法で表現します。

1つは、文字列を引数とするfloat関数を使って「float(‘inf’)」と表記する方法、もう1つはmathモジュールの「math.inf」という定数を使用する方法です。

これらの表現は浮動小数点数の一種で、無限大を示す特殊な値として扱われます。

●Pythonで無限大を扱う基本的な方法

○float(‘inf’)とは

最初に紹介するのは、float関数を使った無限大の表現です。

float関数は文字列を浮動小数点数に変換する関数で、「inf」を引数に与えることで無限大を表現することができます。

□サンプルコード1:float(‘inf’)の基本的な使い方

下記のコードでは、float関数を用いて無限大を表現し、その値を表示しています。

infinity = float('inf')
print(infinity)

このコードを実行すると、「inf」と表示されます。

これは、変数infinityが無限大を表す値を保持していることを示しています。

○math.infとは

次に紹介するのは、mathモジュールのinf定数を使った無限大の表現です。

Pythonのmathモジュールには、無限大を示す特殊な定数infが定義されています。

□サンプルコード2:math.infの基本的な使い方

下記のコードでは、mathモジュールのinf定数を用いて無限大を表現し、その値を表示しています。

import math

infinity = math.inf
print(infinity)

このコードを実行すると、同様に「inf」と表示されます。これも変数infinityが無限大を表す値を保持していることを示しています。

●Pythonで無限大を扱う応用例

○無限大を使った数列の生成

無限大は数列を生成する際にも利用できます。

例えば、1から始まる等差数列を生成する場合、終了条件を無限大に設定することで、理論的には無限に続く数列を生成することができます。

□サンプルコード3:無限大を使った数列の生成

下記のコードでは、無限大を利用して1から始まる等差数列を生成しています。

import math

def generate_sequence():
    i = 1
    while i < math.inf:
        yield i
        i += 1

sequence = generate_sequence()
for _ in range(10):
    print(next(sequence))

このコードを実行すると、「1」から「10」までの数が順に表示されます。

ここでは、無限大を用いて理論的には無限に続く数列を生成していますが、10回の繰り返し処理を行っていますので、「1」から「10」までの数が出力されます。

○無限大を使った比較演算

無限大は比較演算にも利用できます。

無限大と他の数を比較すると、無限大は常に他の数より大きいと評価されます。

□サンプルコード4:無限大を使った比較演算

下記のコードでは、無限大を使った比較演算を行っています。

import math

print(math.inf > 1000)  # True
print(math.inf < -1000)  # False
print(math.inf == math.inf)  # True

このコードを実行すると、「True」「False」「True」と順に表示されます。

これは、無限大がどんな有限の数よりも大きいと評価され、無限大自身と比較した場合には等しいと評価されることを示しています。

○無限大を使ったループの終了条件

無限大はループの終了条件としても利用できます。

終了条件に無限大を設定することで、特定の条件を満たすまでループを続けることができます。

□サンプルコード5:無限大を使ったループの終了条件

下記のコードでは、無限大を使ったループの終了条件を設定しています。

import math

i = 0
while i < math.inf:
    i += 1
    if i == 10:
        break
print(i)

このコードを実行すると、「10」と表示されます。

ここでは、無限大をループの終了条件として設定していますが、iが10になった時点でループを強制終了しています。

●無限大の扱いに関する注意点と対処法

○エラーハンドリング

無限大を扱う際には注意が必要なケースがあります。

例えば、無限大同士の引き算や、無限大を0で割るといった操作は、結果が定義できない(数学的に未定義)ため、エラーが発生します。

□サンプルコード6:無限大の扱いにおけるエラーハンドリング

下記のコードでは、無限大同士の引き算を行い、エラーハンドリングをしています。

import math

try:
    result = math.inf - math.inf
except ValueError as e:
    print(f"エラーが発生しました: {e}")

このコードを実行すると、「エラーが発生しました:」と表示され、その後に具体的なエラーメッセージが出力されます。

無限大同士の引き算は数学的に未定義であるため、ValueErrorが発生します。

○計算誤差

また、無限大を有限の数と演算すると、予想外の結果を生む場合があります。.これは、浮動小数点数の計算に起因する誤差の影響です。

□サンプルコード7:無限大と有限の数との演算時の計算誤差の対処法

下記のコードでは、無限大と有限の数との加算を行い、その結果を表示しています。

import math

print(math.inf + 1 == math.inf)  # True

このコードを実行すると、「True」と表示されます。これは、無限大と有限の数を加算した結果も無限大であることを示しています。

このような演算結果は予想外であるかもしれませんが、これは無限大の性質と浮動小数点数の計算誤差によるものです。

まとめ

以上、Pythonで無限大を扱う方法について紹介しました。

基本的な表現方法から応用例、注意点まで詳しく見てきました。

無限大は数学的な表現だけでなく、プログラミング上でも多くの場面で役立つ概念です。

今回学んだ知識を活かして、Pythonの可能性をさらに広げていきましょう。