寻找“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颜色指数转换为温度。 有没有人理解这是如何工作的,输出值是否是以摄氏度或开尔文为单位的近似值?
它与对数产品有关吗?
答案 0 :(得分:4)
B-V指数基本上是一种能够改变通过“蓝色”光线的光强度之差的函数。一个“可见的”过滤器进入温度。
该函数可以接近10 9度多项式,其中多项式基本上是C1 * bv 0 + C2 * bv 1 + ...... + C8 * bv 7 。
由于我们谈论恒星温度,输出将是开尔文。
注意,用于多项式函数的Horner算法通常更精确......
答案 1 :(得分:2)
我认为温度在Kelvin
,因为天文学家使用Kelvin
而不是Celcius
非常常见。
和
如果log base X = Y则X = base 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));
此外,此公式与 Taylor Series 非常相关。
// 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);