You are on page 1of 15

ESCUELA SUPERIOR POLITÉCNICA DEL LITORAL

FACULTAD DE CIENCIAS NATURALES Y MATEMÁTICAS


DEPARTAMENTO DE MATEMÁTICAS

II TÉRMINO 2015-2016

ANÁLISIS NUMÉRICO – Paralelo 7

PROYECTO DEL CURSO

1. OBJETIVOS

a) Aplicar los conocimientos y técnicas vistas en clase y en el laboratorio para obtener una
solución computacional aceptable para problemas propuestos.

b) Desarrollar experiencia en aplicaciones computacionales interactuando en equipos.

2. ESPECIFICACIONES

El trabajo debe ser realizado por dos estudiantes. Será calificado sobre 10 puntos de la
Segunda Evaluación para cada estudiante. Cada grupo debe desarrollar una solución para
cada uno de los dos temas propuestos. Luego de completarlos y probarlos debe escribir el
desarrollo en un documento digital incluyendo los nombres y especificaciones de los
métodos numéricos usados y los resultados y gráficos obtenidos computacionalmente.

La organización de los grupos, asignación de tareas y documentación son actividades que


cada equipo de trabajo tiene que decidir

La solución debe obtenerse computacionalmente usando los instrumentos


desarrollados en este curso. Los proyectos deberán mostrar que los estudiantes
manejan algún tipo de software con orientación matemática e ingeniería. Se sugiere usar
Python.

Cada grupo debe enviar un solo documento digital con los nombres de los dos integrantes
al profesor a la dirección lrodrig@espol.edu.ec. No se recibirán proyectos en
documentos impresos.

Fecha máxima de entrega: VIERNES 29 DE ENERO DE 2016.

Opcionalmente podrán haber preguntas en el examen de la Segunda Evaluación


relacionadas con el desarrollo de este proyecto y también pueden programarse fechas de
sustentación en las cuales cada estudiante deberá demostrar su conocimiento del
desarrollo de las soluciones entregadas.

Se espera que el trabajo sea desarrollado por los estudiantes de cada grupo
manteniendo los principios de honestidad, responsabilidad y ética. Si un estudiante
engaña al profesor, se estará engañando a si mismo, a sus compañeros de estudio y
a la comunidad.

Los actos de falta de ética en la vida estudiantil son recordados y utilizados contra
los mismos compañeros en el futuro y pueden afectar su prestigio familiar y
profesional.

Luis Rodríguez Ojeda, M.Sc.


Aspectos que debe considerar al resolver un problema numérico
computacionalmente.

ANÁLISIS DEL PROBLEMA


a) Estudie el problema y revise la información relacionada relevante
b) Defina y documente el modelo matemático usado para resolver el problema
c) Describa las variables del modelo y su significado

DISEÑO
a) Elija el método numérico que usará y establezca sus requerimientos y eficiencia .
b) Establezca la formulación matemática del método numérico elegido
c) Desarrolle el algoritmo para el uso del método numérico

INSTRUMENTACIÓN
a) Escriba las funciones y programas computacionales necesarios.
b) Realice pruebas y obtenga los resultados con el computador
c) Verifique y analice los resultados en el modelo matemático y en el problema propuesto.
d) Estime numéricamente la precisión de las respuestas obtenidas.

Luis Rodríguez Ojeda, M.Sc.


TEMAS DEL PROYECTO
Puede usar los métodos numéricos instrumentados en clase en lenguaje Python. La
codificación Python se incluye es este documento y en la plataforma Sidweb.

TEMA 1

Calcule aproximadamente el área del corte de la pera del siguiente gráfico (no considere
las hojas). Siga el procedimiento del ejemplo que se muestra al final de este documento en
el cual puede encontrar la teoría y la instrumentación computacional adicional a las
funciones que están disponibles en la plataforma Sidweb. Se ha dibujado un perfil grueso
en la figura para que haya más libertad al estimar las coordenadas de los puntos.

TEMA 2
La siguiente ecuación describe el ángulo del movimiento del péndulo
θ'' + 2βθ' + g/l sen(θ) = M
θ(t) es el desplazamiento angular en función del tiempo t:
Suponga que
M=0 (fuerza externa)
l=1m (longitud del péndulo)
2
g = 9.8 m/s

a) Obtenga y grafique la solución θ(t) con la intrumentación computacional desarrollada en


clase de la fórmula de Runge-Kutta. explore el comportamiento de la solución en el intervalo
0≤t≤10 con h=0.2, 0.1, 0.05
θ(0) (ángulo inicial, θ(0) = π es la posición de reposo vertical)
θ'(0) (velocidad angular inicial)
b) Pruebe más de un valor del coeficiente de fricción del aire:
β=0 (sin rozamiento)
β>0 (con rozamiento)
Escriba alguna observación acerca de la solución numérica calculada, tales como
existencia, estabilidad, convergencia puntual, error de truncamiento.

