Está en la página 1de 5

APROXIMACIN DE FUNCIONES DISCRETAS (Ajuste de Funciones) FUNCIN DE INTERPOLACIN Ser una funcin que pasar exactamente por los

puntos que optendremos como datos, tal y como se representa en la siguiente grfica: P(x) P2 P4 P1 P3 ab Este tipo de funciones se utilizan en temas relacionados con el control, debido a que minimizo el error en un punto concreto (error mnimo puntual). INTERPOLACIN DE LAGRANGE Queremos optener una funcin P(x) que pase por los puntos que tenemos. Pn(xi) = yi En un principio , nos centraremos en allar una funcin de primer grado: P1(x) P1(x) = a0 +a1x y0 = a0 +a1x0 y1 = a0 + a1x1 ! a0 = ( y1 a0) / x1 a1 = ( y1y0) / (x1x0) P1(x) = (xx1)y0/(x0x1) (xx0)y1/(x1x0) ! P1(x) = L0y0 + L1y1 Polinomio de 1 de Lagrange Generalizando dicha funcin para un grado `n' obtendramos lo siguiente: n Pn(x) = Li(x) yi i=0

n Li(x) = (xxj) / (xixj) j=0 j"i ! POLINOMIO DE LAGRANGE Para el clculo de dicho polinomio utilizaremos el siguiente programa: program int_lagrange; type lista=array [1..10] of real; var lista1,lista2,lista3:lista; punto,i:integer; valor:real; procedure introducir_datos (var lista1,lista2:lista;punto:integer); var punto1,punto2:real; i:integer; begin for i:=1 to punto do begin writeln ('Introduce el valor de X',i1,':'); readln (punto1); lista1 [i]:=punto1; writeln ('Introduce el valor de Y',i1,':'); readln (punto2);

lista2 [i]:=punto2; end; end; procedure calcular (var lista3:lista;lista1,lista2:lista;punto:integer;valor:real); var i,j:integer; cal,cal1,resultado:real; begin for i:=1 to punto do begin cal:=1; cal1:=1; for j:=1 to punto do if (j<>i) then begin cal:=cal*(valor(lista1 [j])); cal1:=cal1*(lista1 [i]lista1 [j]); end; lista3 [i]:=cal/cal1; end; resultado:=0.0; for i:=1 to punto do resultado:=resultado+(lista3 [i]*lista2 [i]); writeln ('EL RESULTADO ES: ',resultado); end; begin

writeln ('Introduce la cantidad de puntos:'); readln (punto); writeln ('Introduce el valor donde quieres realizar el calculo:'); readln (valor); introducir_datos (lista1,lista2,punto); calcular (lista3,lista1,lista2,punto,valor); end. Para probar el funcionamiento del programa introduciremos los siguientes ejemplos logrando resultados satisfactorios: EJEMPLO 1: i xi F(xi) = yi 0 2 0.69315 1 2.5 0.91629 2 3 1.09861

Realizando el clculo para: X = 2.3 RESULTADO = 0.8319324 EJEMPLO 2: i xi F(xi) = yi 0 0 1.00000 1 0.1 1.10517 2 0.3 1.34986 3 0.6 1.82212

Realizando el clculo para: X = 0.14 RESULTADO = 1.15025136 El intervalo [a,b] contiene todos los ordenados Xi ,adems, la f(x) y todas sus derivadas hasta (n+1) son sus continuas. El error cometido al reemplazar f(x) por P(x) de grado n para cualquier valor X en [a,b]. |f(x) Pn(x)| " (xx0)(xx1)... (xxn)f(n+1)()/(n+1)! Tomando como el caso ms desfavorable. ( " [a,b] ) Siguiendo con el EJEMPLO 1 ,el calculo del error se realizara del siguiente modo: |lnx P2(x)| = (x2)(x2.5)(x3) f '''() / 3! X = 2.3 ! |lnx P2(x)| = (2.32)(2.32.5)(2.33) 2 / 3! = = 0.00175 4

Teniendo en cuenta que el peor caso es : x0= 2 ( x " [a,b] )

También podría gustarte