2024 Week 4 Interpolation - Jupyter Notebook
2024 Week 4 Interpolation - Jupyter Notebook
2 x = symbols('x')
x y
1 4
3 6
5 12
𝑓(𝑥) = 𝑦0 ⋅ (𝑥(𝑥−0−𝑥𝑥11)(𝑥−
)(𝑥0 −𝑥2 ) + 𝑦1 ⋅ (𝑥1 −𝑥0 )(𝑥1 −𝑥2 ) + 𝑦2 ⋅ (𝑥2 −𝑥0 )(𝑥2 −𝑥1 ) = 4 ⋅ (1−3)(1−5) + 6 ⋅ (3−1)(3−5) + 12 ⋅ (5−1)(5−3)
𝑥2 ) (𝑥−𝑥0 )(𝑥−𝑥2 ) (𝑥−𝑥0 )(𝑥−𝑥1 ) (𝑥−3)(𝑥−5) (𝑥−1)(𝑥−5) (𝑥−1)(𝑥−3)
𝑓(7) = 4 ⋅ (7−3)(7−5)
(1−3)(1−5) + 6 ⋅ (3−1)(3−5) + 12 ⋅ (5−1)(5−3) = 4 − 18 + 36 = 22
(7−1)(7−5) (7−1)(7−3)
Out[3]: 22
The lagrange polynomial that passes through the 3 data points is given by 𝑓(15) = 24,𝑓(18) = 37, and 𝑓(22) = 25.
𝑓2 (𝑥) = 𝐿0 (𝑥)(24) + 𝐿1 (𝑥)(37) + 𝐿2 (𝑥)(25) . What is the value of 𝐿1 (𝑥) at 𝑥 = 16?
x y
15 24
18 37
22 25
𝑓2 (𝑥) = 𝑦0 ⋅ (𝑥(𝑥−0−𝑥𝑥11)(𝑥−
)(𝑥0 −𝑥2 ) + 𝑦1 ⋅ (𝑥1 −𝑥0 )(𝑥1 −𝑥2 ) + 𝑦2 ⋅ (𝑥2 −𝑥0 )(𝑥2 −𝑥1 ) = 𝐿0 (𝑥)𝑦0 + 𝐿1 (𝑥)𝑦1 + 𝐿2 (𝑥)𝑦2
𝑥2 ) (𝑥−𝑥0 )(𝑥−𝑥2 ) (𝑥−𝑥0 )(𝑥−𝑥1 )
𝐿1 (𝑥) = (𝑥(𝑥−1−𝑥𝑥00)(𝑥−
)(𝑥1 −𝑥2 ) = (18−15)(18−22) = −12
𝑥2 ) (𝑥−15)(𝑥−22) (𝑥2 −37𝑥+330)
𝐿1 (16) = 162−37∗16+330
−12 = −12−6 = 1
2
In [4]: 1 x0, x1, x2 = 15, 18, 22
2 x_val = 16
3 L1_x = ((x_val - x0) * (x_val - x2)) / ((x1 - x0) * (x1 - x2))
4 L1_x
Out[4]: 0.5
Find 𝑓(3) by using Lagrange interpolation formula 𝑓(0) = 2,𝑓(1) = 3,𝑓(2) = 12,𝑓(5) = 147
x y
0 2
1 3
2 12
5 147
𝑓(𝑥) = 𝑦0 ⋅ (𝑥(𝑥0 −−𝑥𝑥11)()(𝑥𝑥0 −−𝑥𝑥22)(𝑥 − 𝑥3 ) (𝑥 − 𝑥0 )(𝑥 − 𝑥2 )(𝑥 − 𝑥3 ) (𝑥 − 𝑥0 )(𝑥 − 𝑥1 )(𝑥 − 𝑥3 ) (𝑥 − 𝑥0 )(𝑥 − 𝑥1 )(𝑥 − 𝑥2 )
)(𝑥0 − 𝑥3 ) + 𝑦1 ⋅ (𝑥1 − 𝑥0 )(𝑥1 − 𝑥2 )(𝑥1 − 𝑥3 ) + 𝑦2 ⋅ (𝑥2 − 𝑥0 )(𝑥2 − 𝑥1 )(𝑥2 − 𝑥3 ) + 𝑦3 ⋅ (𝑥3 − 𝑥0 )(𝑥3 − 𝑥1 )(𝑥3 − 𝑥2 )
= 𝑦0 ⋅ 𝐿0 (𝑥) + 𝑦1 ⋅ 𝐿1 (𝑥) + 𝑦2 ⋅ 𝐿2 (𝑥) + 𝑦3 ⋅ 𝐿3 (𝑥)
𝐿0 (𝑥) = (𝑥−1)(𝑥−2)(𝑥−5)
(0−1)(0−2)(0−5) =
(𝑥−1)(𝑥−2)(𝑥−5) => 𝐿 (3) = (3−1)(3−2)(3−5) = (2)(1)(−2) = −0.4
10 0 10 10
𝐿1 (𝑥) = (1−0)(1−2)(1−5) = 4
(𝑥−0)(𝑥−2)(𝑥−5) (𝑥)(𝑥−2)(𝑥−5) => 𝐿1 (3) = 4 = 4 = −1.5
(3)(3−2)(3−5) (3)(1)(−2)
𝐿2 (𝑥) = (𝑥−0)(𝑥−1)(𝑥−5)
(2−0)(2−1)(2−5) =
(𝑥)(𝑥−1)(𝑥−5) => 𝐿 (3) = (3)(3−1)(3−5) = (3)(2)(−2) = 2
−6 2 −6 −6
𝐿3 (𝑥) = (5−0)(5−1)(5−2) = 60
(𝑥−0)(𝑥−1)(𝑥−2) (𝑥)(𝑥−1)(𝑥−2) => 𝐿3 (3) = 60 = 60 = 0.1
(3)(3−1)(3−2) (3)(2)(1)
𝑓(3) = 2 ⋅ (−0.4) + 3 ⋅ (−1.5) + 12 ⋅ (2) + 147 ⋅ (0.1) = −0.8 + (−4.5) + 24 + 14.7 = 33.4 + 1.6 = 35
In [8]: 1 data_points = [(0, 2), (1, 3), (2, 12), (5, 147)]
2 polynomial = lagrange_interpolation(data_points, x)
3 f_3 = polynomial.subs(x, 3)# Evaluate the polynomial at x = 3
4 simplify(f_3)
Out[8]: 35
Find the polynomial for the following data by using lagrange interpolation formula
𝑥 = 0,𝑓(𝑥) = 5
𝑥 = 2,𝑓(𝑥) = 25
𝑥 = 5,𝑓(𝑥) = 100
x y
0 5
2 25
5 100
Out[7]: 3𝑥2 + 4𝑥 + 5