Luis Rodríguez Ojeda, M.Sc.


ECUACIONES PARAMÉTRICAS

En esta sección se describe el procedimiento para graficar computacionalmente en el


plano ecuaciones con variables que dependen de una tercera variable resaltando la
ventaja de esta definición matemática. Se incluye la interpolación paramétrica, tema de
interés para el análisis numérico.

Suponga que la trayectoria de un objeto está dada por la siguiente ecuación:

y(x) = 5x – x2, 0≤x≤5

Su gráfico aproximado en el plano se lo obtiene con la librería PyLab conectando muchos


puntos espaciados a una distancia 0.01 en el dominio 0≤x≤5

>>> def y(x): return 5*x-x**2


>>> from pylab import*
>>> x=arange(0,5,0.01)
>>> plot(x,y(x),'-')
>>> grid(True)
>>> show()

Esta ecuación describe la trayectoria del objeto pero no permite conocer el instante en el
cual se encuentra en algún punto (x, y). Para conocer esta importante información se
puede usar otra variable, en este caso el tiempo t. Esta variable se denomina parámetro y
las ecuaciones cuyas variables dependen de este parámetro se denominan ecuaciones
paramétricas.

La trayectoria de la ecuación anterior puede describirse mediante las siguientes


ecuaciones paramétricas en las que se expresan las variables x, y como funciones de t.

El dominio del parámetro t se deduce directamente del dominio de la variable x

x(t) = 2t, 0≤t≤2.5


y(t) = 10t -4t2

Si se trazan en forma contínua los puntos (x(t), y(t)) se obtiene la misma trayectoria como
en el gráfico anterior, pero ahora es posible ver también la posición de puntos de esta
curva que corresponden a algún instante especiífico, Se muestra la posición del objeto en

Luis Rodríguez Ojeda, M.Sc.


los instantes t = 0.5, 1, 1.5, 2. La intervención del parámetro t permite adicionalmente
darle una orientación al trazado de la curva.

>>> def x(t): return 2*t


>>> def y(t): return 10*t-4*t**2
>>> from pylab import*
>>> t=arange(0,2.5,0.01)
>>> plot(x(t),y(t),'-');grid(True)
>>> plot(x(0.5),y(0.5),'o')
>>> plot(x(1),y(1),'o')
>>> plot(x(1.5),y(1.5),'o')
>>> plot(x(2),y(2),'o')
>>> show()

Si en estas ecuaciones paramétricas se elimina mediante sustitución el partámetro t, se


obtiene la ecuación anterior de la trayectoria.

y(x) = 5x – x2, 0≤x≤5

Luis Rodríguez Ojeda, M.Sc.


En el siguiente ejemplo se demuestra que las ecuaciones paramétricas permiten trazar
gráficos mas generales que los gráficos de funciones.

Ejemplo. Trazar la curva definida con las siguientes ecuaciones paramétricas e incluir
algunos puntos que corresponden a valores específicos del parámetro:

x(t) = t2 – 3t
y(t) = 4t -2, 0≤t≤5

>>> def x(t): return t**2-3*t


>>> def y(t): return 4*t-2
>>> from pylab import*
>>> t=arange(0,5,0.01)
>>> plot(x(t),y(t),'-');grid(True)
>>> plot(x(0),y(0),'o')
>>> plot(x(0.5),y(0.5),'o')
>>> plot(x(4),y(4),'o')
>>> show()

Si en las ecuaciones paramétricas anteriores se elimina el parámetro t se obtiene una


ecuación con las variables x, y la cual ya no se puede expresar como una función y(x):

y2 -10y – 16x – 20 = 0

El gráfico de estas ecuaciones puede obtenerse computacionalmente como se muestra a


continuación. Igualmente, este gráfico solamente muestra la trayectoria, pero no los puntos
que corresponden a instantes específicos del parámetro t. Adicionalmente, no es evidente
el ajuste que debe hacerse al dominio de la variable x para que coincida con el dominio
de la variable t.

>>> from pylab import*


>>> xrango = arange(-4,10,0.1)
>>> yrango = arange(-5,20,0.1)
>>> x, y = meshgrid(xrango,yrango)
>>> f=y**2-10*y-16*x-20
>>> contour(x, y, f,[0])
>>> grid(True)
>>> show()

Luis Rodríguez Ojeda, M.Sc.


Luis Rodríguez Ojeda, M.Sc.
INTERPOLACIÓN PARAMÉTRICA

