Interpolacion Polinomial
Interpolacion Polinomial
Interpolacion Polinomial
SEDE AZUERO
INGENIERÍA CÍVIL
INGENIERÍA MARÍTIMA PORTUARIA
INTEGRANTES
Facilitadora:
Mariluz Centella
Grupo:
71C121
INTRODUCCIÓN
Dentro de este informe presentaremos la interpolación polinómica que no es más que la técnica
utilizada en matemáticas y análisis numérico para aproximar una función desconocida a partir de un
conjunto de puntos conocidos. Básicamente, lo que hacemos es encontrar un polinomio que pase
exactamente por todos los puntos dados. Esto nos permite estimar valores desconocidos entre los
puntos conocidos de manera precisa.
Método de Lagrange
El método de Lagrange es otro método comúnmente utilizado en la interpolación
polinómica. Este método se basa en la idea de utilizar polinomios de grado bajo para
aproximar una función.
En el método de Lagrange, se construyen polinomios de grado 1 para cada punto conocido
y luego se combinan mediante una suma ponderada. Estos polinomios se llaman polinomios
base de Lagrange y se utilizan para estimar valores desconocidos entre los puntos
conocidos.
El método de Lagrange es bastante sencillo de implementar y entender, pero puede volverse
computacionalmente costoso cuando se trabaja con muchos puntos conocidos.
la fórmula para aproximar una función f(x) utilizando polinomios base de Lagrange es:
donde l❑❑ l j ( x) son los llamados polinomios de Lagrange, que se calculan de este modo:
Nótese que, en estas condiciones, los coeficientes l j (x ) están bien definidos y son siempre
distintos de cero.
Método de newton
El método de Newton es otro método popular utilizado en la interpolación polinómica. Este
método se basa en la idea de usar polinomios de grado creciente para aproximar una
función.
En el método de Newton, se utiliza una fórmula llamada diferencias divididas para construir
un polinomio que se ajuste a los puntos dados. Estas diferencias divididas se calculan
utilizando las diferencias entre los valores de la función en los puntos conocidos.
Una vez que se han calculado las diferencias divididas, se puede construir el polinomio de
Newton utilizando una serie de sumas y multiplicaciones. Este polinomio se utiliza para
estimar valores desconocidos entre los puntos conocidos.
Los puntos asociados con datos se utilizan para evaluar los coeficientes b0, b1, ..., bn. Para
un polinomio de n-ésimo grado se requieren n + 1 puntos asociados con datos: [x0, f(x0)],
[x1, f(x1)], ..., [xn, f(xn)]. Usamos estos puntos asociados con datos y las siguientes
ecuaciones para evaluar los coeficientes:
b 0=f (x 0)
b 1=f [x 1 , x 0 ]
b 2=f [x 2 , x 1 , x 0 ]
…
b n=f [x n , x n−1 , … , x1 , x 0]
donde las evaluaciones de la función colocadas entre paréntesis son diferencias divididas
finitas. Por ejemplo, la primera diferencia dividida finita en forma general se representa
como:
f ( x1 ) −f ( x 0 )
f [ x 1 , x 0 ]=
x 1−x 0
f [ x2 , x 1]−f [x 1 , x 0 ]
f [ x 2 , x 1 , x 0 ]=
x 1−x 0
Estas diferencias sirven para evaluar los coeficientes en las ecuaciones antes
mencionadas, los cuales se sustituirán en la ecuación general para obtener el
polinomio de interpolación que se conoce como polinomio de interpolación de
Newton en diferencias divididas.
Con las ecuaciones mostradas anteriormente podemos notar que las diferencias de
grado superior se calculan tomando diferencias de grado inferior. Esto lo veremos
mejor mediante la siguiente ilustración:
Se tienen datos de elevación para un tramo de carretera cada 100 metros. En la siguiente
tabla se muestran los 10 puntos conocidos con coordenadas en metros y altitudes en metros
sobre el nivel del mar:
Punto 1 2 3 4 5 6 7 8 9 10
Coordenadas 0 100 200 300 400 500 600 700 800 900
(m)
Altitudes 100 105 110 112 115 118 120 121 123 125
(msnm)
Se necesita interpolar la altitud a una distancia de 450 metros a lo largo de la carretera. Utiliza la
interpolación polinómica para estimar la altitud en ese punto.
Option Explicit: : Esta declaración al principio del módulo del formulario asegura que todas
las variables se declaren antes de ser utilizadas.
Private Sub borrar_Click() : Este es el procedimiento que se ejecuta cuando se hace clic en un
botón llamado "borrar". Este procedimiento se encarga de borrar los valores en una serie de
celdas en la hoja de Excel.
Private Sub cerrar_Click(): Este procedimiento se ejecuta cuando se hace clic en un botón
llamado "cerrar". En este caso, simplemente cierra el formulario y termina la aplicación.
End
End Sub
If KeyCode = 13 Then
ListBox1.AddItem TextBox1.Value
TextBox1.Value = ""
TextBox1.SetFocus
End If
End Sub
Dim ws As Worksheet Declara una variable ws que se utilizará para referirse a una hoja
de cálculo.
Set ws = ThisWorkbook.Sheets("Hoja1") Asigna a ws la referencia a la hoja de cálculo
llamada "Hoja1" en el libro de trabajo actua
Comienza un bucle For que copia datos desde ListBox1 a la columna B de la hoja de cálculo
empezando desde la fila 5. El bucle itera a través de los elementos en ListBox1 y copia cada
elemento a la columna B en la fila correspondiente
Dim i As Integer
For i = 0 To ListBox1.ListCount - 1
ws.Cells(i + 5, 2).Value = ListBox1.List(i)
Next i
'Calculos
Dim B5, B6, B7, B8, B9, B10, B11, B12, B13, C5, C6, C7, C8, C9, C10, C11, C12, C13, D5, D6,
As Double Se declaran una serie de variables (B5, B6, B7, ..., C13, D5, ..., H14) como números
de punto flotante (Double)
Se declaran variables adicionales para ser utilizadas en los cálculos de interpolación: n como
entero (Integer), varios arrays (yint, x, y, fdd) para almacenar datos y resultados, xi como
número de punto flotante (Double), j, TempX y TempY también como números de punto
flotante.
'Variables para almacenar
Dim n As Integer
Dim yint(1000), x(1000), y(1000), fdd(1000, 1000), xi, j, TempX, TempY As Double
' Obtener la última fila con datos en las columnas "B" y "C"
n se calcula restando 4 a la diferencia entre LastRowB y 4. Esto esta relacionado con la
cantidad de datos proporcionados.
LastRowB = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row
LastRowC = ws.Cells(ws.Rows.Count, "C").End(xlUp).Row
For i = 0 To n
Se inicia un bucle que copia datos de las celdas activas a los vectores x e y. Se asume que los
datos están dispuestos en pares, con x en una fila y y en la siguiente.
Next i “El "Next i" se utiliza para indicar el final del bucle "For i" y continuar con la
siguiente iteración o completar el bucle exterior. En este caso, "Next i" se utiliza para avanzar
al siguiente valor de i.
'INTERPOLACION DE NEWTON
Comienza la sección de interpolación de Newton, en la que se calculan las diferencias finitas y
se generan los polinomios de interpolación.
For j = 1 To n
For i = 0 To n - j
Los bucles For j y For i se utilizan para calcular las diferencias finitas de Newton. Estos bucles
se utilizan para iterar a través de una serie de valores. "For j" itera desde 1 hasta el valor de
n, y "For i" itera desde 0 hasta n - j.
If x(i + j) = x(i) Then Si x(i + j) es igual a x(i), se establece fdd(i, j) en 0 para evitar la división
por cero.
fdd(i, j) = 0
Else
fdd(i, j) = (fdd(i + 1, j - 1) - fdd(i, j - 1)) / (x(i + j) - x(i))
End If
Next i
Next j De manera similar, el "Next j" se utiliza para indicar el final del bucle "For j" y
continuar con la siguiente iteración o completar el bucle más externo.
Range("D5:e15") = "" Se borran las celdas desde D5 hasta E15 en la hoja de cálculo.
Range("D5").Select
'Imprimir valores Se inicia un bucle para imprimir los valores calculados en las celdas.
For i = 0 To n inicia un bucle For que se ejecutará desde i = 0 hasta n, donde n es un valor
que representa el número de elementos que se deben procesar.
ActiveCell.Value = i Establece el valor de la celda activa (la celda seleccionada actualmente)
en el valor de i. Esto se utiliza para enumerar las filas en la hoja de cálculo, por ejemplo, si i es
0, se escribirá 0 en la celda activa.
ActiveCell.Offset(0, 1).Select Desplaza la selección de la celda una columna a la derecha. Esto
se hace para mover la selección a la celda adyacente en la misma fila, que es donde se planea
escribir el siguiente valor.
ActiveCell.Value = yint(i) Establece el valor de la nueva celda activa en el valor almacenado
en el arreglo yint correspondiente a la posición i. yint parece ser un arreglo que contiene
valores numéricos calculados previamente.
ActiveCell.Offset(0, 1).Select Nuevamente, desplaza la selección una columna a la derecha
para mover la selección a la siguiente celda en la misma fila.
ActiveCell.Offset(1, -2).Select Este comando desplaza la selección una fila hacia abajo y dos
columnas a la izquierda. En otras palabras, se está retrocediendo a la primera celda de la fila
siguiente. Esto se hace para preparar la celda activa para la próxima iteración del bucle For,
que escribirá el siguiente valor en la siguiente fila.
Next i Esto indica el final del bucle For para i y permite que el bucle se repita con el siguiente
valor de i.
' Imprimir xi en G4
ws.Cells(4, 7).Value = xi
' Imprimir yint en H4
ws.Cells(4, 8).Value = yint(n)
End Sub
Ejecución en Excel
Código método de Lagrange
Option Explicit: es una declaración que se coloca al principio de un módulo de código y se
utiliza para obligar a que todas las variables utilizadas en el código se declaren
explícitamente antes de ser utilizadas.
Function MyInputBox (prompt As String) As Variant (Esta línea define una función
llamada “MyInputBox” que toma un argumento llamado prompt, que debe ser una cadena
de texto (String), y devuelve un valor de tipo “Variant”. Un “Variant” es un tipo de datos
que puede contener cualquier tipo de valor).
Dim result As Variant: Se declara una variable llamada “result” con el tipo de datos
“Variant”. Esta variable se utilizará para almacenar el valor introducido por el usuario en el
cuadro de diálogo InputBox.
If result = False Then End: (Esta línea comprueba si el usuario hizo clic en el botón
"Cancelar" del cuadro de diálogo InputBox. Si el valor en “result” es igual a “False”,
entonces el código finaliza bruscamente usando “End”. Esto significa que, si el usuario
hace clic en "Cancelar", la función se interrumpirá y no devolverá ningún valor).
Private Sub Calcular_Click(): (Su función principal es borrar o limpiar el contenido de una
serie de celdas en la hoja de Excel.)
Range("A5").Value = ""
Range("A6").Value = ""
Range("A7").Value = ""
Range("A8").Value = ""
Range("A9").Value = ""
Range("A10").Value = ""
Range("A11").Value = ""
Range("A12").Value = ""
Range("A13").Value = ""
Range("A14").Value = ""
Range("A19").Value = ""
Range("A20").Value = ""
Range("A21").Value = ""
Range("A22").Value = ""
Range("A23").Value = ""
Range("A24").Value = ""
Range("A25").Value = ""
Range("A26").Value = ""
Range("A27").Value = ""
Range("A28").Value = ""
Range("A29").Value = ""
Range("B2").Value = ""
Range("B5").Value = ""
Range("B6").Value = ""
Range("B7").Value = ""
Range("B8").Value = ""
Range("B9").Value = ""
Range("B10").Value = ""
Range("B11").Value = ""
Range("B12").Value = ""
Range("B13").Value = ""
Range("B14").Value = ""
Range("B19").Value = ""
Range("B20").Value = ""
Range("B21").Value = ""
Range("B22").Value = ""
Range("B23").Value = ""
Range("B24").Value = ""
Range("B25").Value = ""
Range("B26").Value = ""
Range("B27").Value = ""
Range("B28").Value = ""
Range("B29").Value = ""
Range("D5").Value = ""
Range("D6").Value = ""
Range("D7").Value = ""
Range("D8").Value = ""
Range("D9").Value = ""
Range("D10").Value = ""
Range("D11").Value = ""
Range("D12").Value = ""
Range("D13").Value = ""
Range("D14").Value = ""
Range("F5").Value = ""
yi = 0 ( yi se inicializa en 0.)
For j = 1 To n (luego, otro bucle anidado (j) recorre cada punto distinto al punto actual
(i).)
If i <> j Then
Li = Li * (xi - x(j)) / (x(i) - x(j)) ( Se calcula el valor de Li según la fórmula de
Lagrange que involucra productos y divisiones de las diferencias entre xi y xj.)
End If
Next j
Private Sub Lagrange_Click() Esto define un procedimiento que se ejecuta cuando se hace
clic en un control con el nombre "Lagrange" en una hoja de Excel. Es un manejador de
eventos.
UserForm1.Show Esta línea de código muestra el formulario de usuario llamado
"UserForm1."
End Sub (Finaliza el código)
Sub Gráfica()
' Gráfica Macro
Las líneas siguientes ingresan valores en celdas específicas
Range("A19").Select
ActiveCell.FormulaR1C1 = "0"
Range("A20").Select
ActiveCell.FormulaR1C1 = "100"
Range("A21").Select
ActiveCell.FormulaR1C1 = "200"
Range("A22").Select
ActiveCell.FormulaR1C1 = "300"
Range("A23").Select
ActiveCell.FormulaR1C1 = "400"
Range("A24").Select
ActiveCell.FormulaR1C1 = "500"
Range("A24").Select
ActiveCell.FormulaR1C1 = "450"
Range("A25").Select
ActiveCell.FormulaR1C1 = "500"
Range("A26").Select
ActiveCell.FormulaR1C1 = "600"
Range("A27").Select
ActiveCell.FormulaR1C1 = "700"
Range("A28").Select
ActiveCell.FormulaR1C1 = "800"
Range("A29").Select
ActiveCell.FormulaR1C1 = "900"
Range("B19").Select
ActiveCell.FormulaR1C1 = "100"
Range("B20").Select
ActiveCell.FormulaR1C1 = "105"
Range("B21").Select
ActiveCell.FormulaR1C1 = "110"
Range("B22").Select
ActiveCell.FormulaR1C1 = "112"
Range("B23").Select
ActiveCell.FormulaR1C1 = "115"
Range("B24").Select
ActiveCell.FormulaR1C1 = "116.5919952"
Range("B25").Select
ActiveCell.FormulaR1C1 = "118"
Range("B26").Select
ActiveCell.FormulaR1C1 = "120"
Range("B27").Select
ActiveCell.FormulaR1C1 = "121"
Range("B28").Select
ActiveCell.FormulaR1C1 = "123"
Range("B29").Select
ActiveCell.FormulaR1C1 = "125"
End Sub (Finaliza el código)
Ejecución en Excel
Resultados del problema desarrollado
El problema desarrollado nos muestra cuales son las elevaciones de una carretera cada 100 metros.
El objetivo de este problema de aplicación es encontrar un polinomio que se ajuste a los datos
conocidos y que permita estimar altitudes en cualquier punto a lo largo del tramo que va de 0 a
900m. Este problema en específico nos pidió encontrar la elevación a los 450 m de carretera,
dándonos un valor de 116.5919952 msnm.
CONCLUSIÓN
La interpolación polinómica se utiliza en ingeniería civil en diversas aplicaciones. Nosotros
utilizamos como ejemplo el cálculo de perfiles topográficos o de terreno a partir de datos limitados,
como levantamientos topográficos.
Una vez que interpolados el perfil topográfico, esta información es fundamental en la ingeniería
civil para el diseño de carreteras, puentes, sistemas de drenaje y otros aspectos de un proyecto.
También ayuda a comprender cómo se eleva o desciende el terreno entre los puntos de medición y a
tomar decisiones informadas sobre la pendiente, la nivelación y el drenaje.
https://es.wikipedia.org/wiki/Interpolaci%C3%B3n_polin%C3%B3mica
http://www3.fi.mdp.edu.ar/metodos/apuntes/diferencias%20divididas.pdf
https://spiegato.com/es/que-es-la-interpolacion
https://www.sangakoo.com/es/temas/interpolacion-polinomica-definicion
Met. newton
https://numat.net/ejerc/interp/
https://youtu.be/t35gi8UKdTY?si=AHBDAQ4wqaCnWFIA
Met. Lagrange
https://youtu.be/c6mQuBQZr0A?si=jcS0dxwr9A_JA9vV
https://youtu.be/LxqHPPQpE48?si=q4hw9s4T_urwKhnt
BIBLIOGRAFÍA
STEVEN, Chapra. Métodos Numéricos para Ingenieros. (1998)