Você está na página 1de 5

UNIVERSIDAD AERONAUTICA EN QUERETARO

METODOS NUMERICOS
REPORTE DE PRACTICA

Mtodos Numricos
Reporte de Practica
INTERPOLACION DE NEWTON

Coln, Quertaro. 20 de Febrero 2014

ALUMNOS:
Lome Carbajal Francisco Miguel
Ros Aguilar Luis Javier

MAESTRA
Adriana Chazaro S.

[ UN CIELO DE OPORTUNIDADES ]

COLON, QUERETARO

UNIVERSIDAD AERONAUTICA EN QUERETARO


METODOS NUMERICOS
REPORTE DE PRACTICA

MTODO DE DIFERENCIAS DIVIDIDAS (Polinomio Interpolante de Newton)


La forma general del polinomio interpolante de Newton para n+1 datos (x0, (x0)),
(x1, (x1)), ..., (xn, (xn)) es:

Los coeficientes ai se obtienen calculando un conjunto de cantidades


denominadas diferencias divididas.
La notacin para las diferencias divididas de una funcin (x) estn dadas por:

Las diferencias divididas de orden superior se forman de acuerdo con la siguiente


regla recursiva:

Retomando el polinomio interpolante de Newton:


Pn(x) = a0 + a1(x x0) + a2(x x0)(x x1) + ... +an(x x0)(x x1)(x xn-1)
Observe que Pn(x0) = a0. Como Pn(x) interpola los valores de
en xi, i=0,1,2,...,nentonces P(xi) = (xi), en particular Pn(x0) = (x0) = a0. Si se usa
la notacin de diferencia dividida a0= [x0].
Ahora, Pn(x1)= a0 + a1(x1 x0), como Pn(x1)= (x1) y a0= (x0), entonces
reemplazando se tiene
(x1)=(x0) + a1(x11x0), donde

[ UN CIELO DE OPORTUNIDADES ]

COLON, QUERETARO

UNIVERSIDAD AERONAUTICA EN QUERETARO


METODOS NUMERICOS
REPORTE DE PRACTICA
Si se usa la notacin de diferencia dividida a1= [x0, x1].
De manera similar cuando se evala Pn(x) en x = x2 se obtiene a2 = [x0, x1, x2]
(ver ejercicio 15, de este captulo).
En general ai = [x0 ,x1 ,x2, ..., xi], y el polinomio interpolante de Newton se escribe
como:

(2)
Desarrollo
El programa se realizo en c# obteniendo el sig Codigo.
using
using
using
using

System;
System.Collections.Generic;
System.Linq;
System.Text;

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{//declaracion de variales
double[] vectorPoli = new double[100];
double[] vectorNewton = new double[100];
double[] vectorX = new double[100];
double[] vectorY = new double[100];
double[,] matriztabla = new double[100, 100];
double sumatoria = 0, multiplicatoria, resultado;
int n, i, j, k, grado;
double x;
System.Console.WriteLine("da el valor de x para hacer la aproximacion");
x=double.Parse(System.Console.ReadLine());
System.Console.WriteLine("grado del polinomio");
grado=int.Parse(System.Console.ReadLine());
System.Console.WriteLine("da el numero de datos que tienes");
n = int.Parse(System.Console.ReadLine());
for (i = 1; i <= n; i++)//creacion de vectores
{
System.Console.WriteLine("ingresa el valor del vector X del dato "
+ i);
vectorX[i] = double.Parse(System.Console.ReadLine());
System.Console.WriteLine("ingresa el valor del vector Y del dato "
+ i);
vectorY[i] = double.Parse(System.Console.ReadLine());
}
System.Console.Write("X= ");
for (i = 1; i <= n; i++)//imprimir vector x
{
System.Console.Write(vectorX[i] + "
");

[ UN CIELO DE OPORTUNIDADES ]

COLON, QUERETARO

UNIVERSIDAD AERONAUTICA EN QUERETARO


METODOS NUMERICOS
REPORTE DE PRACTICA
}
System.Console.WriteLine(" ");
System.Console.Write("Y= ");
for (i = 1; i <= n; i++)//imprimir vector y
{
System.Console.Write(vectorY[i] + "
");
}
System.Console.WriteLine(" ");//datos tabla
for (i = 1; i <= n; i++)
{
k=i;
for (j = 1; j <= i + 1; j++)
{
if (j == 1)
{
matriztabla[i, j] = vectorX[i];
}
else if (j == 2)
{
matriztabla[i, j] = vectorY[i];
}
else
{
k=k-1;
matriztabla[i, j] = (matriztabla[i, j - 1] - matriztabla[i 1, j - 1]) / (vectorX[i] -vectorX[k]);
}
}
}
System.Console.WriteLine("tabla");
for (i = 1; i <= n; i++)//imprimir tabla
{
for (j = 1; j <=i+1; j++)
{
System.Console.Write(matriztabla[i, j] + "
");
}
System.Console.WriteLine();
}
for (i = 1; i <= n; i++)//vector con los valores de la matriz que
utilizamos
{
vectorNewton[i] = matriztabla[i, i + 1];
}
for (i = 1; i <= grado; i++)
{
multiplicatoria = 1;
for (j = 1; j <= i+1; j++)
{
multiplicatoria =vectorNewton[i+1]* (x vectorX[j]+multiplicatoria);
}
sumatoria+=multiplicatoria;
}
resultado = sumatoria + vectorNewton[1];
System.Console.WriteLine("La funcion evaluada en el punto "+x+" = "+
resultado);
System.Console.ReadLine();

[ UN CIELO DE OPORTUNIDADES ]

COLON, QUERETARO

UNIVERSIDAD AERONAUTICA EN QUERETARO


METODOS NUMERICOS
REPORTE DE PRACTICA
}
}
}
Al ejecutar el programa lo primero que nos pregunta es qu valor es el que queremos
aproximar de acuerdo al grado del polinomio y el nmero de datos que se proporcionen
despus de ingresar los datos el programa mostrara la tabla de diferencias divididas
y el clculo de la aproximacin.

La tabla la muestra bien pero al momento de evaluar el valor no es el correcto o tal


vez si ya que en este caso estamos tomando mas datos.
Ya que en el ejemplo anterior se pidi que sacara el valor de 0.5 y al hacerlo a
mano se llego al siguiente polinomio
3 () = 0.0714 3 0.5380 2 + 0.0060 + 1
Y al evaluar esta funcin con 0.5 nos da como resultado 0.8774. y con el programa
nos da como valor 0.9071 la diferencia que se muestra puede ser debido a que el que
calculamos a mano tomamos solo 4 cifras significativas y con el programa est
tomando muchsimos ms y como sabemos que al estar solamente tomando 4 cifras
significativas con el calculado a mano se va arrastrando un error que conforme se
van haciendo ms iteraciones el error va hacindose mas grande.

[ UN CIELO DE OPORTUNIDADES ]

COLON, QUERETARO

Você também pode gostar