黃寧曼,蘇關(guān)東,李宮晟
(中國(guó)石油大學(xué),北京 102249)
?
C語(yǔ)言在落球法測(cè)液體粘度實(shí)驗(yàn)中的應(yīng)用
黃寧曼,蘇關(guān)東,李宮晟
(中國(guó)石油大學(xué),北京102249)
在大數(shù)據(jù)時(shí)代,為了提高物理實(shí)驗(yàn)數(shù)據(jù)的處理效率,減少數(shù)據(jù)處理過(guò)程中的人為誤差,本文以落球法測(cè)液體的粘滯阻力系數(shù)實(shí)驗(yàn)為載體,運(yùn)用高效率、結(jié)構(gòu)化、模塊化的編程語(yǔ)言,采取面向過(guò)程的編程技術(shù),編寫了適用于落球法測(cè)液體粘度實(shí)驗(yàn)的C語(yǔ)言程序,并根據(jù)相關(guān)理論計(jì)算了了粘滯阻力系數(shù)的相對(duì)不確定度,從而進(jìn)一步地闡述了C語(yǔ)言程序設(shè)計(jì)在物理實(shí)驗(yàn)數(shù)據(jù)處理中的可行性、優(yōu)越性、可推廣性以及適用性,提出了Excel與C語(yǔ)言結(jié)合、高效率處理物理實(shí)驗(yàn)數(shù)據(jù)的方法。
落球法; C語(yǔ)言程序設(shè)計(jì);粘滯阻力系數(shù);實(shí)驗(yàn)數(shù)據(jù)處理
粘滯阻力系數(shù)又稱為粘度(黏度),是評(píng)價(jià)流體動(dòng)力學(xué)特性的重要參數(shù),對(duì)實(shí)際生產(chǎn),工程實(shí)踐,醫(yī)學(xué)臨床[1]都有重要的指導(dǎo)意義。例如,在石油行業(yè)中,原油的粘度對(duì)油氣田的開發(fā)方式的選擇,對(duì)地面油氣集輸管網(wǎng)的設(shè)計(jì)都有影響,是生產(chǎn)實(shí)踐中需要考慮的重要因素。測(cè)量粘度的方法很多,常用的方法有落球法、毛細(xì)管法、落針?lè)?、轉(zhuǎn)筒法等[2]。其中,落球法測(cè)量液體的絕對(duì)粘度,具有較高的精度,是大學(xué)物理教學(xué)中的經(jīng)典實(shí)驗(yàn)。本次實(shí)驗(yàn)采用C語(yǔ)言程序來(lái)處理數(shù)據(jù),大大提高了數(shù)據(jù)處理的效率。
金屬球在粘性液體中豎直下落時(shí),受三個(gè)豎直方向力的作用:重力,浮力,粘滯阻力,分別用mg,ρ液gV球,f表示,如圖1所示。
根據(jù)斯托克斯公式,在無(wú)限深廣的液體里,有
f=6πηνr
(1)
η、ν、r分別為液體的粘滯阻力系數(shù)(即粘度),小球下落速度,小球半徑。由于待測(cè)液體必須用容器盛放,即不滿足無(wú)限深廣的理想條件,故需要對(duì)斯托克斯公式進(jìn)行密立根幾何修正:
f=6πηνr(1+2.4d/D)(1+1.6d/h)
(2)
d、h、D分別為小球直徑、液柱高度、容器內(nèi)徑。
小球在下落的過(guò)程中,起初小球的速度較小,mg>ρ液gV球+f,小球加速運(yùn)動(dòng);隨著小球速度的增大,粘滯阻力增大,最終金屬球在豎直方向做勻速直線運(yùn)動(dòng)。此時(shí)根據(jù)牛頓第一定律有
mg=ρ液gV球+f
(3)
聯(lián)立(2)(3),得
(4)
將mg=ρ球gV球;V球=πD3/6;v=L/t;r=d/2代入(3)式,得
(5)
L、t分別為小球勻速下落的位移和對(duì)應(yīng)的時(shí)間。
實(shí)驗(yàn)數(shù)據(jù)記錄如表1、表2所示。根據(jù)評(píng)估不確定度的相關(guān),可得落球法測(cè)定液體粘滯系數(shù)的合成不確定度計(jì)算公[3],如下
(6)
圖1 受力分析
實(shí)驗(yàn)次數(shù)123456789測(cè)量?jī)x器量筒直徑D/mm69.2068.8069.30------游標(biāo)卡尺小球直徑d/mm2.2022.2102.1802.1782.210----千分尺下落時(shí)間t/s8.949.058.808.718.968.728.838.788.84秒表
根據(jù)公式(5)和(6)以及不確定度評(píng)定的相關(guān)理論,編制C語(yǔ)言程序,源代碼如下:
#include
#include
#define g 9.80/*重力加速度m/s^2*/
double average(double *a,int n);/*函數(shù)聲明*/
double uncertaintyA(double *a,int n);
double totaluncert(double *a,int n,double d);
void main(){
double a[3],D;/*量筒內(nèi)徑mm*/
double b[5],d;/*小球直徑mm*/
double time[9],t;/*下落時(shí)間s*/
double da=0.04,db=0.04,dc=0.01;/*儀器誤差:游標(biāo)卡尺mm,千分尺mm,秒表s*/
/*η=(ρ球-ρ液)g d^2t/(18L*(1+2.4d/D)*(1+1.6d/h))*/
double L=10.25;/*小球勻速下落的位移cm*/
double h=29.5;/*油柱深度 cm*/
double dp=(7900-960);/*dp=(ρ球-ρ液)kg/m^3*/
double Yita,uncrtnty0,uncrtnty;
int i;
printf("************************************** ");
printf("*****歡迎使用落球法測(cè)粘滯阻力系統(tǒng)***** ");
printf("************************************** ");
printf(" 請(qǐng)輸入量筒的內(nèi)徑(3組 單位mm): ");
for(i=0;i<3;i++){
scanf("%lf",&a[i]);
}
printf(" 請(qǐng)輸入小球的直徑(5組 單位mm): ");
for(i=0;i<5;i++){
scanf("%lf",&b[i]);
}
printf(" 請(qǐng)輸入小球的下落時(shí)間(9組 單位s): ");
for(i=0;i<9;i++){
scanf("%lf",&time[i]);
}
D=average(a,3);
d=average(b,5);
t=average(time,9);
Yita=dp*g*pow(d,2)*t/(18*L*(1+2.4*d/D/10)*(1+1.6*d/h/10))/10000;
uncrtnty0=sqrt(pow(totaluncert(a,3,da)/D,2)+4*pow(totaluncert(b,5,db)/d,2)+pow(totaluncert(time,9,dc)/t,2));
uncrtnty=Yita*sqrt(pow(totaluncert(a,3,da)/D,2)+4*pow(totaluncert(b,5,db)/d,2)+pow(totaluncert(time,9,dc)/t,2));
printf(" 實(shí)驗(yàn)結(jié)果如下: ");
printf("蓖麻油的粘度為:%.2lf Pa*s ",Yita);
printf("相對(duì)不確定度為:%.2lf ",uncrtnty0);
printf("絕對(duì)不確定度為:%.2lf Pa*s ",uncrtnty);
getchar();
}
double average(double *a,int n){/*求平均值函數(shù)*/
double s=0;
int i=0;
for(i;i s=s+a[i]; } return s/n; } double uncertaintyA(double *a,int n){/*貝賽爾法求A類不確定度*/ double s=0; double avg=average(a,n); int i; for(i=0;i s=s+pow((a[i]-avg),2); } return(sqrt(s/(n*(n-1)))); } double uncertaintyB(double d){/*儀器誤差求B類不確定度*/ return d/sqrt(3); } double totaluncert(double *a,int n,double d){/*總不確定度*/ double c=uncertaintyA(a,n); double e=uncertaintyB(d); return sqrt(pow(c,2)+pow(e,2)); } 運(yùn)行結(jié)果如圖2所示: 圖2 運(yùn)行結(jié)果 數(shù)據(jù)的處理是實(shí)驗(yàn)永恒的話題,隨著計(jì)算機(jī)科技的發(fā)展,處理數(shù)據(jù)的方法也向著信息化的方向發(fā)展。 近些年來(lái),學(xué)術(shù)界比較流行的數(shù)據(jù)處理軟件有Excel等辦公軟件,Matlab、Mathematics等數(shù)學(xué)軟件。Excel 等辦公軟件雖然普及程度高,但其在操作過(guò)程中,步驟繁瑣,處理數(shù)據(jù)效率低下,特別是在誤差計(jì)算方面存在著短板;Matlab等數(shù)學(xué)軟件雖然功能強(qiáng)大,但由于其價(jià)格昂貴、入門門檻也比較高,普及程度比較低[3]。 相比之下,用C語(yǔ)言編程來(lái)處理數(shù)據(jù)更加方便,且其精度可以滿足常規(guī)的實(shí)驗(yàn)要求。一方面,相對(duì)與Matlab,C語(yǔ)言在高校教育中相對(duì)普及;另一方面,其面向過(guò)程的特性基本上可以耦合絕大部分的物理量求解過(guò)程。同時(shí),C語(yǔ)言提供大量的數(shù)組、結(jié)構(gòu)體等數(shù)據(jù)類型為批量、高效處理數(shù)據(jù)提供可能;C語(yǔ)言的文件處理機(jī)制更是方便實(shí)驗(yàn)數(shù)據(jù)的輸入輸出??傊?,用C語(yǔ)言編程來(lái)處理實(shí)驗(yàn)數(shù)據(jù)具有一定的可行性、優(yōu)越性、可推廣性。 對(duì)于常見(jiàn)的實(shí)驗(yàn),其數(shù)據(jù)處理都可以通過(guò)Excel和C語(yǔ)言編程結(jié)合來(lái)高效完成。 在適用性方面,C語(yǔ)言編程比較適合數(shù)據(jù)量巨大,計(jì)算公式復(fù)雜,涉及到求物理量的不確定度的實(shí)驗(yàn)[4],比如密立根油滴實(shí)驗(yàn)[5-6],落球法測(cè)粘度實(shí)驗(yàn)等。很好地補(bǔ)充了Excel在處理復(fù)雜計(jì)算時(shí)不方便的短板。 實(shí)驗(yàn)以落球法測(cè)出了蓖麻油的粘滯阻力系數(shù),并給出了不確定度;實(shí)驗(yàn)數(shù)據(jù)處理方面,本實(shí)驗(yàn)采用C語(yǔ)言編程來(lái)處理數(shù)據(jù),簡(jiǎn)潔高效。并進(jìn)一步闡述了C語(yǔ)言程序設(shè)計(jì)在物理實(shí)驗(yàn)數(shù)據(jù)處理中的可行性、優(yōu)越性、可推廣性以及適用性??傊?,C語(yǔ)言程序設(shè)計(jì)不失為一種處理數(shù)據(jù)的有效方法,具有廣闊的應(yīng)用前景。 致謝 感謝中國(guó)石油大學(xué)(北京)理學(xué)院物理系張鵬教授在實(shí)驗(yàn)及寫作過(guò)程中熱情而悉心的指導(dǎo)。 [1]黃秋萍. 落球法液體粘滯系數(shù)實(shí)驗(yàn)的改進(jìn)[J].大學(xué)物理實(shí)驗(yàn),2015,28(3):38-41. [2]陳用,鄭仲森.液體粘滯系數(shù)測(cè)量方法的改進(jìn)[J].大學(xué)物理實(shí)驗(yàn),2003,16(3):6-8. [3]廖幫全.Excel作圖和二分法結(jié)合解超越方程的一種方法[J].大學(xué)物理實(shí)驗(yàn),2015,28(2):109-112. [4]宋達(dá)微.C語(yǔ)言程序在測(cè)量數(shù)據(jù)不確定度計(jì)算中的應(yīng)用 [J].大學(xué)物理實(shí)驗(yàn),2015,28(6):89-93. [5]張?chǎng)?郭勝,李金玉.C語(yǔ)言在密立根實(shí)驗(yàn)數(shù)據(jù)處理中的應(yīng)用[J].大學(xué)物理實(shí)驗(yàn),2015,18(1):63-65. [6]蔡旭紅.用VC++語(yǔ)言實(shí)現(xiàn)密立根油滴實(shí)驗(yàn)數(shù)據(jù)處理系統(tǒng)[J].汕頭大學(xué)學(xué)報(bào):自然科學(xué)版,2006,21(2):77-81. Application of the C Language Programming in Measuring Liquid Viscosity by Ball-Dropping Method HUANG Ning-man,SU Guan-dong,LI Gong-sheng (China University of Petroleum (Beijing),Beijing 102249) In the age of big data,in order to improve the processing efficiency in physical experiment,reduce artificial errors in data processing,this paper discusses the experiment of measuring liquid viscous resistance coefficient based on the Ball-Dropping method.Using efficient,structured and modular programming language and process-oriented programming technology,a C language program is written to apply to the liquid viscous resistance coefficient measuring experiment,and to calculate the relative uncertainty of the viscous resistance coefficient according to the related theory,which further expounds the feasibility,superiority,generalizability and applicability of the C programming language in data processing of physical experiment,and brings up a high-efficiency physics experiment data processing method combining the use of Excel and C programming language. ball-dropping method;C language programming;liquid viscosity;experimental data processing 2016-04-11 1007-2934(2016)04-0082-04 O 4-39 A 10.14139/j.cnki.cn22-1228.2016.004.0263 C語(yǔ)言編程處理物理實(shí)驗(yàn)數(shù)據(jù)的探討
4 結(jié) 論