亞太科學教育論壇, 第三期, 第二冊, 文章九(二零零二年十二月)
賴莉飛、王笑君、吳先球
最小二乘法應用於中學物理實驗舉例
上一頁 內容 下一頁

四.程式設計

對具有線性關係的一對物理量x, y測出一系列測量值xi, yi ( i = 1, 2 ...n),用最小二乘法求"最佳"線性方程 y = A + B x 的參數A, B,以及在橫軸上的截距C。

該實驗的C語言程式.
#define max 40
#include <math.h>
#include <stdio.h>
float X[max],Y[max];
void main(void)
{int i,N;
float Sx,Sy,Sxx,Syy,Sxy;
float D,B,A,C;
Sx=0;Sy=0;Sxx=0;Syy=0;Sxy=0;
printf("\n\n\n\n\n please input number of team\n");
scanf("%d",&N);
printf("please input experiment data x y\n");
for(i=0;i<=N-1;i++)
scanf("%f%f",&X[i],&Y[i]);
for(i=0;i<=N-1;i++){
Sx=Sx+X[i];
Sxx=Sxx+X[i]*X[i];
Sy=Sy+Y[i];
Syy=Syy+Y[i]*Y[i];
Sxy=Sxy+X[i]*Y[i];
D=N*Sxx-Sx*Sx; B=(N*Sxy-Sx*Sy)/D;
A=(Sxx*Sy-Sx*Sxy)/D;C=-A*B;}
printf("B=%1.3f,A=%1.3f,C=%1.3f\n",B,A,C);
printf("\n\n\n Explain: A,B stand for the coefficient of equation y=A+Bx\n");
printf(" C stand for the interception of x axle\n");}

螢幕顯示運行結果:  
please number of data
     
11
(輸入資料的組數)
please input experiment data x y
(輸入每組資料的x,y值)
0.03 1.45
0.06 1.42
0.09 1.38
0.12 1.34
0.15 1.31
0.18 1.28
0.17 1.27
0.14 1.32
0.11 1.36
0.08 1.39
0.05 1.43
     

D=0.273,B=-1.214,A=1.489,C=1.227
(螢幕顯示結果)
  該線性方程為:y=1.489-1.214x
可知:電源的電動勢 E = 1.489,內電動勢 r = 1.21



Copyright (C) 2002 HKIEd APFSLT. Volume 3, Issue 2, Article 9 (Dec., 2002). All Rights Reserved.