Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรม Python คำนวณค่าสมการพหุนาม (Polynomial Equation)

แนวคิด

กำหนดลิสต์係数 (coefficients) ของพหุนาม และค่า x แล้วคำนวณค่าฟังก์ชัน P(x) = a₀xⁿ + a₁xⁿ⁻¹ + ... + aₙ โดยลิสต์เรียงจากชั้นสูงสุดไปต่ำสุด

ตัวอย่างโค้ด

my_list = [3, -6, 3, -1, 23, -11, 0, -8]  # 3x⁷ -6x⁶ +3x⁵ -x⁴ +23x³ -11x² +0x -8
print("Coefficients:", my_list)

x = 3
my_list_length = len(my_list)
my_result = 0

for i in range(my_list_length):
    my_sum = my_list[i]
    for j in range(my_list_length - i - 1):
        my_sum = my_sum * x
    my_result = my_result + my_sum

print(f"P({x}) =", my_result)

ผลลัพธ์

Coefficients: [3, -6, 3, -1, 23, -11, 0, -8]
P(3) = 3349

วิธีที่ดีกว่า: Horner's Method

def horner(coeffs, x):
    result = 0
    for c in coeffs:
        result = result * x + c
    return result

# ทดสอบ
print(horner([3, -6, 3, -1, 23, -11, 0, -8], 3))  # 3349

ใช้ NumPy (แนะนำสำหรับงานจริง)

import numpy as np
coeffs = [3, -6, 3, -1, 23, -11, 0, -8]
print(np.polyval(coeffs, 3))  # 3349

คำอธิบาย

  • โค้ดต้นฉบับใช้อัลกอริทึม naive O(n²) คูณซ้ำหลายครั้ง
  • Horner's Method ลดความซับซ้อนเป็น O(n) คำนวณได้เร็วกว่ามาก
  • NumPy polyval ถูก optimize และจัดการ numerical stability ดี