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

คำนวณรากของพหุนามที่มีรากเชิงซ้อนใน Python

บทนำ

เมธอด polynomial.polyroots() ใน NumPy คำนวณรากของพหุนามจากสัมประสิทธิ์ ส่งคืนอาร์เรย์ของราก หากรากทั้งหมดเป็นจริง ผลลัพธ์เป็นจริง มิฉะนั้นเป็นเชิงซ้อน

วิธีการคำนวณ

ประมาณค่ารากจากค่าเอกเวกเตอร์ (eigenvalues) ของเมทริกซ์คอมแพนियन (companion matrix) รากที่ไกลจากจุดกำเนิดอาจมีข้อผิดพลาดมาก รากซ้ำ (multiplicity > 1) ก็มีข้อผิดพลาดมาก รากใกล้จุดกำเนิดสามารถปรับปรุงได้ด้วยวิธี نیوتن (Newton's method)

ตัวอย่าง: รากเชิงซ้อน

from numpy.polynomial import polynomial as P

j = complex(0, 1)  # i = sqrt(-1)
print("Result (roots of a polynomial)...\n", P.polyroots((-j, j)))

print("\nType...\n", P.polyroots((-j, j)).dtype)
print("\nShape...\n", P.polyroots((-j, j)).shape)

ผลลัพธ์

Result (roots of a polynomial)... [1.+0.j]
Type... complex128
Shape... (1,)

พหุนาม -j + j*x = 0 → x = 1 รากเดียวคือ 1 (เป็นจริงแต่เก็บในรูป complex)