双棱镜干涉.docx
- 文档编号:6876328
- 上传时间:2023-01-12
- 格式:DOCX
- 页数:11
- 大小:904.04KB
双棱镜干涉.docx
《双棱镜干涉.docx》由会员分享,可在线阅读,更多相关《双棱镜干涉.docx(11页珍藏版)》请在冰豆网上搜索。
双棱镜干涉
双棱镜干涉实验数据处理的C语言程序
这个程序是我将c语言用在处理大物实验的数据上,心里很激动,言归正传,这个程序是处理双棱镜干涉实验数据的c语言程序,这个程序经过我反复的修改与验证,不但能准确计算实验结果,而且赋予了它智能化,能判断误差大的实验数据,还能将数据结果存入c盘下的txt新建文件夹中,方便将字体放大查看,或存入手机中查看!
好了,多的我就不说了,大家用了就知道了!
我上传的文档分为5个部分:
1.我做实验时所测得的数据
2.我写的实验报告的数据处理部分
3.我在电脑上的运行结果
4.程序源代码
5.数据输出文件
1.下面是我做实验时所测得的数据:
单位:
mm
x1
x2
x3
x4
x5
x6
x7
x8
x9
x10
0.259
1.216
2.170
3.170
4.216
5.173
6.152
7.019
8.023
9.018
A1
d11
d12
A2
d21
d22
525.3
6.287
3.601
1169.2
6.831
7.047
2.下面是我写的实验报告的数据处理部分:
(1)两次成像透镜移动的距离A
(2)两虚像间的距离d的计算:
(3)光源到屏的距离D的计算:
(4)相邻暗或亮条纹间的距离Δx的计算:
(5)波长λ的计算:
(6)测量结果:
波长λ=643.2nm
相对误差:
e=1.6%
绝对误差k=10.6nm
测量结果:
波长λ=(6.4±0.2)e+002nm
相对误差e=1.6%
注释:
e+002表示10的平方
3.下页是我运行的结果:
4.下面是程序源代码:
#include
#include
doublemax(doublef)
{
doublek,l,g;
k=f;
l=(int)f;
l=k-l;
l=l*10;
g=l;
l=(int)l;
g=g-l;
g=g/10;
if(g>=0.05)
f=f;
else
f=f+0.1;
returnf;
}
voidmain()
{
floatx1,x2,x3,x4,x5,x6,x7,x8,x9,x10;
floatA1,d11,d12,A2,d21,d22,A,d1,d2;
doubleq,m,n,d,D,x,y,f,e,k,l,h,cd,ab,ef;
FILE*wf;
wf=fopen("c:
\\新建文件夹.txt","w");
printf("\t\t\t\t双棱镜干涉测波长\n");
printf("温馨提示:
所测数据的单位必须全化为mm\n");
printf("变量解释:
\nA1,A2表示透镜在光具座上的相应两个位置\n");
printf("d11,d12表示测微目镜测量虚光源放大像的位置\n");
printf("d21,d22表示缩小像的两个位置\n");
fprintf(wf,"温馨提示:
所测数据的单位必须全化为mm\n");
fprintf(wf,"变量解释:
\nA1,A2表示透镜在光具座上的相应两个位置\n");
fprintf(wf,"d11,d12表示测微目镜测量虚光源放大像的位置\n");
fprintf(wf,"d21,d22表示缩小像的两个位置\n");
printf("x1,x2,x3,x4,x5,x6,x7,x8,x9,x10表示测微目镜干涉条纹所在位置对应的读数\n");
printf("\n请依次输入x1,x2,x3,x4,x5,x6,x7,x8,x9,x10的值,十个数之间以空格间隔,即输完第一个,按空格再输第二个,输完x10请按回车:
\n");
hjk:
scanf("%f%f%f%f%f%f%f%f%f%f",&x1,&x2,&x3,&x4,&x5,&x6,&x7,&x8,&x9,&x10);
fprintf(wf,"所输入的x1,x2,x3,x4,x5,x6,x7,x8,x9,x10分别是%.3f\t%.3\t%.3f\t%.3f\t%.3f\t%.3f\t%.3f\t%.3f\t%.3f\t%.3f\n",x1,x2,x3,x4,x5,x6,x7,x8,x9,x10);
printf("请依次输入A1,d11,d12,三个数之间以空格间隔,输完d12请按回车\n");
scanf("%f%f%f",&A1,&d11,&d12);
fprintf(wf,"所输入的A1,d11,d12依次是:
%.1f\t%.3f\t%.3f\n",A1,d11,d12);
printf("请依次输入A2,d21,d22,三个数之间以空格间隔输完d22请按回车\n");
scanf("%f%f%f",&A2,&d21,&d22);
fprintf(wf,"所输入的A2,d21,d22依次是:
%.1f\t%.3f\t%.3f\n",A2,d21,d22);
if(x1>0.0&&x2>0.0&&x3>0.0&&x4>0.0&&x5>0.0&&x6>0.0&&x7>0.0&&x8>0.0&&x9>0.0&&x10>0.0&&A1>0.0
&&d11>0.0&&d12>0.0&&A2>0.0&&d21>0.0&&d22>0.0)
{
A=A1-A2;
A=fabs(A);
d1=d11-d12;
d1=fabs(d1);
m=sqrt(d1);
d2=d21-d22;
d2=fabs(d2);
n=sqrt(d2);
d=d1*d2;
d=sqrt(d);
D=A*(m+n)/(m-n);
x=(x6+x7+x8+x9+x10-x1-x2-x3-x4-x5);
x=x/25;
y=d*x/D;
y=y*1000000;
ef=y/100;
e=y-632.8;
e=fabs(e);
e=e/632.8;
k=y*e;
e=e*100;
f=y*e/100;
ab=f/100;
cd=max(ab);
if(y>601.16&&y<664.44)/*此处为He-Ne激光器所测结果,如果光源不同,此处可进行适量修改*/
{printf("\n两次成像透镜移动的距离A=%.1fmm\n",A);
printf("放大像两条线的间距d1=%.3fmm\n",d1);
printf("缩小像两条线的间距d2=%.3fmm\n",d2);
printf("两虚像间的距离d=%.3fmm\n",d);
printf("根号d1=%.3f\n",m);
printf("根号d2=%.3f\n",n);
printf("光源到屏的距离D=%.3fmm\n",D);
printf("相邻暗或亮条纹间距Δx=%.3fmm\n",x);
printf("\n波长λ=%4.1fnm\n相对误差:
e=%4.1f%s\n绝对误差k=%4.1fnm",y,e,"%",k);
printf("\n\n测量结果:
\n波长λ=(%3.1f±%3.1f)e+002nm\n相对误差e=%4.1f%s\n",ef,cd,e,"%");
printf("注释:
e+002表示10的平方\n");
fprintf(wf,"\n两次成像透镜移动的距离A=%.1fmm\n",A);
fprintf(wf,"放大像两条线的间距d1=%.3fmm\n",d1);
fprintf(wf,"缩小像两条线的间距d2=%.3fmm\n",d2);
fprintf(wf,"两虚像间的距离d=%.3fmm\n",d);
fprintf(wf,"根号d1=%.3f\n",m);
fprintf(wf,"根号d2=%.3f\n",n);
fprintf(wf,"光源到屏的距离D=%.3fmm\n",D);
fprintf(wf,"相邻暗或亮条纹间距Δx=%.3fmm\n",x);
fprintf(wf,"\n波长λ=%4.1fnm\n相对误差:
e=%4.1f%s\n绝对误差k=%4.1fnm",y,e,"%",k);
fprintf(wf,"\n\n测量结果:
\n波长λ=(%3.1f±%3.1f)e+002nm\n相对误差e=%4.1f%s\n",ef,cd,e,"%");
fprintf(wf,"注释:
e+002表示10的平方\n");
fclose(wf);
}
else
printf("所测数据误差太大\n");
}
else
printf("输入有误,请重新输入\n");
gotohjk;
}
5.下面是数据输出文件(将计算结果存入txt文件中,便于将字体放大阅读或存入手机中阅读,程序默认将数据输出文件存入c盘的新建文件夹中)
温馨提示:
所测数据的单位必须全化为mm
变量解释:
A1,A2表示透镜在光具座上的相应两个位置
d11,d12表示测微目镜测量虚光源放大像的位置
d21,d22表示缩小像的两个位置
所输入的x1,x2,x3,x4,x5,x6,x7,x8,x9,x10分别是0.2591.2162.1703.1704.2165.1736.1527.0198.023
所输入的A1,d11,d12依次是:
525.36.2873.601
所输入的A2,d21,d22依次是:
1169.26.8317.047
两次成像透镜移动的距离A=643.9mm
放大像两条线的间距d1=2.686mm
缩小像两条线的间距d2=0.216mm
两虚像间的距离d=0.762mm
根号d1=1.639
根号d2=0.465
光源到屏的距离D=1153.646mm
相邻暗或亮条纹间距Δx=0.974mm
波长λ=643.2nm
相对误差:
e=1.6%
绝对误差k=10.6nm
测量结果:
波长λ=(6.4±0.2)e+002nm
相对误差e=1.6%
注释:
e+002表示10的平方
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 棱镜 干涉