Ayudaaa Mi código no ejecuta, estoy aprendiendo :(

Iniciado por Boris Morales, 12 Octubre 2020, 23:42 PM

0 Miembros y 1 Visitante están viendo este tema.

Boris Morales



#Importamos todas las librerías necesarias
from matplotlib.pylab import *
import matplotlib.pyplot as plt
import numpy as np
from math import *
from sympy import *
from sympy.plotting import *
from time import *
from scipy import *
asctime()
clock()
#introducimos los datos
while True:
    try:
        β=float(input("introduzca el ángulo en grados β = "))
        except ValueError:
        print ()
        print("Cantidad Incorrecta")
        print ()
        continue
    break
while True:
    try:
        vi=float(input("introduzca la velocidad inicial en (m/s) vi = "))

    except ValueError:
        print ()
        print("Cantidad Incorrecta")
        print ()
        continue
    break
print ()
θ=((β*pi)/180)
print ("θ=",θ)
g=9.81 # m/s**2
print ()
a=tan(θ)
b=((g)/((2*vi**2)*cos(θ)**2))
print ()
ymax=(vi**2)*(np.sin(θ)*sin(θ))/(2*g)
xmax=(vi**2)*(np.sin(2*θ))/(g)
print ("................................................................................")
print ("................................................................................")
tmax=(vi*sin(θ))/(g)
tv=2*(tmax)
# Salidas de los datos calculados
print (str("La altura máxima  alcanzada por el proyectil es: Ymax")+" = "+str(ymax)+" m")
print (str("El alcance máximo horizontal  del proyectil es: Xmax")+" = "+str(xmax)+" m")
print ("................................................................................")
print ("................................................................................")
print ("La altura máxima (m) alcanzada por el proyectil es: Ymax =",format(ymax,".2f"))
print ("El alcance máximo horizontal(m) del proyectil es: Xmax =",format(xmax," .2f"))
print ("................................................................................")
print ("................................................................................")
print ("El tiempo máximo t1max (s) que alcanza el proyectil para el ángulo β es: t1max =",format(tmax,".2f"))
print ("El tiempo de vuelo t1v(s) que alcanza el proyectil para el angulo β es: t1v =",format(tv,".2f"))
print ("................................................................................")
print ("................................................................................")

# Definimos la ecuación de la trayectoria
def f(x):
    return(a*x-b*x**2)
x=np.linspace(0,xmax,500)
#creamos la figura
plt.figure("FISICA APLICADA",figsize=(10,8),dpi=80,facecolor="y",edgecolor="c")   
plt.axes(axisbg="orange")
# añadimos el titulo
title("LANZAMIENTO DE PROYECTILES",
fontsize=15,color="blue",verticalalignment="baseline",horizontalalignment = "center") 
# añadimos el subtitulo
plt.suptitle("CINEMATICA",fontsize=20,color="red")

#añadimos las etiquetas de los ejes
xlabel("xmax",fontsize=20,color="red")                                     
ylabel("ymax",fontsize=20,color="blue")
#añadimos texto
plt.text(((np.argmax(f(x)))/2),np.max(f(x))+1,"vi=",fontsize=10)
plt.text(((np.argmax(f(x)))/2)+11,np.max(f(x))+1,(str(vi)+"m/s"),fontsize=10)
#mostrar la fecha y la hora actual formateadas :",asctime()
#mostrar el tiempo real de ejecucion de este proceso :",clock()
plt.text(2,np.max(f(x))+1,("fecha/hora:"+str(asctime())),fontsize=10,color="green")
plt.text(2,np.max(f(x))-1,("tiempo(s):"+str(clock())),fontsize=10,color="blue")

# Añadimos la rejilla en la gráfica
plt.grid(True)                                                             
plt.grid(color = '0.5', linestyle = '--', linewidth = 1)
# Añadimos los ejes
# plt.axis("tight")                                     
                 
# dibujamos y ponemos etiquetas a la gráfica
plt.text(3,1,β,fontsize=10)
plt.plot(x, f(x), "red", linewidth = 2, label = (str(β)+"º"))   
# añadimos la leyenda
plt.legend(loc = 4,fontsize=10)                                                         
#anotaciones en el gráfico
plt.annotate('Altura Máxima',
xy = (xmax/2, ymax),
xycoords = 'data',
xytext = (-70, -50),
textcoords = 'offset points',
arrowprops = dict(arrowstyle = "->",
connectionstyle = "arc, angleA = 0,armA = 30,rad = 50"),
# dibujar tabla dentro del gráfico
valores = [[format(np.max(xmax),".2f"),format(np.min(ymax),".2f")]]
etiquetas_col = ["xmax (m)", "ymax (m)"]
plt.table(cellText=valores, colLabels = etiquetas_col, colWidths = [0.15]*len(f(x)),loc='upper right')
# guarda la gráfica con 300dpi (puntos por pulgada)en python34-ejemplos curso python
#plt.savefig("figura_Lanzamiento Proyectiles_1.pdf", dpi = 300)           
# mostramos en pantalla la gráfica
plt.show()

.:Xx4NG3LxX:.

Te recomiendo poner todo el código entre las balizas:
[code]TODO TU CÓDIGO AQUÍ[/code]
"Quizá Batch no sea un lenguaje de programación, pero no obstante deja de ser útil. Asi que no anden diciendo «Que ganas de perder el tiempo»"



tincopasan

#2
hola:
       hay tantas cosas mal que hay que hacer casi todo de nuevo, demasiado código para alguien que está aprendiendo, pero bueno, se puede empezar de a poco y una cosa por vez. No te voy a hacer el código pero si puedo intentar ayudarte paso a paso.
1)
Código (python) [Seleccionar]
#Importamos todas las librerías necesarias
from matplotlib.pylab import *
import matplotlib.pyplot as plt
import numpy as np
from math import *
from sympy import *
from sympy.plotting import *
from time import *
from scipy import *
asctime()
clock()



hay librerias que no veo que usas, las agregaremos cuando sean necesarias, para empezar ninguna, lo mismo que las últimas dos funciones declaradas ¿de dónde salen?

2) desde el inicio ya está mal
Citar
#introducimos los datos
while True:
   try:
       β=float(input("introduzca el ángulo en grados β = ")) -#que ganas de complicar el nom,bre de las variables
       except ValueError: #desde acá está mal la indentación
       print ()
       print("Cantidad Incorrecta")
       print ()
       continue
   break
