2

在寻找“BV 颜色指数到温度的转换公式”时

我发现了这个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);
   }

这应该将BV颜色指数转换为温度。有谁知道这是如何工作的,以及输出值是否是摄氏度或开尔文温度的近似值?

它与对数的产品有关吗?

4

2 回答 2

4

BV 指数基本上是一个函数,它可以转换通过“蓝色”对应的光的强度之间的差异。一个“可见”的过滤器进入温度。

这个函数可以被视为 10 9th polynomial,其中多项式基本上是 C1*bv 0 + C2*bv 1 + ... + C8*bv 7

由于我们谈论的是恒星温度,因此输出将以开尔文为单位。

请注意,多项式函数的霍纳算法通常更精确......

于 2010-03-11T17:23:02.280 回答
2

我认为温度是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);
于 2010-03-11T17:25:32.013 回答