Jump to content

Função em Python: Por que minha função atualizaNave não está produzindo o resultado esperado?


Apollo17273738

Postagens Recomendadas

def atualizaNave(Nave, Astros, delta_t):

    # Extrai as informações da nave

    [posicao_nave, velocidade_nave, raio_nave] = Nave

 

    # Calcula a aceleração resultante exercida pelos astros sobre a nave

    a_resultante = aceleracaoResultante(Astros, posicao_nave)

 

    # Atualiza a velocidade da nave para o instante t + delta_t

    velocidade_nave[0] += a_resultante[0] * delta_t

    velocidade_nave[1] += a_resultante[1] * delta_t

 

    # Atualiza a posição da nave para o instante t + delta_t usando a nova velocidade

    posicao_nave[0] += velocidade_nave[0] * delta_t

    posicao_nave[1] += velocidade_nave[1] * delta_t

 

    # Retorna as novas coordenadas da nave, a lista de astros inalterada e o intervalo de tempo delta_t

    return [posicao_nave, velocidade_nave, raio_nave], Astros, delta_t

estou tendo problemas com essa função na hora a entrada é essa: atualizaNave([[300000, 300000], [8, 5], 10], [[[0, 0], 5.97e+24, 5]], 0.5) e saida ta sendo isso aqui: [[[299998.9284239258, 299997.4284239258], [-2.1431521483000004, -5.1431521483000004], 10], [[[0, 0], 5.97e+24, 5]], 0.5] mas era pra ser isso aqui [[[300001.46421196294, 299999.96421196294], [-2.143152148295533, -5.143152148295533], 10], [[[0, 0], 5.97e+24, 5]], 0.5]

se puderem me ajudar eu agradeço muito 

  • Curtir 1
Link to comment
Compartilhe em outros sites

Fala, @Apollo17273738 (13)!

 

import math

def distancia(p1, p2):
    return math.sqrt((p2[0] - p1[0])**2 + (p2[1] - p1[1])**2)

def aceleracaoResultante(Astros, posicao_nave):
    G = 6.67430e-11  # Constante gravitacional em m^3 kg^-1 s^-2

    a_resultante = [0, 0]
    for astro in Astros:
        posicao_astro, massa_astro, _ = astro
        distancia_astro = distancia(posicao_nave, posicao_astro)
        if distancia_astro == 0:
            continue
        for i in range(2):
            a_resultante[i] += (G * massa_astro / distancia_astro**3) * (posicao_astro[i] - posicao_nave[i])

    return a_resultante

def atualizaNave(Nave, Astros, delta_t):
    [posicao_nave, velocidade_nave, raio_nave] = Nave

    a_resultante = aceleracaoResultante(Astros, posicao_nave)

    velocidade_nave[0] += a_resultante[0] * delta_t
    velocidade_nave[1] += a_resultante[1] * delta_t

    posicao_nave[0] += velocidade_nave[0] * delta_t
    posicao_nave[1] += velocidade_nave[1] * delta_t

    return [posicao_nave, velocidade_nave, raio_nave], Astros, delta_t

# Teste
print(atualizaNave([[300000, 300000], [8, 5], 10], [[[0, 0], 5.97e+24, 5]], 0.5))

veja se isso resolve o problema.

  • Curtir 1
Link to comment
Compartilhe em outros sites

  • Casa do Desenvolvedor mudou o título para Função em Python: Por que minha função atualizaNave não está produzindo o resultado esperado?

Crie uma conta ou entre para comentar 😀

Você precisa ser um membro para deixar um comentário.

Crie a sua conta

Participe da nossa comunidade, crie sua conta.
É bem rápido!

Criar minha conta agora

Entrar

Você já tem uma conta?
Faça o login agora.

Entrar agora


×
×
  • Create New...