曲线拟合估计参数 - 平方反比定律

时间:2013-04-27 08:49:10

标签: matlab curve-fitting

我想制作一个情节力量与位置(对于库仑定律)并估计常数e0。 我有电荷值,q1 = 1,q2 = 1。 我有例如

position=[0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0,1.1];

force=[0.08,0.015,0.013,0.0062,0.0016,0.00519,-0.00159,0.00118,...
    0.0061,0.00155,0.00143];

库仑是F =(1/4 * pi * e0)* q1 * q2 / r ^ 2。 所以,它的形式是:

y = ax ^ -m,其中a =(q1 * q2 / 4 * pi * e0)

我在做:

p=polyfit(-log10(position),log10(force),1);  % I am not sure about  '1' and minus

m=p(1);
a=10^(p(2)); % I am not sure about a 



xp=0.1:0.1:1.1;
yp=a*xp.^(-m);


plot(position,force,'o',xp,yp)

e0=q1*q2/4*pi*a

我找不到适合e0的值。我做错了什么? m值应为-2但我正在服用:

  

m =

     

1.6287 - 0.2008i

2 个答案:

答案 0 :(得分:3)

有两个原因是错误的。首先,你从库伦定律的定义中错过了一些括号。它应该是

F = 1/(4*pi*e0) * q1 * q2 * r^-2

这意味着您对e0的最终计算应该是

a = 10^p(2);
e0 = ((q1 * q2) / (4 * pi)) / a;

这是错误的另一个原因是,事实上,对于您的背景,法律的定义仍然是错误的。你只有正面费用(q1q2),但很明显,力量在某些时候变为负数。由于您正在使用日志空间来估计参数,因此无法使用,因为您将获得复杂的数字。您对数据的库仑定律的定义应为

|F| = 1/(4*pi*e0) * |q1 * q2| * r^-2

也就是说,你只有绝对值。因此,您应该使用abs(force)而不仅仅是force进行拟合。

答案 1 :(得分:0)

由于a =(q1 * q2 / 4 * pi * e0),e0应为

e0=a/(q1*q2/4*pi)

检查一下。