Cálculo da magnitude aparente de um satélite

9

Estou escrevendo um programa que envolve o cálculo da magnitude aparente dos satélites a partir de uma localização no solo. Atualmente, tenho a magnitude intrínseca dos satélites e o ângulo da fase solar em graus. Não consigo encontrar uma fórmula que funcione.

eu tentei

magnitude = intrinsicMagnitude - 15 + 5 * Math.Log(distanceToSatellite) - 2.5 * Math.Log(Math.Sin(B) + (Math.PI - B) * Math.Cos(B));

(B é o ângulo de fase)

... mas não funciona (está retornando números como +30). Sei que está errado, porque estou comparando-o aos passes de satélite heavens-above.com.

intrinsicMagnitude = magnitude visual a 1000 km (Use -1,3)

distanceTo Satellite = Distância do observador em relação ao satélite em km (Use 483)

B = É isso que estou tentando descobrir.

No artigo, ele diz o que é isso, mas diz algumas outras coisas que eu não entendo. O ângulo de fase que você usa para obter isso deve ser 113.

A saída alvo desta equação deve ser em torno de -3.

Nick Brown
fonte
Isto é o que eu tenho trabalhado com stackoverflow.com/questions/19739831/… #
Nick Brown
Aqui é onde a equação é de satobs.org/seesat/Apr-2001/0313.html
Nick Brown
11
O que é "magnitude intrínseca"? Escreva sua resposta em termos de fórmulas matemáticas, com símbolos definidos.
Rob Jeffries
É a abertura do satélite a 1000 km de distância. Por uma questão de exemplo, use -1.3
Nick Brown
11
@uhoh A magnitude intrínseca é a magnitude aparente do objeto na fase completa a partir de 1000 km de distância
Nick Brown

Respostas:

3

Isto é para satélites com tamanho e orientação desconhecidos, mas com magnitude padrão conhecida (magnitude padrão pode ser encontrada na página de informações de satélite dos céus acima, o número é chamado magnitude intrínseca).

            double distanceToSatellite = 485; //This is in KM
            double phaseAngleDegrees = 113.1; //Angle from sun->satellite->observer
            double pa = phaseAngleDegrees * 0.0174533; //Convert the phase angle to radians
            double intrinsicMagnitude = -1.8; //-1.8 is std. mag for iss


            double term_1 = intrinsicMagnitude;
            double term_2 = 5.0 * Math.Log10(distanceToSatellite / 1000.0);

            double arg = Math.Sin(pa) + (Math.PI - pa) * Math.Cos(pa);
            double term_3 = -2.5 * Math.Log10(arg);

            double apparentMagnitude = term_1 + term_2 + term_3;

Isso dará a aparente magnitude do satélite. Nota: Eu dei a fórmula em C #

Nick Brown
fonte
Parabéns!
uhoh
2

Parabéns a @NickBrown por sua solução ! Com base nessa equação e em algumas referências adicionais, adicionarei um pouco mais.

O cálculo da magnitude visual requer três parâmetros de entrada

  1. quão bom refletor o objeto é
  2. o ângulo entre a iluminação e a visualização
  3. as distâncias entre o iluminador e o visualizador são do objeto

Para objetos astronômicos, usamos magnitude absoluta para o item # 1; para a visualização por satélite, tanto a magnitude absoluta quanto a magnitude intrínseca são usadas. A magnitude absoluta é a magnitude visual do objeto a 1 UA do Sol e 1 UA de você, visualizada em full (ângulo de fase = 0), o que significa que você está sentado ao lado do Sol.

A magnitude intrínseca é semelhante, mas agora você está a apenas 1.000 km do objeto com o Sol por cima do ombro.

De qualquer maneira, todas as informações de albedo, tamanho e forma são agrupadas na magnitude absoluta ou intrínseca, deixando apenas distâncias e ângulos.

O ângulo entre a direção da iluminação e a direção da visualização é chamado ângulo de fase . Pense nas fases da Lua, por exemplo. Se o ângulo de fase da Lua fosse 90 graus, seria uma meia-lua. Zero seria lua cheia e 180 graus seria lua nova.

