Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonでリストに格納された係数から多項式を計算するプログラム

多項式の係数がリスト形式で格納されている場合、その多項式の値を計算するには、シンプルな「for」ループを使用するのが基本です。

以下に具体的な実装例を示します。

実装例

my_polynomial = [2, 5, 3, 0]
num = 2
poly_len = len(my_polynomial)
my_result = 0
for i in range(poly_len):
    my_sum = my_polynomial[i]
    for j in range(poly_len - i - 1):
        my_sum = my_sum * num
    my_result = my_result + my_sum
print("The polynomial equation for the given list of co-efficients is :")
print(my_result)

出力結果

The polynomial equation for the given list of co-efficients is :
42

コードの解説

  • まず、多項式の係数を格納したリスト my_polynomial を定義します。この例では [2, 5, 3, 0] が多項式「2x³ + 5x² + 3x + 0」に対応します。

  • 次に、代入する値(num = 2)を指定し、len() 関数でリストの長さを取得して変数に格納します。

  • 計算結果を保持するための変数 my_result を 0 で初期化します。

  • 外側のループで各係数を順番に取り出し、内側のループでその係数に対応するべき乗(x の指数)を計算します。

  • 各項の計算結果を my_result に加算していき、すべての項の合計が最終的な多項式の値となります。

  • この例では x = 2 を代入しているため、「2×2³ + 5×2² + 3×2 + 0 = 16 + 20 + 6 + 0 = 42」となり、結果は 42 です。

補足:ホーナー法による効率的な計算

上記の二重ループを使う方法では計算量が O(n²) になりますが、ホーナー法(Horner's method)を利用すると、単一のループで O(n) の計算量に抑えることができます。

my_polynomial = [2, 5, 3, 0]
num = 2
my_result = 0
for coeff in my_polynomial:
    my_result = my_result * num + coeff
print(my_result)  # 出力: 42

ホーナー法では多項式を「((2x + 5)x + 3)x + 0」のように因数分解した形で評価するため、べき乗の計算が不要になり、より効率的かつシンプルに記述できるのが特徴です。

  1. Pythonでリストにピタゴラス数(三つ組)が存在するかチェックする方法

    問題概要nums という数値のリストが与えられたとき、次の等式を満たす3つの数 a、b、c が存在するかどうかを判定します。a² + b² = c²これはいわゆる「ピタゴラス数(三つ組)」の有無を確認する問題です。例えば、入力が [10, 2, 8, 5, 6] の場合、8² + 6² = 64 + 36 = 100 = 10² が成り立つため、出力は True になります。解法のアプローチこの問題は、全ての組み合わせを総当たりで調べることも可能ですが、降順ソート+二ポインタ法を使うことでより効率的に解けます。全体の手順は以下の通りです。nums 内のすべての数値を2乗し、降順にソートしたリス

  2. 【Python】リスト内のすべての値が指定した数値より大きいか判定する方法

    このチュートリアルでは、リスト内のすべての要素が指定した数値より大きいかどうかを確認する方法を解説します。たとえば、リスト [1, 2, 3, 4, 5] と数値 0 が与えられた場合、リスト内のすべての値が指定値より大きければ True を、そうでなければ False を返します。 とてもシンプルなプログラムなので、3分もかからずに書けます。まずは自分で考えてみてください。解決策が見つからない場合は、以下の手順に沿ってプログラムを作成してみましょう。 プログラムの流れ リストと任意の数値を初期化する リストをループで処理する もし指定値以下の値が見つかったら False を返す ループが最