2019_IT Semana 06 Interpolación, matrices métodos directos

1. Lecturas de la Semana

1.1 Interpolación

http://blog.espol.edu.ec/matg1013/5-1-2-diferencias-divididas-newton/

http://blog.espol.edu.ec/matg1013/5-3-interpolacion-de-lagrange/

Revisar la sección de Recursos de estudio:

http://blog.espol.edu.ec/matg1013/recursos/formato/unidad05-interpolacion-pasos/

1.2 Matrices – métodos directos

http://blog.espol.edu.ec/matg1013/3-2-pivoteo-parcial-por-filas/

http://blog.espol.edu.ec/matg1013/3-3-gauss-metodo/

http://blog.espol.edu.ec/matg1013/3-3-1-gauss-determinante/

2. Ejercicios en Clase Paralelos 3,4,7

1Eva_IT2015_T2 Salida cardiaca

http://blog.espol.edu.ec/matg1013/1eva_it2015_t2-salida-cardiaca/

http://blog.espol.edu.ec/matg1013/s1eva_it2015_t2-salida-cardiaca/

1Eva_IT2015_T3 Temperatura en Placa
http://blog.espol.edu.ec/matg1013/1eva_it2015_t3-temperatura-en-placa/

2Eva_IIT2008_T2_MN Emisiones CO2
http://blog.espol.edu.ec/matg1013/2eva_iit2008_t2_mn-emisiones-co2/

3. Algoritmos de taller

# Polinomios de interpolación
# Perfil de pato volando
# usa archivo matg1013 creado en taller

import numpy as np
import matplotlib.pyplot as plt
import sympy as sym
import matg1013 as numericos

# INGRESO
# Perfil Superior del pato
xiA = [0.9, 1.3, 1.9, 2.1, 2.6, 3.0, 3.9, 4.4, 4.7, 5, 6.0, 7.0, 8.0, 9.2, 10.5, 11.3, 11.6, 12.0, 12.6, 13.0, 13.3]
fiA = [1.3, 1.5, 1.85, 2.1, 2.6, 2.7, 2.4, 2.15, 2.05, 2.1, 2.25, 2.3, 2.25, 1.95, 1.4, 0.9, 0.7, 0.6, 0.5, 0.4, 0.25]

#primera parte del perfil
desde1 = 0
hasta1 = 6
xi1 = np.copy(xiA[desde1:hasta1])
fi1 = np.copy(fiA[desde1:hasta1])
# PROCEDIMIENTO
# Para generar el polinomio de Lagrange
x = sym.Symbol('x')
polinomio1 = numericos.interpola_lagrange(xi1,fi1)
px1 = sym.lambdify(x,polinomio1)

# para graficar el polinomio
a1 = np.min(xi1)
b1 = np.max(xi1)
muestras1 = 51

xni1 = np.linspace(a1,b1,muestras1)
pni1 = px1(xni1)
    
# SALIDA
print('rango de existencia: ', [desde1,hasta1])
print(polinomio1)
plt.plot(xni1,pni1, label = 'p1(x)')
plt.plot(xiA,fiA,'o')
plt.title('perfil del pato volando')
plt.xlabel('xi')
plt.ylabel('fi')
plt.legend()
plt.show()


Funciones desarrolladas

def interpola_lagrange(xi,yi):
    '''
    Interpolación con método de Lagrange
    resultado: polinomio en forma simbólica
    '''
    # PROCEDIMIENTO
    n = len(xi)
    x = sym.Symbol('x')
    # Polinomio
    polinomio = 0
    i = 0
    while not(i>=n):
        # Termino de Lagrange
        termino = 1
        j = 0
        while not(j>=n):
            if (j!=i):
                termino = termino*(x-xi[j])/(xi[i]-xi[j])
            j=j+1
        polinomio = polinomio + termino*yi[i]
        i = i+1
    # Expande el polinomio
    polinomio = polinomio.expand()
    return(polinomio)


def pivoteafila(A):
    '''
    Pivotea por filas, Pivoteo parcial
    Recibe la matriz A, copia en C para no modificar A
    Si hay ceros en diagonal, la matriz es singular,
    Tarea: Revisar si diagonal tiene ceros
    '''
    tamano = np.shape(A)
    n = tamano[0]
    m = tamano[1]
    C = np.copy(A)
    i=0
    while not(i>=(n-1)):
        # columna desde diagonal i en adelante
        columna = np.abs(C[i:,i])
        dondemax = np.argmax(columna)
        # revisa dondemax no está en la diagonal
        if (dondemax != 0):
            # intercambia fila
            temporal = np.copy(C[i,:])
            C[i,:] = C[dondemax+i,:]
            C[dondemax+i,:] = temporal
        i=i+1
    return(C)

4. Tarea

Realizar los polinomios que sean necesarios para describir el perfil de la mascota indicada para cada paralelo:

Paralelo 3: http://blog.espol.edu.ec/matg1013/mascota-descansando/

Paralelo 4: Perfil Superior del pato http://blog.espol.edu.ec/matg1013/pato-en-pleno-vuelo/

Paralelo 7: Perfil inferior posterior http://blog.espol.edu.ec/matg1013/pato-en-pleno-vuelo/

Enviar los archivos .py, .png, .txt. El archivo.txt debe contener para cada tramo:
– rango de existencia
– polinomio obtenido