9.2 Cinemática - línea recta



1. Cinemática - Movimiento en Línea recta con Python

Referencia: Sears-Zemansky Cap2.1 Vol1 Ed.12 p37
Diapositivas. Movimiento en linea recta.

Para plantear el movimiento en línea recta se consideran el punto de partida, llegada y tiempo de recorrido. En Python son variables que pueden obtener diferente valor para cada prueba.

cinemática velocidad media

Puede usar Python como calculadora y como programa.

Python como calculadora

Se   realizan los cálculos línea por línea

>>> tf=10
>>> d=194
>>> v=d/tf
>>> v
19.4
>>> vkmh=(v/1000)*60*60
>>> vkmh
69.83999999999999
>>> 

Python como Programa o Algoritmo

Diagrama de Flujo Básico
Diagrama de Flujo Básico

Para que el computador realice los trabajos de cálculo, se deben describir las instrucciones de forma ordenada, simple y muy clara. (Algoritmo)

Una forma de describir un Algoritmo es mediante gráficas conocidas como “Diagramas de Flujo”.

El “Programa” consiste en escribir las instrucciones del algoritmo en un lenguaje para computadora

Generalmente las instrucciones se escriben en inglés, siguiendo un formato (sintaxis) establecido por el lenguaje de programación.  Estructuras de Control en programación

Para éste curso, el lenguaje utilizado será Python

En las líneas de inicio, se comienza describiendo la razón por la que escribimos el “algoritmo” escrito en forma de “programa”

# FCNM-ESPOL. Física con python
# cálculo de velocidad
# valores conocidos d y t

En el bloque de INGRESO, se Seleccionan datos conocidos al inicio,se determinan los tipos de datos, sean Variables simples: enteros o reales.
En el algoritmo o programa no se usarán inicialmente las unidades, se supondrá que son predeterminadas

tf = int(input('¿cuantos segundos?: '))
d  = float(input('¿distancia recorrida?: '))

En el bloque de procedimiento, para calcular la velocidad en el tramo se escribe la formula, incluso se puede cambiar de mts/seg a Km/h

v = d/tf
vkmh = (v/1000)*60*60

En los bloques de salida y Fin, Se muestran los resultados encontrados y como fin del algoritmo en Python de establece cuando no se encuentran líneas de instrucción

print('Velocidad Media(Km/h)')
print(vkmh)

Algoritmo en Python - Velocidad Media

# FCNM-ESPOL. Física con python
# cálculo de velocidad
# valores conocidos d y t

tf = int(input('¿cuantos segundos?: '))
d  = float(input('¿distancia recorrida?: '))

v    = d/tf
vkmh = (v/1000)*60*60

print('Velocidad Media(Km/h)')
print(vkmh)


2. Condicionales

Multas por exceso de velocidad con Python

Referencia: Sears-Zemansky Cap2.1 Vol1 Ed.12 p37
Diapositivas Multas por exceso de velocidad.

Situación propuesta: Determinar la velocidad del vehículo en Km/h y poner multas por exceso de velocidad sobre los 50Kmh.

cinemática velocidad media

Condicionales

Diagrama de Flujo Condicional
Estructura Condicional

Escrito en Python:

If (condición):
    VERDADERO
    else:
    FALSO

Los condicionales, permiten tomar decisiones o elegir las acciones como resultado de una operación lógica,

a>b         a=b
a<b         a>=b
a<=b       ; etc….

De la situación propuesta escrita en Python:

if (vkmh>50):
    sancion=1
else:
    sancion=0

Con lo que el algoritmo de velocidad media se convierte en:

Algoritmo en Python - Multa por velocidad limite

# FCNM-ESPOL. Fí­sica con python
# cálculo de multa por velocidad límite
# valores conocidos d y t
# sancion si exede los 50km/h
tf=int(input('¿cuantos segundos?: '))
d=float(input('¿distancia recorrida?: '))

v=d/tf
vkmh=(v/1000)*60*60
if (vkmh>50):
    sancion=1
else:
    sancion=0

print('Velocidad Media(Km/h)')
print(vkmh)
if (sancion==1):
    print('Tiene sancion por exceso de velocidad sobre 50 Km/h')

Ejercicio propuesto

Ampliar el uso del tema propuesto, solicitando la variable de velocidad “limite” para decidir si aplica una sanción

  • Zona escolar: 20 Km/h
  • Zona urbana: 50 Km/h
  • Vía rápida urbana: 60 Km/h
  • Carretera: 90 Km/h

Algoritmo en Python - Velocidad Media

# FCNM-ESPOL. Física con python
# cálculo de velocidad
# valores conocidos d y t

tf = int(input('¿cuantos segundos?: '))
d  = float(input('¿distancia recorrida?: '))

v    = d/tf
vkmh = (v/1000)*60*60

print('Velocidad Media(Km/h)')
print(vkmh)


