Está en la página 1de 12

 

 
  
  
MÉTODOS NUMÉRICOS
CONSOLIDADO GRUPAL
  
 
 
  
  
  
Tutor:
  Leyton Hernando
  
 
 
 
 
 
 
  
Integrante:
Horta Suarez Harold Andres
  
  
  
   
 
 
 
 


  
POLITECNICO GRANCOLOMBIANO  
FACULTAD DE INGENIERIA DE SOFTWARE  
2022  
INTRODUCCIÓN

Como bien sabemos, se le denomina interpolación a la obtención de nuevos puntos


partiendo del conocimiento de un conjunto discreto de puntos. En el presente trabajo, se
encuentran los ejercicios de planteados para la semana 3 y 4 del foro de discusión, partiendo
de los ejercicios planteados por el tutor, los ejercicios fueron realizados en java y la respuesta
de ellos es la grafica presentada.
1.
a) Construir el polinomio de interpolación para los datos dados en el documento adjunto.
package com.interpolacion.metodos.numericos.ejerciciointerpolacion;

import org.apache.commons.math3.analysis.UnivariateFunction;

import org.apache.commons.math3.analysis.interpolation.SplineInterpolator;

import org.apache.commons.math3.analysis.interpolation.UnivariateInterpolator;

import org.apache.commons.math3.stat.StatUtils;

import org.math.plot.Plot2DPanel;

import org.math.plot.plotObjects.BaseLabel;
import javax.swing.*;

import java.awt.*;

import java.util.Arrays;

public class Interpolacion {

UnivariateInterpolator interpolator = new SplineInterpolator();

Plot2DPanel plot = new Plot2DPanel();

public Interpolacion(double[] x, double[] y, double inter) {

Arrays.sort(x);

Arrays.sort(y);

UnivariateFunction polynomial = interpolator.interpolate(x, y);

int n = (int) Math.abs((StatUtils.max(x) - StatUtils.min(x)) / inter);

double[] xc = new double[n];

double[] yc = new double[n];

double xi = StatUtils.min(x);

for (int i = 0; i < xc.length; i++) {

xc[i] = xi + inter * i;

yc[i] = polynomial.value(xc[i]);
}
plot.addLegend("South");

plot.addScatterPlot("Datos", x, y);

plot.addLinePlot("Interpolacion", xc, yc);

BaseLabel tittle = new BaseLabel("Interpolacion", Color.BLUE, 0.5, 1.1);

plot.addPlotable(tittle);

JFrame frame = new JFrame("Interpolacion");

frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

frame.setSize(600, 500);

frame.add(plot, BorderLayout.CENTER);

frame.setVisible(true);
}

public static void main(String[] args) {

double[] x = {0.4, 0.6000000000000001, 1.0, 3.4000000000000004, 3.6,


4.6000000000000005};

double[] y = {3.219309952, 4.544500128000001, 8.2879, 212.87774435200026,


237.81212812800004, 225.4833321279998};

double inter = 0.2;

new Interpolacion(x, y, inter);


}

b) Reconstruir la lista de los datos se debían haber recibido, es decir presentar la tabla con
los 26 datos, desde t= 0 a t= 5 en intervalos de 0.2 segundos.
y el resultado de la ejecución inicial con los valores iniciales

0.4 3.219309952
0.6000000000000 4.54450012800000
001 1
1.0 8.2879
3.4000000000000 212.877744352000
004 26
225.483332127999
3.6 8
4.6000000000000 237.812128128000
005 04
resultado con los valores en intervalos de 0.2

0.4 3.219309952
0.6000000000000 4.54450012800000
001 1
5.51447830017756
0.8 7
1.0 8.2879
1.2000000000000 15.0825170580535
002 61
1.4 25.8385989661105
39.9270446312396
1.6 46
1.8000000000000 56.7187529605097
003 7
75.5846228609896
2.0 1
95.8955532397480
2.2 7
117.022443003853
2.4 8
138.336191060375
2.6 7
2.8000000000000 159.207696316382
003 48
3.0 179.007857678943
197.107574055125
3.2 98
212.877744352000
3.4 24
225.483332127999
3.6 8
3.8000000000000 233.737123756375
003 58
238.132227099167
4.0 55
239.633314227771
4.2 65
239.205057213583
4.4 8

c) Realizar la grafica del polinomio y de los datos recibidos.

el programa Java ayudado con las dependencias de java swing nos realiza la grafica,
teniendo como resultado:
2,
a) Determinar el instante en que el dron tiene una altura de 100 metros, pues es aquí donde
las imágenes tomadas por este tienen mejor resolución.

Ayuda: Debe plantear una ecuación y utilizando uno de los métodos de los escenarios 1 o 2
resolver la ecuación con una precisión de10−4, se debe indicar el método aplicado, presentar
una tabla con las iteraciones y el resultado final.

Se realizo en código Java, empleando dependencias Math3

codigo :

package com.interpolacion.metodos.numericos.ejerciciointerpolacion;

