Pn(x) = f(x0) + f'(x0)(x - x0) +(1/2!) f''(x0)(x - x0)2 + ... + (1/n!) f(n)(x0)(x - x0)n |
con un error conocido (resto Rn) igual a:
f(x) - Pn(x) = Rn(x) = (1/(n+1)!) f(n+1)(ξ)(x - x0)n+1 |
f(xk) = Pn(xk) para todo k=0,1,2,...,n |
Pn(x) = f(x0)Ln,0(x) + f(x1)Ln,1(x) + ... + f(xn)Ln,n(x) |
(x-x0)(x-x1)....(x-xk-1)(x-xk+1)....(x-xn) Ln,k(x) = ------------------------------------------- (xk-x0)(xk-x1)..(xk-xk-1)(xk-xk+1)..(xk-xn) |
El error dado por éste método de interpolación es:
f(x) - Pn(x) = Rn(x) = (1/(n+1)!) f(n+1)(ξ)(x - x0)(x - x1) ... (x - xn) |
(x-xi)Pjkl - (x-xl)Pijk P(x) = Pijkl(x) = --------------------------- (xl-xk) |
(r-x1)P2 - (r-x2)P1 P12(r) = ----------------------------- ( x2 - x1 ) |
en el caso de r=1.5 : |
(1.5 - 1.0)0.6200860 - (1.5 - 1.3)0.7651977 P12(1.5) = ---------------------------------------------- = 0.5233449 ( 1.3 - 1.0 ) |
o |
(1.5 - 1.3)0.4554022 - (1.5 - 1.6)0.6200860 P23(1.5) = ---------------------------------------------- = 0.5102968 ( 1.6 - 1.3 ) |
y en orden mas elevado: |
(1.5 - 1.0)0.5102968 - (1.5 - 1.6)0.5233449 P123(1.5) = ---------------------------------------------- = 0.5124715 ( 1.6 - 1.0 ) |
Escribiendo los polinomios Pijkl en una matriz A
x1 | A11 | ||||
x2 | A21 | A22 | |||
x3 | A31 | A32 | A33 | ||
x4 | A41 | A42 | A43 | A44 | |
x5 | A51 | A52 | A53 | A54 | A55 |
Interpolación de la función f(x) dada en n puntos x1, x2, ... ,xn INPUT: xi en el array X(i) y f(xi) en la matriz A(i,1)
|
x1 | P1 | ||||
x2 | P2 | P12 | |||
x3 | P3 | P23 | P123 | ||
x4 | P4 | P34 | P234 | P1234 | |
x5 | P5 | P45 | P345 | P2345 | P12345 |
(x-xj-1)Ai,j-1 - (x-xi)Aj-1,j-1 Ai,j = ------------------------------------ xi - xj-1 |
Pn = f[x0] + Sumk=1n f[x0,x1,...,xk](x-x0)...(x-xk-1) |
f[xi] = f(xi) ( f[xi+1] - f[xi] ) f[xi,xi+1] = -------------------------- ( xi+1 - xi ) ( f[xi+1,xi+2, ... ,xi+k] - f[xi,xi+1, ... ,xi+k-1] ) f[xi,xi+1, ... ,xi+k-1,xi+k] = ----------------------------------------------------- ( xi+k - xi ) |
0.7651977 | ||||
-0.4837057 | ||||
0.6200860 | -0.1087339 | |||
-0.5489460 | 6.5878395E-02 | |||
0.4554022 | -4.9443333E-02 | 1.8251029E-03 | ||
-0.5786120 | 6.8068519E-02 | |||
0.2818186 | 1.1818333E-02 | |||
-0.5715210 | ||||
0.1103623 |
siendo el polinomio: P4(x) = 0.7651977 - 0.4837057(x-1.0) - 0.1087339(x-1.0)(x-1.3) + 0.0658784(x-1.0)(x-1.3)(x-1.6) + 0.0018251(x-1.0)(x-1.3)(x-1.6)(x-1.9) |
H2n+1(x) = Sumj=0n f(xj)Hn,j(x) + Sumj=0n f'(xj)HHn,j(x) donde Hn,j(x) = [1 - 2(x-xj)L'n,j(xj)]L2n,j(x) y HHn,j(x) = (x-xj)L2n,j(x) y los Ln,j son los polinomios de Lagrange. |
Si bien la descripción anterior es completa, el hecho de
tener que evaluar los polinomios de Lagrange y sus derivadas,
lo hace un poco tedioso.
Una forma simple de encontrar los coeficientes es utilizando
diferencias finitas, pero definiendo nuevos puntos zi
en la forma:
z1 = z2 = x1 z3 = z4 = x2 y en general: z2i = z2i-1 = xi |
f[z2i,z2i-1]=f'(xi) |
(a) S es un polinomio cúbico, que en cada subintervalo [xj,xj+1] se denomina Sj (b) S(xj) = f(xj) (para todo j) (c) Sj+1(xj+1) = Sj(xj+1) (d) S'j+1(xj+1) = S'j(xj+1) (e) S''j+1(xj+1) = S''j(xj+1) (f) S''(x0) = S''(xn) = 0 ("free boundary") o S'(x0) = f'(x0) y S'(xn) = f'(xn) ("Clamped boundary") |
Sj(x) = aj + bj(x - xj) + cj(x - xj)2 + dj(x - xj)3 |
Sj(xj) = fj(xj) = aj |
aj+1 = Sj+1(xj+1) = Sj(xj+1) = aj + bj(x - xj+1) + cj(x - xj+1)2 + dj(x - xj+1)3 que para simplificar, haciendo hj = (xj+1 - xj) es: aj+1 = aj + bjhj + cjhj2 + djhj3 |
S'j(x) = bj + 2cj(x - xj) + 3dj(x - xj)2 |
bj+1(x) = bj + 2cjhj + 3djhj2 |
cj+1(x) = cj + 3djhj |
hj-1cj-1 + 2(hj-1 + hj)cj + hjcj+1 = = 3(aj+1 - aj)/hj - 3(aj - aj-1)/hj-1 |
Debido a que las derivadas no son contínuas en algunos puntos, se interpolan 3 funciones diferentes, cuyos valores estan dados en curva1.dat, curva2.dat y curva3.dat.
Darío Mitnik