todos

Páginas: 51 (12529 palabras) Publicado: 21 de febrero de 2015
Guías para Métodos Numéricos
Héctor F. Villafuerte
Agosto, 2010

Contenido, parte II
Guía

Breve Descripción

Guía 9

Polinomios, Interpolación de Lagrange, Trazadores.

Guía 10

Ajuste de curvas, mínimos cuadrados ordinarios.

Guía 11

Ajuste de curvas, descomposición (factorización) de valor singular.

Guía 12

Derivación numérica, diferencias finitas.

Guía 13Integración numérica, métodos del trapecio y Simpson.

Guía 14

Métodos de Monte Carlo.

Guía 15

Ecuaciones diferenciales ordinarias.

I

Métodos Numéricos
UVG- MM 2010,

Guía 9

MM 2022

Instrucciones: En sus cursos de matemática se le ha recomendado que ataque los problemas desde varios
enfoques: analítico, gráfico, y numérico. En este curso nos interesan particularmente losúltimos dos enfoques.
Responda las siguientes preguntas dejando constancia clara de su procedimiento; recuerde incluir gráficas,
código en Python, y explicaciones que considere pertinentes.

1.

Introducción
En Python existen varios comandos para tratar el problema de interpolación y ajuste de curvas, e.g. lstsq,

polyfit, linregress, polyfit, lagrange, splrep, splev, etc. Ejemplificaremos suuso con algunos ejercicios

resueltos, pero antes veamos el tratamiento básico de polinomios.

1.1.

Polinomios

Los comandos poly1d y poly nos proporcionan formas básicas de construcción de polinomios en una variable.
Por ejemplo,
p(x) = x2 − 1
q(x) = x3 + 1
r(x) = (x − 1)(x + 1/2)(x − 4)
En Python, noten el uso del comando roots para encontrar las raíces de polinomios:
1

In[34]: p = poly1d([1, 0, -1]); p

2

Out[34]: poly1d([ 1,

3

In [35]: q = poly1d([1, 0, 0, 1]); q

4

Out[35]: poly1d([1, 0, 0, 1])

0, -1])

5

In [36]: r = poly([1, -0.5, 4]); r

6

Out[36]: array([ 1. , -4.5,

7

In [37]: roots(p)

8

Out[37]: array([-1.+0.j,

9

In [38]: roots(q)

1.5,

2. ])

1.+0.j])

10

Out[38]: array([-1.0+0.j, 0.5+0.8660254j,0.5-0.8660254j])

11

In [39]: roots(r)

12

Out[39]: array([ 4.0+0.j, 1.0+0.j, -0.5+0.j])

Ahora para graficarlos necesitamos evaluar el polinomio con polyval; aunque una forma más natural de
evaluar polinomios en Python es usar notación funcional f(x) como se ejemplifica para el polinomio r:
1

In [44]: x = linspace(-1,1)

2

In [45]: plot(x, polyval(p,x))

3

In [46]: plot(x,polyval(q,x))

4

In [47]: plot(x, r(x))

# notacion funcional

1

5

In [48]: grid()

Figura 1: p(x), q(x), r(x)
Para más información: http://docs.scipy.org/doc/numpy/reference/routines.poly.html

1.2.

Problemas Resueltos

1. Encuentre el polinomio de grado no mayor a tres que interpola los siguientes puntos:
x

y

-3

4

-1

3

1

3

5

-2

Empleeinterpolación de Lagrange.
Solución: Acá podemos emplear los comandos polyfit, o lagrange:
1
2

from pylab import *
import scipy.interpolate as si

3
4

x = array([-3., -1, 1, 5])

5

y = array([4., 3, 3, -2])

6
7

P1 = polyfit(x,y,3)

8

P2 = si.lagrange(x, y)

9
10

allclose(polyval(P1,x), y)

11

allclose(P2(x), y)

Ambos comandos devuelven el mismo polinomiointerpolante P(x) = −0.04167x3 + 0.04167x + 3 (noten
que el coeficiente de x2 es cero).

2

2. Considere la función de Runge f(x) = 1/(1 + 25x2 ). El fenómeno de Runge consiste en tratar de interpolar esta
función con un solo polinomio de Lagrange.
(a) Encuentre el polinomio de Lagrange para la función de Runge en x=linspace(-1,1,10)
Solución:
1

x = linspace(-1,1,100)

2

y = 1/(1 +25*x**2)
xi = linspace(-1,1,10)

3

5

yi = 1/(1 + 25*xi**2)
P = si.lagrange(xi, yi)

6

plot(x,y)

7

plot(xi, yi, ’o’)

8

plot(x, P(x))

9

grid()

4

Figura 2: Función de Runge y un polinomio de Lagrange
Importante: note lo malo que resulta usar sólo un polinomio interpolante con esta función. La
solución es tomar polinomios interpolantes por trozos, ésto es lo...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Todo de todo
  • Todo es uno uno es todo
  • Todo A Todo
  • todos y todas
  • de todo todo
  • Todo Todo
  • Todo Todo.
  • todos y todos

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS