Ir para conteúdo
Fórum Script Brasil
  • 0

Simulação física


wesleytufinho42

Pergunta

'''2) Criar um código que descreva o movimento de um paraquedista que salta de uma altura que deve ser informada pelo 
usuário, mas que deva estar entre 1000m e 4000m. O paraquedas deve abrir na altura 700m, modificando a resistência do ar. 
Ao final, o programa deve apresentar o gráfico de posição como função do tempo, indicando a posição de abertura do 
paraquedas (ATENÇÃO: a qualidade de apresentação dos resultados é importante!). O programa também deve informar o tempo 
total desde o pulo até o pouso.'''

import numpy as np
import matplotlib.pyplot as plt

ddt=0
g=9.81
dt=0.1
n1=1
n2=10
v=0
m=50
t=[0]

def veloci(v, gfic, dt):
    if j==0:
        v=v-gfic*dt
    
    return v


altura=float(input('forneça uma altura entre 1000m e 4000m: '))

while altura<1000 or altura>4000:
    altura=float(input('forneça uma altura entre 1000m e 4000m: '))
    
pos=[altura]


while altura>2:
    
    
    if 700<altura<=4000:
        
        peso=m*g
        far=n1*v*v
        fr=peso-far
        
        
        if fr>2:
            
            gfic=fr/m
            
            s=altura-v*dt-gfic*dt*dt*0.5
            v=v+gfic*dt
            ddt=ddt+dt
            
            altura=s
            pos.append(altura)
            t.append(ddt)
            
        else:
            
            s=altura-v*dt
            altura=s
            ddt=ddt+dt
            pos.append(altura)
            t.append(ddt)
            
    else:
        
        j=j+1
        
        v=veloci(v, gfic, dt)
        s=altura-v*dt
        altura=s
        ddt=ddt+dt
        pos.append(altura)
        t.append(ddt)
        
        
        
tempototal = sum(t)
print('tempo de queda igual a {} segundo'.format(tempototal))


plt.figure(figsize=(15,10))
plt.plot(t, pos, color="blue")
plt.xlabel('tempo [s]', fontsize=16)
plt.ylabel('posição [m]', fontsize=16)
plt.title('posição vs tempo', fontsize=18)
plt.grid(True)
plt.show()

 

 

 

 

 

esse é meu programa para solucionar essa questão, gostaria de saber se alguém vê alguma simplificação ou erro da minha parte.

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0
14 minutos atrás, wesleytufinho42 disse:

def veloci(v, gfic, dt):
    if j==0:
        v=v-gfic*dt
    
    return v

j não foi declarado na função, seria uma chamada global? melhor seria passar como argumento na função

j também não é declarado em nenhuma parte do código, vai dar erro

poderia talvez trabalhar nos if/else para retirar um nivel de indentação, mas isso não critico, também não vou falar como fazer, pois o j pode vir a mudar a lógica

22 minutos atrás, wesleytufinho42 disse:

s=altura-v*dt-gfic*dt*dt*0.5

talvez jogar essa formula em uma função para facilitar o entendimento

Link para o comentário
Compartilhar em outros sites

  • 0
6 minutos atrás, ArteEN disse:

j não foi declarado na função, seria uma chamada global? melhor seria passar como argumento na função

j também não é declarado em nenhuma parte do código, vai dar erro

poderia talvez trabalhar nos if/else para retirar um nivel de indentação, mas isso não critico, também não vou falar como fazer, pois o j pode vir a mudar a lógica

talvez jogar essa formula em uma função para facilitar o entendimento

Obrigado pelo comentário, eu tinha esquecido de declarar j na função.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...