Los métodos de interpolación no se pueden usar si los datos (x, y) no se pueden expresar
mediante una función y(x). Por lo tanto, estos métodos no se pueden aplicar si la curva
tiene una forma arbitraria. Sin embargo, si las coordenadas x, y se expresan como
funciones de otra variable t, denominada parámetro, entonces los puntos x(t) y y(t) se
pueden usar para construir polinomios de interpolación. Estos polinomios separados no
son de interés, pero en cambio, las parejas de puntos (x(t), y(t)) representan a la curva la
cual puede tener una forma general.

Ejemplo. Suponer que se desea representar mediante un polinomio de interpolación la


siguiente curva, de la cual se toman cuatro puntos representativos

(x, y): (1,0), (2,2), (5,1), (3,0)

Estos puntos no definen una relación funcional, por lo que no se puede usar el polinomio
de interpolación, pero si se define una tercera variable t, denominada parámetro, con
cuatro valores tomados de un rango arbitrario: t: 0, 1, 2, 3, entonces las variables x, y
se pueden definir como funciones de t:

x(t): (1, 0), (2, 1), (5, 2), (3, 3)


y(t): (0, 0), (2, 1), (1, 2), (0, 3)

El método de de interpolación permite construir un polinomio de interpolación


separadamente para x(t) y y(t). No es de interés el gráfico de estas funciones, sino
únicamente tomar puntos (x(t), y(t)).

Para que el gráfico se muestre como una curva contínua, se evalúan x(t) y y(t) con valores
de t muy cercanos, t=0.01, 0.02, 0.03, . . . ,3 Estos puntos se conectan para trazar la
curva.

Luis Rodríguez Ojeda, M.Sc.


INTERPOLACIÓN PARAMÉTRICA CON EL POLINOMIO DE LAGRANGE

En esta sección se define una función Python con la fórmula de Lagrange para obtener el
polinomio de interpolación que incluye a un conjunto de puntos (x, y) y evaluarlo con un
conjunto de valores de x mayor que el conjunto de datos dado. Esto permite obtener un
conjunto de puntos mas denso de la curva para graficarlo y para usarlo en otras
aplicaciones.

Si se desea obtener una curva parametrizada, deben obtenerse dos conjuntos de puntos
con el parámetro t: (x, t) y (y, t). Finalmente, los puntos (x, y) son los puntos de la
curva parametrizada.

from sympy import*


def lagrangep(x,y,u):
n=len(x)
t=Symbol('t')
p=0
for i in range(n):
L=1
for j in range(n):
if j!=i:
L=L*(t-x[j])/(x[i]-x[j])
p=p+y[i]*L
p=expand(p)
q=[]
for i in range(len(u)):
e=u[i]
r=p.subs(t,e)
q=q+[r]
return q

>>> from lagrangep import*


>>> x=[1,2,5,3]
>>> y=[0,2,1,0]
>>> t=[0,1,2,3]
>>> from pylab import*
>>> u=arange(0,3,0.01)
>>> vx=lagrangep(t,x,u)
>>> vy=lagrangep(t,y,u)
>>> plot(vx,vy,'-')
>>> plot(x,y,'o')
>>> grid(True)
>>> show()

Luis Rodríguez Ojeda, M.Sc.


INTERPOLACIÓN PARAMÉTRICA CON EL TRAZADOR CÚBICO

El mismo procedimiento de interpolación con el polinomio de Lagrange se puede aplicar


para usar el trazador cúbico y obtener una curva parametrizada.

Normalmente el gráfico que se obtiene con el trazador cúbico es mas suave que el que
proporciona el polinomio de interpolación.

>>> from trazador_natural import*


>>> x=[1,2,5,3]
>>> y=[0,2,1,0]
>>> t=[0,1,2,3]
>>> from pylab import*
>>> u=arange(0,3,0.01)
>>> vx=trazador_natural(t,x,u)
>>> vy=trazador_natural(t,y,u)
>>> plot(vx,vy,'-')
>>> plot(x,y,'o')
>>> grid(True)
>>> show()

Luis Rodríguez Ojeda, M.Sc.


Área de una región poligonal en el plano cartesiano

Sea P un polígono de n lados cuyos vértices numerados en sentido antihorario son:


P0(x0, y0), P1(x1, y1), P2(x2, y2), . . ., Pn-1(xn-1, yn-1)
Entonces el área de la región poligonal S correspondiente, está dado por la siguiente
expresión denominada Fórmula del Área de Gauss :

1 n− 2 n− 2
∑ i i+1 n−1 0 ∑ xi+1yi − x0 yn−1
x=
S
2 i 0=i 0
y + x y −
=

En donde
S es el área de la región poligonal
n es la cantidad de lados del polígono
(xi, yi), i = 0, 1, 2,..., n-1 son los n vértices del polígono.