A modulação do brilho em função do ângulo de fase foi proposta por Vallerie, EM III, Investigação de dados fotométricos recebidos de um satélite artificial da terra , AD # 419069, Instituto de Tecnologia da Força Aérea, Centro de Documentação de Defesa, Alexandria, Virgínia, 1963, que eu encontrei em Observações e Modelagem de Satélites GEO em Grandes Ângulos de Fase por Rita L. Cognion, também em Researchgate

A dependência é dada pelo termo

1 1π(pecado(ϕ)+(π-ϕ)porque(ϕ))

e parece

insira a descrição da imagem aqui

Para o satélite em questão a uma distância de 483 quilômetros e uma magnitude intrínseca de -1,3, a magnitude aparente parece ser de cerca de -2,0 e sua dependência do ângulo de fase é a seguinte:

insira a descrição da imagem aqui


Nem todas as naves são esféricas com superfícies brancas difusas nem em forma de vaca esférica.

insira a descrição da imagem aqui

Para dependência do ângulo de fase de algumas formas mais familiares, consulte a Figura 2 em Magnitude visível de satélites típicos em órbitas síncronas William E. Krag, MIT, 1974 AD-785 380, que descreve bem o problema.

insira a descrição da imagem aqui

def Mapparent_from_Mintrinsic(Mint, d_km, pa):
    term_1 = Mint
    term_2 = +5.0 * np.log10(d_km/1000.)
    arg    = np.sin(pa) + (pi - pa) * np.cos(pa)
    term_3 = -2.5 * np.log10(arg)
    return term_1 + term_2 + term_3

import numpy as np
import matplotlib.pyplot as plt

halfpi, pi, twopi = [f*np.pi for f in (0.5, 1, 2)]
degs, rads = 180/pi, pi/180

Mintrinsic   = -1.3
d_kilometers = 483.

phase_angles = np.linspace(0, pi, 181)

Mapp = Mapparent_from_Mintrinsic(Mintrinsic, d_kilometers, phase_angles)

# https://astronomy.stackexchange.com/q/28744/7982
# https://www.researchgate.net/publication/268194552_Large_phase_angle_observations_of_GEO_satellites
# https://amostech.com/TechnicalPapers/2013/POSTER/COGNION.pdf
# https://apps.dtic.mil/dtic/tr/fulltext/u2/785380.pdf

if True:
    plt.figure()

    F = (1./pi)*(np.sin(phase_angles) + (pi-phase_angles)*np.cos(phase_angles))

    plt.suptitle('F = (1/pi)(sin(phi) + (pi-phi)cos(phi))', fontsize=16)

    plt.subplot(2, 1, 1)
    plt.plot(degs*phase_angles, F)
    plt.ylabel('F', fontsize=16)

    plt.subplot(2, 1, 2)
    plt.plot(degs*phase_angles, -2.5*np.log10(F))
    plt.xlabel('phase angle (degs)', fontsize=16)
    plt.ylabel('-2.5log10(F)', fontsize=16)
    plt.ylim(-1, 11)

    plt.show()

if True:
    plt.figure()
    plt.plot(degs*phase_angles, Mapp)
    plt.plot(degs*phase_angles[113], Mapp[113], 'ok')
    plt.text(90, -5, '{:0.2f} at {:0.1f} deg'.format(Mapp[113], 113), fontsize=16)
    plt.xlabel('phase angle (degs)', fontsize=16)
    plt.ylabel('mag', fontsize=16)
    plt.title('apparent mag of intrinsic mag=-1.3 at 483 km', fontsize=16)
    plt.ylim(-10, 15)
    plt.show()
uhoh
fonte
11
vaca sagrada, obrigado pela resposta. Vou tentar implementar isso em vez do que eu forneci. Vou deixar você saber como é bom.
Nick Brown
@NickBrown Acabei de usar sua equação , não deve ser diferente do seu resultado. Esta resposta é apenas para adicionar informações e explicações adicionais.
uhoh
Ah ok. Eu não li completamente suas funções. obrigado!
Nick Brown
11
Hmm. A minha, na verdade, é imprecisa. O seu funciona perfeitamente. Vou editar minha resposta para mostrar sua versão em c #. obrigado!
Nick Brown
11
não é realmente importante. Algumas pessoas usam -1,3, outras usam -1,8
Nick Brown