Está en la página 1de 5

MTODO DE DIFERENCIAS FINITAS Mediante el mtodo de diferencias finitas, haremos frente a algunos problemas que presentaba la interpolacin de Lagrange.

A continuacin realizaremos una mencin sobre ellos: La cantidad de clculos necesarios eran elevados No se podan utilizar partes de la aplicacin previa. No se podan utilizar los resultados de clculos anteriores. A continuacin nos centraremos en explicar en que se basa el mtodo de diferencias finitas: En este mtodo consideraremos que los puntos estn equidistanciados en el eje X, es decir , la diferencia entre dos puntos consecutivos en el eje X es constante. El intervalo entre dos puntos consecutivos lo denominaremos h. Definiremos (n+1) puntos a intervalos h, por los que tiene que pasar el polinomio de interpolacin con lo cual: Xi=Xo+ih ! XiX(i1) Siendo i=0,1,2,3...n con yi=fi=f(xi) Las igualdades citadas nos pueden conducir a una expresin para la interpolacin polinomial en trminos de diferencias hacia delante. La diferencia lo denominaremos como la resta del punto y con respecto al valor anterior del mismo. Esta afirmacin lo podemos escribir mediante la siguiente expresin: Yi+1Yi. La primera diferencia lo denominaremos yi. Las diferencias consecutivas los podemos representar mediante la siguiente expresin: m m1 yi=( yi). De esta manera podemos realizar una tabla con las diferencias sucesivas:

Ahora definiremos el parametro s que ser utilizado a continuacin: s: Es una coordenada local que toma el valor entero i cuando x toma el valor xi. A continuacin realizaremos una pequea modificacin igualando x a la siguiente expresin: X=X0+sh

El polinomio que pasa por n+1 puntos lo podemos definir mediante la expresin que viene a continuacin, el cual ser la base de este mtodo: Pn(s)=

y0

A continuacin definiremos varios casos de coeficientes binomiales que son realmente importantes conocer:

=1

=s

Generalizando:

Si el objetivo que perseguimos es dejar la solucin en funcin de X, sera suficiente recordar que X=X0+sh A continuacin introduciremos el programa que nos calcule los resultados utilizando el mtodo de las diferencias finitas PROGRAMA program d_finita; const limite=5; type matriz=array [1..limite,1..limite] of real; lista=array [1..limite] of real; 2

var x:lista; y:matriz; i,j:integer; procedure introducir_datos (var x:lista;var y:matriz); var i,j:integer; begin for i:=1 to limite do begin writeln ('Introduce datos de la x',i,':'); readln (x[i]); end; for i:=1 to limite do for j:=1 to limite do y[i,j]:=0; for i:=1 to limite do begin writeln ('Introduce el valor de y[1,',i,']:'); readln (y[1,i]); end; end; procedure calculo (var y:matriz); var i,j:integer; cont:integer;

begin cont:=1; while (cont<limite) do begin for j:=2 to (limite+1cont) do y[cont+1,j1]:=(y[cont,j])(y[cont,j1]); cont:=cont+1; end; end; function factorial (num:integer):integer; var result,i:integer; begin result:=1; for i:=num downto 2 do result:=result*i; factorial:=result; end; procedure calculo_polinomio (x:lista;y:matriz); var h,valor,s,p,p1,p2,p3,p4,p5:real; begin writeln ('Introduce el valor de la x para el calculo:'); readln (valor); h:=x[2]x[1]; s:=(valorx[1])/h;

p1:=y[1,1]; p2:=y[2,1]*s; p3:=(y[3,1]*s*(s1))/factorial(2); p4:=(y[4,1]*s*(s1)*(s2))/factorial(3); p5:=(y[5,1]*s*(s1)*(s2)*(s3))/factorial(4); p:=p1+p2+p3+p4+p5; writeln ('El polinomio de orden ',limite,' es: ',p); end; begin introducir_datos (x,y); calculo (y); calculo_polinomio (x,y); end. Introduciremos varios ejemplos para ver los resultados que obtenemos y comprobar el buen funcionamiento del programa. Datos: 1 0 0 X=0.67 El resultado obtenido aplicando el programa de diferencias finitas ha sido: 0.62098890537 Datos: 2 0.0 2.5 X=0.12 El resultado obtenido aplicando el programa de diferencias finitas ha sido: 1.8975462720 0.1 1.987013 0.2 1.575758 0.3 1.240803 0.4 0.964286 0.2 0.19867 0.4 0.38942 0.6 0.56464 0.8 0.71736 1 0.84147 1.2 0.93204

También podría gustarte