Una vez que tengas bien eso, te va a dar constante la Em pero habría que aclarar algunas cosas, la idea para comparar es graficar Ep y Ec es ir comparandolas, incluso está bueno que estén en un mismo gráfico, para compararlas lo más importante es que las grafiques en función de la misma variable y lo más común es graficarlas en función de theta, lo mismo cuando grafiques Em. Por último, si graficas en graficos separados vas a ver que te queda una Em no cte y cuando lo grafiques juntos vas a ver que sí es cte, que raro no? Esto es por un problema de escala, la Em no va a ser cte porque toda la solución que estamos proponiendo es una aproximación, pero con los valores que vos pusiste, Em varía entre 0,0099 y 0,01 o sea nada, en nuesra aproximación esto es re cte. El tema es que cuando veas el gráfico solo de la Em Python te va a acomodar la escala para que veas las diferencias pero si graficas todo junto no puede hacer esto. Probalo!
]]>Todos los problemas están cuando definis las constantes y la variable que vas a usar más adelante:
Ojo que el formato del linspace es: (start, stop, numero de puntos), o sea que así estás creando un vector con 500 valores entre 0 y 0.1. Con esto no llegás a ver ni un período.
Algunas opciones para que cambies esto son:
1) Usar np.arange(start, stop, step)
2) Cambiar el 0.1 por 14 y usar no.linspace(0,14,500) ahí sí vas a incluir un período
Por otro lado, estás diciendo cuanto vale g,l y omega, eso no lo podés hacer, tu libertad es decidir cuanto vale g y l, con eso podes calcular omega = np.sqrt(g/l).
Por último y algo fundamental. Para este problema tuvimos que linealizar, para eso consideramos pequeñas oscilaciones. Esto significa que nada va a funcionar si A = 2, acordate que A es la amplitud del ángulo, A = 2 es un ángulo que recorre de -2 a 2, 4>pi MÁS DE UN SEMICÍRCULO. Esto de pequeño no tiene nada, intenta con A más chico, o mejor todavía, fijate cuál es la amplitud más grande que podés poner para que se te siga conservando la energía.
]]>Abrazo!
]]>Cuando definís las variables así:
theta = A*np.cos(omega*t+phi)
vel= -omega*A*np.sin(omega*t+phi)
acel= -omega**2*A*np.cos(omega*t+phi)
lo que estás haciendo es hacer una cuenta con el array t (que tiene 500 componentes) que da resultados de 500 componentes también. Primero omega multiplica a cada componente de t, después phi suma a cada componente, se le aplica coseno a cada componente y asi…
De esta manera las tres cosas siguen dando arrays de 500 componentes.
Si esto queda claro avanzamos, no sin antes hacer una aclaración, ojo que definiste omega como g/l pero eso es omega cuadrado, omega = np.sqrt(g/l)
Ahora sí, la primera parte del trabajo que calculás theta, vel y acel está muy bien, pero atenta que vel es theta punto, es una velocidad angular, idem para acel.
La segunda parte te hacés un poco de lío, la idea es que calcules las cosas a partir de estas variables que obtuviste, no que generes nuevas. Entonces la energía cinética la deberías calcular con vel y no con el vector v que te armaste nuevo. De la misma manera Ep lo deberías calcular con el vector theta y Em la podés calcular como la suma de las dos o escribirla explicitamente (pero mejor si aprovechas lo que ya hiciste). De esta manera, la Em es una consecuencia de lo que hiciste y no una variable que armás desde 0.
Tu problema antes era que al calcularla desde cero, lo armabas con x0 y v0 y te quedaba un numerito y no un array. Además, de esa manera forzabas a que sea constante y no podés sacar ninguna conclusión de ese resultado.
Trata de hacerlo teniendo en cuenta todo esto y avisame si sale, sino lo volvemos a ver, vamos que se puede!
]]>