Legendre polynomial
import numpy as np
import matplotlib.pyplot as plt
data = np.array(((-9, 5), (-4, 2), (-1, -2), (7, 9)), dtype=float)
xcoords = np.linspace(-10, 10, 201)
pts = np.arange(0, len(data))
l_x = []
for x in xcoords:
l_j = []
for j in pts:
lval = 1.0
for m in np.r_[pts[:j], pts[j + 1:]]:
x_m, x_j = data[[m, j], 0]
lval *= (x - x_m) / (x_j - x_m)
l_j.append(lval)
l_x.append(np.dot(data[:, 1], l_j))
plt.plot(xcoords, l_x)
plt.plot(data[:, 0], data[:, 1], 'o')
plt.show()
Finite difference coefficient - Wikipedia
https://doi.org/10.1090/S0025-5718-1988-0935077-0
Radial grid
import numpy as np
from matplotlib.patches import Circle
import matplotlib.pyplot as plt
ln_r = np.arange(11)
radii = np.exp(ln_r)
fig, ax = plt.subplots()
for r in radii:
ax.add_patch(Circle((0, 0), radius=r, fill=False))
plt.axis('scaled')
ax.set_aspect('equal')
plt.show()
https://doi.org/10.1016/0010-4655(70)90008-1