3. Tablas - Lazos/bucles y arreglos 1D

Velocidad por tramos con Python

Referencia: Sears-Zemansky Cap2.2 Vol1 Ed.12 p39
Diapositivas: Con varios puntos observados.

Tomar lecturas de distancias y tiempos recorridos, para obtener velocidades por tramo en Kmh

cinemática velocidad media muestreo

Lazos para Repetir

Usados cuando hay que repetir una operación o bloque de procedimiento. Se expresa como:

Estructura Mientras Repita
Estructura Mientras Repita
Mientras (condición): 
repita


while (condición):
    …

Lazos/Bucles – Estructuras para Repetir o iterar

Arreglos Vectores – de una dimensión

cinemática velocidad media tabla

Usados cuando hay que almacenar una lista de datos, similar a la del problema propuesto.

Se requiere importar la librería Numpy para facilitar el manejo de los datos. np es el alias de la librería

import numpy as np

Se inicializa el arreglo, llenándolo con ceros

d=np.zeros(puntos,dtype=float)
t=np.zeros(puntos,dtype=int)
i=0

Los arreglos inician en la fila 0, conocida como punto inicial.
Es necesario indicar los datos son enteros(int) o reales (float).

Vectores – Arreglos de una dimensión

resultado del algoritmo:

>>> 
¿puntos observados?:4
distancia recorrida (m):0
tiempo transcurrido (s):0
distancia recorrida (m):100
tiempo transcurrido (s):5
distancia recorrida (m):200
tiempo transcurrido (s):9
distancia recorrida (m):300
tiempo transcurrido (s):15
Velocidades en Kmh:
0.0
72.0
90.0
60.0

Algoritmo: Velocidad por tramos recorridos

# FCNM-ESPOL. Física con python
# varios tramos de recorrido
import numpy as np

puntos=int(input('¿puntos observados?:'))
d=np.zeros(puntos,dtype=float)
t=np.zeros(puntos,dtype=int)
i=0
while (i<puntos):
    d[i]=float(input('distancia recorrida (m):'))
    t[i]=int(input('tiempo transcurrido (s):'))
    i=i+1

#Procedimiento
v=np.zeros(puntos,dtype=float)
vkmh=np.zeros(puntos,dtype=float)
v[0]=0
vkmh[0]=0
i=1
while (i<puntos):
    v[i]=(d[i]-d[i-1])/(t[i]-t[i-1])
    vkmh[i]=(v[i]/1000)*60*60
    i=i+1

#Salida
print('Velocidades en Kmh:')
i=0
while (i<puntos):
    print(vkmh[i])
    i=i+1



4. Ejercicio para Taller

Velocidades por tramos, Implementar el algoritmo en Python.

LecturadtVV
metrossegm/sKmh
000
11005
22009
330015
440019
550025
660033
770038
870045
980055
1080015


5. Contadores, Acumuladores y arreglos

Referencia: Sears-Zemansky Cap2.2 Vol1 Ed.12 p39
Diapositivas: identificando cada punto observado.

Identificar cada lectura de datos para el ejercicio de velocidad por tramos requiere un índice o número que sea único para cada lectura.

cinemática velocidad media contadores e índices

Se usa el concepto de contadores y acumuladores para llevar el control de los índices:

Contadores y Acumuladores en programación

Los arreglos permiten almacenar listas de datos, tal como las usadas en el ejemplo anterior:

cinemática velocidad media tabla
>>d(1)
Ans = 100
>> t(3)
Ans=15

se observa que todas las variables tipo arreglo tienen:

cinemática velocidad media tabla índices

Taller: Velocidad media

En el ejercicio mostrado, calcular la velocidad media como el promedio de los valores de velocidades.



6. Gráficas tiempo vs distancia con Python

Referencia: Sears-Zemansky Cap2.2 Vol1 Ed.12 p39
Diapositivas: Graficando tiempo vs distancia, velocidad y aceleración.

Situación propuesta: Observar en una gráfica los datos del ejercicio anterior.
Tomar lecturas de distancias y tiempos recorridos, para obtener velocidades por tramo en Kmh

cinemática velocidad media llenar tabla

Usaremos los resultados del ejercicio: velocidadtramos.py
Ejecutar el archivo con los datos del problema mostrado para obtener en memoria los resultados siguientes mostrados.

>>> d
array([   0.,  100.,  200.,  300.])
>>> t
array([ 0,  5,  9, 15])
>>> v
array([  0.      ,  20.      ,  25.      ,  16.66666667])
>>> vkmh
array([  0.,  72.,  90.,  60.])
>>>

Gráfica desde linea de instrucciones

Se puede crear la gráfica paso a paso desde el Shell de
Python

cinemática velocidad media gráfica

Se requiere importar la librería para gráficas con el álias “plt” que es estandarizado.