import org.apache.commons.math3.analysis.UnivariateFunction;

import org.apache.commons.math3.analysis.interpolation.SplineInterpolator;
import org.apache.commons.math3.analysis.interpolation.UnivariateInterpolator;

import org.apache.commons.math3.stat.StatUtils;

import org.math.plot.Plot2DPanel;

import org.math.plot.plotObjects.BaseLabel;

import javax.swing.*;

import java.awt.*;

import java.util.Arrays;

public class Interpolacion {

UnivariateInterpolator interpolator = new SplineInterpolator();

Plot2DPanel plot = new Plot2DPanel();

public Interpolacion(double[] x, double[] y, double inter) {

Arrays.sort(x);

Arrays.sort(y);

UnivariateFunction polynomial = interpolator.interpolate(x, y);

int n = (int) Math.abs((StatUtils.max(x) - StatUtils.min(x)) / inter);

System.out.println(n);

double[] xc = new double[n];

double[] yc = new double[n];

double xi = StatUtils.min(x);

System.out.println(xi);

for (int i = 0; i < xc.length; i++) {

xc[i] = xi + inter * i;

yc[i] = polynomial.value(xc[i]);

System.out.println(i + " - " + yc[i]);


}

plot.addLegend("South");

plot.addScatterPlot("Datos", x, y);

plot.addLinePlot("Interpolacion", xc, yc);


BaseLabel tittle = new BaseLabel("Interpolacion", Color.BLUE, 0.5, 1.1);

plot.addPlotable(tittle);

JFrame frame = new JFrame("Interpolacion");

frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

frame.setSize(600, 500);

frame.add(plot, BorderLayout.CENTER);

frame.setVisible(true);
}

public static void main(String[] args) {

double[] x = {0.0, 0.4, 0.6000000000000001, 1.0, 3.4000000000000004, 3.6,


4.6000000000000005, 5.0};

double[] y = {0.0, 3.219309952, 4.544500128000001, 8.2879, 212.87774435200026,


237.81212812800004, 225.4833321279998, 255.54564845};

double inter = 0.2;

new Interpolacion(x, y, inter);


}

Se obtienen los siguientes valores de interpolacion

0.0 0.0
1.64133759921494
0.2 44
0.4 3.219309952
0.6000000000000 4.54450012800000
001 1
5.51727351097186
0.8 4
1.0 8.2879
1.2000000000000 15.0405688257022
002 45
1.4000000000000 25.7191903455773
001 03
1.6 39.7076051988441
2
56.3896540247216
1.8 4
75.1491774624288
2.0 1
95.3700161511845
2.2 9
2.4000000000000 116.436010730207
004 9
137.731001838717
2.6 65
2.8000000000000 158.638830115932
003 82
178.543336201072
3.0 32
196.828360733355
3.2 17
3.4000000000000 212.877744352000
004 26
225.483332127999
3.6 8
3.8000000000000 232.172686924969
003 13
234.296176300416
4.0 05
234.307867877378
4.2 36
234.661829278893
4.4 78
4.6000000000000 237.812128128000
005 04
4.8000000000000 245.366287021342
01 88

b) Con su grupo discuta y plantee las solución de la tarea. Registre los procedimientos,
información y discusión. Todo debe quedar reflejado de el foro utilizando Wiris para la edición
de estructuras matemáticas.
Teniendo en cuenta el código anterior se reemplazan los valores de aproximación y = 100 y se obtienen
los siguientes arreglos

public static void main(String[] args) {

double[] x = {2.1,

2.2,

2.3000000000000003,

2.4

};

double[] y = {85.59877430889222,

8.2879,

106.39632201694073,

117.0224430038538

};

double inter = 0.0004;

new Interpolacion(x, y, inter);


}

obteniendo como resultado los siguientes valores como los mas aproximados a 100 m

2.24360000000000
03 99.82902676622551
2244 99.90740514860146
2.2444 99.98505438089774
2.2448 100.06198039487755
2.2452 100.13818912230407
2.2456 100.21368649494048
2246 100.28847844454997

Preguntas de discusión:

a)¿Todos los métodos de solución de ecuaciones vistos en los escenarios 1 y 2 son


aplicables a la ecuación construida?

si, en la interpolación de un dato a partir de otros dados, los algoritmos para los polinomios
de Newton y Lagrange son similares, la gran diferencia radica en lo simple que puede ser la
implementación de Lagrange, en cuanto a la estructura del seudocódigo y código

b)¿Todas las soluciones de la ecuación tienen sentido para el problema?

No, debido a la aproximación polinomial se presenta error al extenderse el polinomio n veces,


y termina alejándose de la realidad con valores no coherentes.  

CONCLUSIÓN
Del anterior trabajo, podemos concluir que la interpolación, se obtiene a partir de algoritmos
polinómicos de Newton y Lagrange, por los cuales me sirven para determinar los puntos de
intercesión y sus aproximaciones

También podría gustarte