对数函数的变换&缩放

时间:2015-10-22 21:54:10

标签: python math matplotlib physics curve-fitting

所以我需要这样做:

定义合适的拟合函数,"普朗克(l,* p)"到普朗克函数的实验数据。此功能基于普朗克公式:

Bλ(T) = (2hc^2/l^5) / (exp(hc/klt) -1)  

,其中 l 是波长组, k 是玻尔兹曼常数, h 是普朗克常数, c 是光的速度 我需要在 p 中有2个拟合参数,一个是 T (温度),另一个是缩放因子。

我绘制了实验数据和 T 的拟合函数,我通过反复试验发现它的峰值等于数据的峰值,这是我的结果: plot 显然,我不知何故需要转换蓝色函数,以便它可以通过比例因子落到实验数据上。什么是比例因子?如何使用它将整个图形向右移动5个单位? 这是一个对数图,所以像y=x^2 ==> y=(x-5)^2 这样的东西不会起作用。 有什么想法吗?

我正在使用curve_fit来填充数据。

1 个答案:

答案 0 :(得分:-1)

要沿x轴的对数图获得曲线偏移,可以将x轴参数缩放一个常数。也就是说,使用b*L代替L并将b视为适合的免费参数。

对于这个特殊的问题,通常人们就绝对意义上知道波长(尽管我可以想象这种情况并非如此,例如未经校准的传感器,移动源等)并且它不会有意识地扩大它,特别是超过10倍。如果您知道波长的情况但仍然得到移位的图,您的波长可能有单位错误,因为这会导致类似的移位。情况可能并非如此,但这是导致这种转变的常见错误。

缩放x轴参数或更改单位将沿着对数轴移动曲线,因为log(ab) = log(a) + log(b)。总的来说,虽然x轴上的日志是一个不必要的混淆,但似乎你的数据无论如何都是以线性间距拍摄的,所以如果你遇到麻烦,最好在绘制时首先让它工作。在处理日志版本之前的线性轴(可能只是处理峰值附近的部分)。

打电话给上面的"转移"虽然令人困惑,因为它只是图像意义上的转变,而不是契合或功能的转变。相反,通过b*L代替L,可以扭曲函数,但是在某种程度上匹配日志轴的失真,所以它只是图片的移位,而不是功能。转换函数的一般方法是在参数中添加一个术语,因此f(x)因为f(x+c),这总是有效。

最后,在原始图中标记轴的方式令人困惑。例如,我最初读的x轴就像"波长(嗯)"。要取一个数字的log,数字必须是无单位的,因此将轴标记为log(L/1um)或类似的东西会更准确。