Ejemplo.
Considere el polígono que se muestra en el siguiente diagrama definido por los vértices
P0(8,7), P1(1,3), P2(-2,6), P3(-5, -4), P4(9,0):

El área de la región poligonal es:


1
=S | (8)(3) + (1)(6) + (−2)(−4) + (−5)(0) + (9)(7)
2
− (1)(7) − (−2)(3) − (−5)(6) − (9)(−4) − (8)(0) |
= 83.0

Luis Rodríguez Ojeda, M.Sc.


Cálculo del área de una región poligonal en PYTHON

La siguiente función recibe los vectores x, y con las coordenadas de los vértices de un
polígono en el plano y entrega el área de la región poligonal calculada con la fórmula de
Gauss.

def agauss(x,y):
n=len(x)
s=0
for i in range(n-1):
s=s+x[i]*y[i+1]
s=s+x[n-1]*y[0]
for i in range(n-1):
s=s-x[i+1]*y[i]
s=s-x[0]*y[n-1]
return abs(0.5*s)

Cálculo del área de la región poligonal definida con los vértices:

P0(8,7), P1(1,3), P2(-2,6), P3(-5, -4), P4(9,0)

>>> from agauss import*


>>> x=[8,1,-2,-5,9]
>>> y=[7,3,6,-4,0]
>>> s=agauss(x,y)
>>> s
83.0
>>>

Luis Rodríguez Ojeda, M.Sc.


Ejemplo. Calcular aproximadamente el área de la siguiente figura

Procedimiento para calcular aproximadamente el área de una figura plana

En esta sección se desarrolla un procedimiento aproximado para calcular el área de una


figura cerrada en el plano usando el trazador cúbico en forma paramétrica para modelar
la figura y la fórmula del área de Gauss para calcular el área de la región poligonal.

1) Tomar algunos puntos (x, y) representativos de la figura


2) Definir un parámetro t con igual cantidad de valores que la cantidad de puntos
3) Colocar el trazador cubico con puntos x(t), y(t) que dependen del parámetro t
4) Obtener muchos puntos de la curva parametrizada para que esta región poligonal sea
una aproximación cercana al perfil de la figura propuesta.
5) Constatar que el gráfico de la región poligonal es una aproximación aceptable
6) Calcular el área de la figura poligonal con la fórmula del área de Gauss como una
aproximación al área de la figura propuesta.

Mediante observación visual, se tomaron los siguientes 10 puntos del gráfico. Se agrega
un punto final con valor igual al punto inicial, para cerrar la figura. Estos serán los puntos
base para construir el trazador cúbico:

(26.7, 0), (26, 5), (21, 16.9), (11, 22.8), (0, 16.9), (-5.8, 0), (0, -12.3),
(11, -15.7), (21, -12.3), (26, -4), (26.7, 0)

Se asignaron 11 valores simples para el parámetro. Su elección es flexible.

t: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10

Para graficar con más precisión el perfil del trazador se tomaron 101 valores del parámetro
t en el mismo rango. Estos puntos son los vértices de una figura poligonal con la cual se
calculará el área como una aproximación al área de la figura propuesta.

t: 0, 0.01, 0.02, 0.03, . . ., 10

Luis Rodríguez Ojeda, M.Sc.


Obtencíon y gráfico del trazador cúbico en Python para representar la figura

>>> from trazador_natural import*


>>> from pylab import*
>>> x=[26.7,26,21,11,0,-5.8,0,11,21,26,26.7]
>>> y=[0,5,16.9,22.8,16.9,0,-12.3,-15.7,-12.3,-4,0]
>>> t=[0,1,2,3,4,5,6,7,8,9,10]
>>> u=arange(0,10.01,0.01)
>>> vx=trazador_natural(t,x,u)
>>> vy=trazador_natural(t,y,u)
>>> plot(vx,vy,'.y') graficar los 100 puntos del trazador en amarillo
>>> plot(x,y,'ok') graficar los 10 puntos base en negro
>>> grid(True)
>>> show()

Cálculo del área de la región poligonal definida con los 100 puntos (vértices)

>>> from agauss import*


>>> s=agauss(vx,vy)
>>> print(s)
972.794856261
>>>

Luis Rodríguez Ojeda, M.Sc.


MATLAB

La función agauss en MATLAB

function s=agauss(x,y)
n=length(x);
s=0;
for i=1:n-1
s=s+x(i)*y(i+1);
end
s=s+x(n)*y(1);
for i=1:n-1
s=s-x(i+1)*y(i);
end
s=s-x(1)*y(n);
s=abs(0.5*s);

Luis Rodríguez Ojeda, M.Sc.

You might also like