curve fitting estimate parameter - inverse square law

↘锁芯ラ 提交于 2019-12-20 06:32:14

问题


I want to make a plot force vs position (for coulomb's law) and estimate the constant e0. I have the values of charges , q1=1,q2=1. I have for example the

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];

Coulomb is F= (1/4*pi*e0) * q1*q2/r^2. So, it is in the form:

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

I am doing:

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

I am not finding a right value for e0.Am I doing something wrong? The m value should be -2 but I am taking :

m =

1.6287 - 0.2008i


回答1:


There are a couple of reasons this is wrong. Firstly, you've missed some parentheses out of your definition of Coulomb's law. It should be

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

This means that your final calculation of e0 should go like

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

The other reason this is wrong is that, in fact, the definition of the law is still wrong for your context. You have only positive charges (q1, q2) there, but clearly the force goes negative at some point. Since you're working in log-space to estimate the parameters, this is not going to work as you will get a complex number out. Your definition of Coulomb's law for your data should be

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

That is, you only have the absolute values. Therefore you should do the fitting using abs(force) instead of just force.




回答2:


Since a= (q1*q2/4*pi*e0), e0 should be

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

Check it.



来源:https://stackoverflow.com/questions/16250137/curve-fitting-estimate-parameter-inverse-square-law

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!