<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">x = np.array([0.0, 1.0, 2.0, 3.0,  4.0,  5.0])
y = np.array([0.0, 0.8, 0.9, 0.1, -0.8, -1.0])
z = np.polyfit(x, y, 3)
z
# array([ 0.08703704, -0.81349206,  1.69312169, -0.03968254])

# It is convenient to use `poly1d` objects for dealing with polynomials:

p = np.poly1d(z)
p(0.5)
# 0.6143849206349179
p(3.5)
# -0.34732142857143039
p(10)
# 22.579365079365115

# High-order polynomials may oscillate wildly:

p30 = np.poly1d(np.polyfit(x, y, 30))
# /... RankWarning: Polyfit may be poorly conditioned...
p30(4)
# -0.80000000000000204
p30(5)
# -0.99999999999999445
p30(4.5)
# -0.10547061179440398

# Illustration:

import matplotlib.pyplot as plt
xp = np.linspace(-2, 6, 100)
_ = plt.plot(x, y, '.', xp, p(xp), '-', xp, p30(xp), '--')
plt.ylim(-2,2)
# (-2, 2)
plt.show()
</pre></body></html>