while True:
   try:
       vi=float(input("introduzca la velocidad inicial en (m/s) vi = "))

   except ValueError:
       print ()
       print("Cantidad Incorrecta")
       print ()
       continue
   break
print ()

hasta acá la lógica está incorrecta, te muestro como haría uno y vos modificas el otro.

Código (python) [Seleccionar]

while True:
   try:
       angulo=float(input("introduzca el ángulo en grados β = ")) #usemos variables significativas
       break
   except ValueError:
       print("\nCantidad Incorrecta\n")
print(angulo)#no es necesario, lo uso para que vayamos viendo el resultado
 

modifica el otro while

3)
Citarθ=((β*pi)/180)
tambíen hay que cambiar el nombre de la variable, no es obligatorio, pero si recomendable y ahora necesitamos obtener "pi"

tu codigo:

Código (python) [Seleccionar]
from math import *

si bien no está mal, estas cargando en memoria datos innecesarios, sería mejor:

Código (python) [Seleccionar]
from math import pi

si al fin y al cabo es lo único que usaremos por ahora.

Código (python) [Seleccionar]
grados=((angulo*pi)/180)

en fin, pocas líneas muchas cosas incorrectas, si las modificas y las posteas vemos de seguir, sino espera que alguien te corrija todo el código.

Saludos

Boris Morales

.:Xx4NG3LxX:.

tincopasan

Muchas gracias a ambos por sus consejos, y si realmente me estaba basando de algunos videos y foros por eso el exceso de info. Pero me gusta de verdad aprender de los mejores así que si efectivamente lo seguiré intentando  ::)

Boris Morales

Código (python) [Seleccionar]
[color=yellow][/color]

Estimado tincopasan, no se si aún siga por aquí tarde un poco pero ya le hice correcciones, lo que no entiendo es por que al sacar el coseno en "vxO"  :-\


