Khi cần tính giá trị đa thức, ta dùng vòng lặp đơn giản kết hợp toán tử *.
Ví dụ
my_list = [3, -6, 3, -1, 23, -11, 0, -8]
print("Danh sách là:")
print(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("Kết quả là:")
print(my_result)
Kết quả đầu ra
Danh sách là: [3, -6, 3, -1, 23, -11, 0, -8] Kết quả là: 3349
Giải thích
- Danh sách hệ số đa thức (từ bậc cao đến thấp): 3x⁷ - 6x⁶ + 3x⁵ - x⁴ + 23x³ - 11x² + 0x - 8.
- Gán x = 3.
- Khởi tạo kết quả = 0.
- Vòng lặp ngoài duyệt từng hệ số.
- Vòng lặp trong nhân hệ số với x đủ số lần theo bậc.
- Cộng dồn vào kết quả.
Cách hiệu quả hơn (Horner's method):
def eval_poly(coeffs, x):
result = 0
for c in coeffs:
result = result * x + c
return result
print(eval_poly([3, -6, 3, -1, 23, -11, 0, -8], 3)) # 3349
Hoặc dùng NumPy: np.polyval(coeffs, x).