>>> import matplotlib.pyplot as plt

Se crea la línea a graficar

>>> plt.plot(t,d)

Mostrar el gráfico construido

>> plt.show()

Añadir títulos de gráfico

>>> import matplotlib.pyplot as plt

Usar la forma interactiva para generar el gráfico, No se usa en el script

>>> plt.ion()
>>> plt.plot(t,d)
[<matplotlib.lines.Line2D object at 0x05A605F0>]
>>> plt.title('Distancia recorrida vs tiempo acumulado')
<matplotlib.text.Text object at 0x05A50630>
>>> plt.xlabel('tiempo segundos')
<matplotlib.text.Text object at 0x05A0A910>
>>> plt.ylabel('distancia en metros')
<matplotlib.text.Text object at 0x05A3C430>

Desconetar la interactiva con plt.ioff() y en el script:

>>> plt.show()
cinemática velocidad media gráfica

Colores y marcas de punto

Nos permiten realizar las gráficas de datos disponibles en un arreglo.

Se utiliza: plt.plot ( x, y, propiedades);

Las propiedades como el color y el punto se especifican entre apóstrofes:

LetraColorSímboloforma
bBlue (azul).Punto
gGreen(verde)ocírculo
rRed (rojo)xMarca de X
yYellow (amarillo)+Marca de +
kBlack (negro)scuadro
wWhite(blancovTriángulo
mmagentaopentagrama

las instrucciones a usar son:

>>> plt.plot(t,v,'ro-')
[]
>>> plt.title('velocidad observada vs tiempo acumulado')
>>> plt.xlabel('tiempo en segundos')
>>> plt.ylabel('velocidad en m/s')
>>> plt.show()

con lo que se obtiene

cinemática velocidad media línea y puntos muestra

Taller - Aceleración media

Referencia: Física Universitaria Sears –Zemanski. Vol 1. Edición 12. Ejercicio 2.12

(2.12). Un piloto de pruebas de Automotores Galaxia, S.A., está probando un nuevo modelo de automóvil con un velocímetro calibrado para indicar m/s en lugar de mi/h. Se obtuvo la siguiente serie de lecturas  durante una prueba efectuada en una carretera recta y larga:

tiempo(s)0246810121416
Rapidez(m/s)00261016192222

a) Calcule la aceleración media en cada intervalo de 2 s.
¿La aceleración es constante? ¿Es constante durante alguna parte de la prueba?

b) Elabore una gráfica vx  -  t con los datos, usando escalas de 1 cm = 1 s horizontalmente, y 1 cm = 2 m/s verticalmente.
Dibuje una curva suave que pase por los puntos graficados.

Mida la pendiente de la curva para obtener la aceleración instantánea en: t =9 s, 13 s y 15 s.

Desarrollar el literal a) en Python

tiempo  = [0.0, 2, 4, 6,  8, 10, 12, 14, 16]
rapidez = [0,   0, 2, 6, 10, 16, 19, 22, 22]

Subgráficos (subplots)

gráficas y subgráficas

Permiten realizar grupos de gráficos en un esquema tipo matricial.
gráfica, cuadro=plt.subplots(2)

El índice del primer cuadro es el cero
cuadro[0].plot(x,y)

El siguiente cuadro es el uno
cuadro[1].step(tiempo,acelera,'r')

Se pueden añadir o cambiar las propiedades de un cuadro:
cuadro[0].set_title('tiempo vs rapidez')

cinemática grafica y subgráfica

Las instrucciones en Python desde la toma de datos son

# FCNM-ESPOL. Física con python
# calcular aceleracion media por intervalo
import numpy as np
import matplotlib.pyplot as plt

# INGRESO
puntos  = int(input('¿puntos observados?:'))
tiempo  = np.zeros(puntos,dtype=int)
rapidez = np.zeros(puntos,dtype=float)
i = 0
while (i<puntos):
    tiempo[i]  = int(input('tiempo transcurrido (s):'))
    rapidez[i] = float(input('distancia recorrida (m/s):'))
    i = i + 1

# PROCEDIMIENTO
acelera = np.zeros(puntos,dtype=float)
i = 0
acelera[0] = 0
i = 1
while (i<puntos):
    acelera[i] = rapidez[i]-rapidez[i-1]
    i = i + 1

En el bloque de salida se puede añadir:

#grafica con dos cuadros
grafica,cuadro = plt.subplots(2)
cuadro[0].plot(tiempo,rapidez)
cuadro[0].set_title('tiempo vs rapidez')
cuadro[0].set_ylabel('rapidez (m/s)')
cuadro[1].step(tiempo,acelera,'r')
cuadro[1].set_title('tiempo vs aceleracion media')
cuadro[1].set_xlabel('tiempo (s)')
cuadro[1].set_ylabel('aceleracion (m/s2)')
plt.show()



Unidades FP