/************************* Program 2.B ****************************/ /* */ /************************************************************************/ /* Please Note: */ /* */ /* (1) This computer program is written by Tao Pang in conjunction with */ /* his book, "An Introduction to Computational Physics," published */ /* by Cambridge University Press in 1997. */ /* */ /* (2) No warranties, express or implied, are made for this program. */ /* */ /************************************************************************/ #include #include main() /* Program to fit the Millikan experimental data to a linear curve p(x) = a*x+b directly. One can find a and b from partial D/partial a = 0 and partial D/partial b = 0 with D = sum (p(x_i)-f(x_i))**2. The result is a = (c1*c3- c4*n)/(c1**2-c2*n) and b = (c1*c4-c2*c3)/(c1**2-c2*n) with n being the number of points, c1 = sum x_i, c2 = sum x_i**2, c3 = sum f(x_i), and c4 = sum x_i*f(x_i). Copyright (c) Tao Pang 1997. */ { int i,n; double c1,c2,c3,c4,a,b,c; double x[]={4,5,6,7,8,9,10,11,12,13,14,15,16,17,18}; double f[]={6.558,8.206,9.880,11.50,13.14,14.81,16.40,18.04, 19.68,21.32,22.96,24.60,26.24,27.88,29.52}; n = 15; c1 = 0; c2 = 0; c3 = 0; c4 = 0; for (i = 0; i < n; ++i) { c1 = c1+x[i]; c2 = c2+x[i]*x[i]; c3 = c3+f[i]; c4 = c4+f[i]*x[i]; } c = c1*c1-c2*n; a = (c1*c3-c4*n)/c; b = (c1*c4-c2*c3)/c; printf("The fundamental charge is %6.4lf +- %6.4lf\n", a,fabs(b)); }