from math import pi
from math import tan
from math import cos
from math import sin
import numpy as np
import matplotlib.pyplot as plt

while True:
    try:
        vi = float(input("Introduzca la velocidad inicial en (m/s) : "))
        break
    except ValueError:
        print("Cantidad Incorrecta")
print("m/s =",vi)

while True:
    try:
        angulo = float(input("Introduzca el ángulo en grados: "))
        break
    except ValueError:
        print("\nCantidad Incorrecta\n")
print(angulo,"°")#no es necesario, lo uso para que vayamos viendo el resultado

while True:
    try:
        g = float(input("Introduzca el valor de gravedad en m/s^2: "))
        break
    except ValueError:
        print("\nCantidad Incorrecta\n")
print("\ng =",g)

grados = ((angulo*pi)/180)
print ("\ngrados =",grados)

while True:
    try:
        xo = float(input("Posición horizontal inicial [x0]: "))
        break
    except ValueError:
        print("\nCantidad Incorrecta\n")

while True:
    try:
        yo = float(input("Posición vertical inicial [y0]: "))
        break
    except ValueError:
        print("\nCantidad Incorrecta\n")


print()
a = tan(grados)
b = ((g)/((2*vi**2)*cos(grados)**2))
print()
ymax=(vi**2)*(np.sin(grados)*sin(grados))/(2*g)
xmax=(vi**2)*(np.sin(2*grados))/(g)
vho = (cos(angulo))
print("Un cuerpo lanzado con una velocidad inicial de Vo=",vi,"m/s y un ángulo de α=",angulo,"°,")
print("iniciará su trayectoria con una velocidad horizontal de vxO: ",vho)
print("----------------------------------------------------------------------")
print("----------------------------------------------------------------------")
tmax=(vi*sin(grados))/(g)
tv=2*(tmax)
print()
print(str("La altura máxima  alcanzada por el proyectil es: Ymax")+" = "+str(ymax)+" m")
print(str("El alcance máximo horizontal  del proyectil es: Xmax")+" = "+str(xmax)+" m")
print("----------------------------------------------------------------------")
print("----------------------------------------------------------------------")
print("La altura máxima (m) alcanzada por el proyectil es: Ymax =",format(ymax,".2f"))
print("El alcance máximo horizontal(m) del proyectil es: Xmax =",format(xmax," .2f"))
print("----------------------------------------------------------------------")
print("----------------------------------------------------------------------")
print("El tiempo máximo t1max (s) que alcanza el proyectil para el ángulo β es: t1max =",format(tmax,".2f"))
print("El tiempo de vuelo t1v(s) que alcanza el proyectil para el angulo β es: t1v =",format(tv,".2f"))
print("----------------------------------------------------------------------")
print("----------------------------------------------------------------------")


Me podrian orientar que falta por que en el coseno de 60° me da -0.9524129804151563 :(


Tachikomaia

Yo lo que sé es que en QBASIC, Clipper y Macromedia Flash 5, no se requiere importar cosas. Los 2 1eros no me acuerdo bien, quizá me equivoque. Y MF5 tal vez para los sonidos o algo que no recuerdo.

Yo en tu lugar cambiaría de lenguaje.

Boris Morales

Tachikomaia

Rayos jaja es que ya me había animado en esto, pero si no hay otra manera si tendré que cambiarlo :((

tincopasan

#7
hola:
el problema que tienes es que la función coseno es en base a radianes no  a grados por lo tanto podrías agregar:
Código (python) [Seleccionar]

from math import radians

vho = (cos(radians(angulo)))



Edito:

otra cosa:
Código (python) [Seleccionar]

from math import pi
from math import tan
from math import cos
from math import sin


es más simple:

Código (python) [Seleccionar]


from math import pi, tan, cos, sin


PD: si vas a dejar por cada cosa que no puedas hacer, no intentes programar , sin importar el lenguaje.

Tachikomaia

Muy profundo, pero no olvidemos Brainfuck y similares y que el OP está haciendo algo que parece mucho más complicado de lo que parece saber hacer. Debería intentar cosas de dificultad menor.

Boris Morales

Bien muchas gracias en verdad a ambos por sus conocimientos

Y tincopasan, una disculpa, jamás fue mi intención molestar u ofender