B-V в Кельвин формула - PullRequest
2 голосов
/ 11 марта 2010

В поисках «формулы преобразования цветового показателя B-V в температуру»

Я нашел этот javascript:

   var C1 = 3.979145;
   var C2 = -0.654499;
   var C3 = 1.74069;
   var C4 = -4.608815;
   var C5 = 6.7926;
   var C6 = -5.39691;
   var C7 = 2.19297;
   var C8 = -.359496;
   bmv = parseFloat(BV);
   with (Math) {
           logt=
              C1
             +C2*bmv
             +C3*pow(bmv,2)
             +C4*pow(bmv,3)
             +C5*pow(bmv,4)
             +C6*pow(bmv,5)
             +C7*pow(bmv,6)
             +C8*pow(bmv,7);

          t=pow(10,logt);
   }

Который должен конвертировать цветовой индекс B-V в температуру. Кто-нибудь понимает, как это работает, и если выходное значение является приближением температуры в градусах Цельсия или Кельвина?

Это как-то связано с продуктами логарифмов?

Ответы [ 2 ]

4 голосов
/ 11 марта 2010

Индекс B-V в основном представляет собой функцию, которая преобразует разницу между интенсивностью света, проходящего через «синий», соотв. «видимый» фильтр температуры.

К этой функции можно обратиться как полином 10 9-й степени , где полином в основном равен C1 * bv 0 + C2 * bv 1 + ... + C8 * bv 7 .

Поскольку мы говорим о звездных температурах, результат будет в Кельвинах.

Обратите внимание, что алгоритм Хорнера для полиномиальных функций часто бывает более точным ...

2 голосов
/ 11 марта 2010

Я думаю, что температура в Kelvin, потому что астрономам очень свойственно использовать Kelvin вместо Celcius.

Смотрите здесь.

И

если журнал база X = Y, то X = база Y

 log10(t)= C1 +C2*bmv +C3*pow(bmv,2) +C4*pow(bmv,3)
          +C5*pow(bmv,4) +C6*pow(bmv,5) +C7*pow(bmv,6) 
          +C8*pow(bmv,7); 

 t = pow(10,log10(t));

Кроме того, эта формула очень сильно связана с Серией Тейлора .

// Horners algorithm for polynomials 
function Horner(a,n,x)
{
    var result = a[n];
    var i = n - 1;
    while( i >= 0)
    { 
       result = result*x + a[i];
       i-=1; 
    }
    return result;
}

В вашем случае

Array Cs = {C1,C2,C3,C4,C5,C6,C7,C8};
var temperature = Horner(Cs,8,bmv);
...