35届北京青少年科技创新大赛查新报告模板

北京青少年科技创新大赛

查新报告

(参考样例)

项目名称: 

项目作者:  

查新完成日期:  

申报者本人的查新声明(签字):

学校的查新证明(盖章):

区县大赛组织单位的查新证明(盖章):


填写说明

一、查新报告
  查新报告是查新者用书面形式就查新情况及其结论所做的正式陈述。

二、查新报告格式说明

本报告采用A4纸,每栏的大小可随内容调整。

三、报告内容应当打印,签字使用钢笔或者碳素笔。

四、查新点与查新要求

查新点:是指需要查证的内容要点。

查新要求:(1)通过查新,证明在所查范围内有无相同或类似研究;(2)对查新项目分别或综合进行对比分析;(3)对查新项目的新颖性做出判断。

五、文献检索范围及检索策略

应当列出对查新项目进行分析后所确定的手工检索的工具书、年限、主题词、分类号和计算机检索系统、数据库、文档、年限、检索词等。

六、检索结果

检索结果应当反映出通过对所检数据库和工具书命中的相关文献情况及对相关文献的主要论点进行对比分析的客观情况。

检索结果应当包括下列内容:

①对所检数据库和工具书命中的相关文献情况进行简单描述;

②依据检出文献的相关程度

③对所列主要相关文献进行简要描述(一般可用原文中的摘要或者利用原文中的摘要进行抽提),对于密切相关文献,可节录部分原文并提供原文的复印件作为附录

七、查新结论

查新结论应当客观、公正、准确、清晰地反映查新项目的真实情况,不得误导。查新结论应当包括下列内容:
  ①相关文献检出情况;
  ②检索结果与查新项目的要点的比较分析;
  ③对查新项目新颖性的判断结论。

八、申报者本人、所在学校及省级大赛主办单位的查新声明
  查新报告应当包括经申报者本人、所在学校及省级创新大赛主办单位签字的查新声明。声明的内容可以参考下面的内容进行撰写。
  (1)报告中陈述的事实是真实和准确的。
  (2)我们按照项目查新规范进行查新、文献分析和审核,并做出上述查新结论。

九、附件

附件主要包括密切相关文献的题目、出处以及原文复制件;一般相关文献的题目、出处以及文摘。


 

第二篇:第28届北京青少年科技创新大赛

第28届北京青少年科技创新大赛您查询的关键词是:matlab编程双缝干涉当s1和s2之间 。如果打开速度慢,可以尝试快速版;如果想保存快照,可以添加到搜藏;如果想更新或删除快照,可以投诉快照。(百度和网页/TPRes/tspx/tspx28/zhongxue/64.htm的作者无关,不对其内容负责。百度快照谨为网络故障时之索引,不代表被搜索网站的即时页面。)返回首页 返回上一页 物理学 杨氏干涉教学的计算机模拟演示作者:段粲超、刘璟宇(北京师范大学附属实验中学初三)辅导老师:闫莹莹(西城区青少年科技馆)摘 要 由英国物理学家托马斯·杨在1801年所进行的杨氏干涉实验是证明光具有波动性的经典实验之一,高中与大学的教学中都有与其相关的内容。可进行这个实验需要很高的实验条件,且实验本身不具有很强的集体观赏性,用FLASH进行模拟结果又不精确。本研究拟用科学计算软件MATLAB对其进行计算机模拟:1. 绘制干涉图样和光强分布曲线。通过确定实验参数,利用光强公式算出屏上各点的叠加光强并绘出分布曲线;通过简单换算,将各点的光强值转化为颜色值,再将颜色值以灰度图的形式画出;同时,通过暂停和刷新屏幕显示出在程序中已确定的几组实验参数所画图样与曲线的变化关系。2. 制作控制面板并画出可随实验参数变化的实验原理示意图。创建一个GUI函数,在计算机上绘出控制面板,使实验原理和实验现象能展示在同一界面上;在运用1中的方法绘出干涉图样与光强分布曲线的基础上,再用自定义函数画出实验仪器原理示意图,并通过设置控件的状态值改变实验参数;同时,设置另一组实验参数,通过按钮控制现有参数与所设的实验参数间做十次变化,并依次画出图样的动态效果。这样可以将实验现象直观精确地表现出来,同时编程也较为简单。经过研究我们得出:通过计算机模拟(利用光强公式计算每一点的光强并转化为灰度值)可以绘出杨氏双缝干涉的干涉图样。通过控制面板可以轻易改变实验参数并能逐步画出两组参数间图样的变化趋势。关键词 干涉 光强 灰度计算机模拟创新点: 本项目优越性在于用GUI组件对现实实验的理想环境和结果的准确模拟。可辅助教学,在模拟实

验教学方面起到一定的作用且极大地方便了实验的操作,使学生能够更直观、更准确地了解“光的干涉”这部分知识。研究背景 由英国物理学家托马斯·杨在1801年所进行的杨氏干涉实验是证明光具有波动性的经典实验之一。虽然托马斯·杨的理论在现在看来有很大漏洞,但在光的波动学的发展史上具有重大意义,它发展了惠更斯的波动理论,并成功地解释了干涉现象。在初二学校开展的化学兴趣培养选修课中,我了解到了许多有关量子力学的知识。其中光的波粒二象性的一些实验我很感兴趣,但课堂上的演示实验总看不清楚。暑假中,我们又来到北京工业大学机电学院进行学习,了解了SCILAB和MATLAB等模型软件的应用,想到可以通过计算机来模拟这些实验,跟直观地看到实验结果。通过阅读《牛顿科学世界》杂志与《新量子世界》、《光学原理》等书籍,我们了解到英国科学家托马斯·杨最早通过光的干涉实验(即杨氏干涉实验)证明了光的波动性。在高中与大学的课程中,都会讲到与干涉有关的内容,但做干涉实验需要一定的条件,许多学校不具备很好的条件,实验现象很不明显。用FLASH模拟实验虽然在一定程度上弥补了这个缺点,但结果不是非常精确,效果也不是很直观。于是,在老师的指导下,我们决定用功能更强大的MATLAB来计算模拟出干涉图样并表现出实验参数变化时图样的变化趋势。经调查,有研究者讨论过用MATLAB模拟光学实验,但只涉及到光学图样模拟的主要思路,而没有对实验的教学演示进行深入探讨,也未涉及通过可控参数变化实现动态演示的研究。研究目的 利用MATLAB对杨氏干涉实验的原理与实验现象进行准确直观的模拟,并实现通过控制面板进行对实验参数的时时控制与实验动态变化的显示。研究方法 1.时间安排阶段时间地点内容第一阶段20xx年7月北工大学习SCILAB第二阶段20xx年9-10月学校学习有关光的干涉的知识第三阶段20xx年11月学校立题第四阶段20xx年1-5月学校、家收集有关资料,找出实现模拟的办法第五阶段20xx年6—7月北工大学习MATLAB第六阶段20xx年8—9月科技馆、家实现第一步(绘制干涉图样和光强分布曲线)

第七阶段20xx年10月科技馆、家实现第二步(制作控制面板并画出可随实验参数变化的实验原理示意图)第八阶段20xx年10月家撰写论文2.光的波动学说产生背景时间人物理论根据11655年格里马第(Francesco Maria Grimaldi)光是一种类似水波的波。光穿过两小孔后投影有类似水波衍射的明暗条纹。21665年胡克(Robert Hooke)光是以太的一种纵向波。重复上述实验并出版《显微术》(Micrographia)31666年牛顿(Isaac Newton)光是由微粒形成的,并且走的是最快速的直线运动路径。进行光的色散实验,通过实验完善几何光学的理论。41690年惠更斯(Christian Huygens)惠更斯原理认为光是在以太中传播的脉冲,并在此基础上用作图法解释了光的反射折射现象,发表在《光论》一书中。51800年托马斯·杨(Thomas Young)光以纵波的形式在以太中传播二者(光与纵波)在重叠后都有加强和减弱的现象61801年同上光是一种波通过著名的杨氏双缝干涉实验证明光也有干涉现象,即证明光的波动性。评价:虽然托马斯·杨的理论在现在看来有很大漏洞,但在光的波动学的发展史上具有重大意义,它发展了惠更斯的波动理论,并成功地解释了干涉现象。3.杨氏双缝干涉原理阐释:图1:杨氏双缝干涉原理示意图 如图1,用单色平行光照射一窄缝S。S后放有与S平行且对称的两平行的狭缝S1和S2,两缝之间的距离很小(0.1毫米数量级)。两窄缝处在S发出的光波的同一波阵面上,构成一对初相相同的等强度的相干光源。它们发出的相干光在屏后面的空间叠加相干。在双缝的后面放一个观察屏,可以在屏幕上观察到明暗相间的对称的干涉条纹。这些条纹与狭缝平行,条纹间的距离相等。4.相干光的光强计算在波的干涉知识点中对于波干涉规律的讨论具有普遍的意义,对光的干涉也成立。两列相干光在干涉点p叠加后的光强I和原来两束光强I1、I2的关系为:在光学实验中两束相干光的强度常常是相同的即,此时干涉光强为:

…(1)其中ΔΦ为相位差,其所对应的光程差:图3:光程差示意图又因为ΔΦ=2πδ/λ,所以ΔΦ=2πxd/λD…(2) I的分布随ΔΦ或λ变化:图4:当两缝光强相等时的相位差图5:光强分布曲线 由(1)、(2)可得:I =4I1cos2( πdx/λD)以上即是杨氏双缝干涉实验中光屏上任意一点的光强公式。5.研究设计(1)研究顺序图2:研究顺序结构图 (2)模拟方法a). 第一步(画出干涉图样和光强分布曲线):确定实验参数,利用光强公式算出屏上各点的光强;通过简单换算将各点的光强值转化为颜色值;将颜色值以灰度图的形式画出;通过暂停和刷新屏幕显示出在程序中已确定的几组实验参数所画图样的变化关系。b). 第二步(制作控制面板并画出可随实验参数变化的实验原理示意图):创建一个GUI函数,令其显示出已做好的控制面板;用第一步的方法画出干涉图样与光强分布曲线;用自定义函数画出实验仪器原理示意图,并可随实验参数(D,d)的变化而改变;通过设置控件的状态值来确定实验参数(D,d);设置另一组实验参数(D1,d1),并通过按钮控制,在原有参数(D,d)与新设参数(D1,d1)间做十次改变,同时画出图样。(3)研究工具MATLAB7.0软件(一种功能强大,应用范围极广的科学计算软件);联想电脑(Pentium D;内存1G;Vista)6.实施过程(1)光的干涉演示程序流程 演示光的干涉实验创立图像建立杨氏双缝干涉图1建立杨氏双缝干涉图2(光屏距离不变,双缝之间距离变化)(双缝距离不变,光屏距离变化)图6:光的干涉演示程序流程图 (2)第一步实现(画出干涉图样和光强分布曲线):a).提出方案我们最开始想用SCILAB进行模拟,虽然SCILAB的编程环境和内部函数与MATL

AB很相似,可却没有像image这样的画图函数,无法直接画出干涉图样,我们便选用了MATLAB进行研究。b).发现问题通过所查到的光强公式(I =4I1cos2( πdx/λD))与Plot函数(MATLAB中一种常用的二维绘图函数)可以很容易地画出光强分布曲线,但在画图样时却遇到了困难。困难有两个:一个是光强公式所算出的数值是光强,与MATLAB默认的颜色 数值不符;另一个是所看到的图像若不转化为灰度值画出的图像为彩色(如图7)。图7:错误的彩色图样c).解决问题这两个问题都在学习MATLAB的过程中得以解决:在MATLAB中,默认的颜色数值的范围为[0,64],光强为一个cos2值,其范围是[0,1];因此在没有定义颜色表时,所画出的图样为不真实的彩色,于是我们用colormap(gray(A))语句(一种MATLAB自带的定义工作环境中特殊颜色表的函数,A=255)将颜色定义在白与黑之间,颜色对应值的范围在0-255(最多可分为256份)之间,再将所得的光强数组I乘上255,令其与所定义的数值吻合。(3)第二步实现(设计控制面板并画出可随实验参数变化的实验原理示意图)a). 提出方案完成第一部分以后,如果要表现出干涉图样的变化趋势,修改实验参数时还需到程序赋值变量,十分麻烦。我们想起以前学过在绘图窗口里捕获鼠标动作的方法,便想到通过绘出实验的示意图,在坐标系里点击鼠标并记录下点击位置的坐标,从而推算出实验的参数。若要获得动态演示效果,就可以在上一步的基础上,添加另一组参数,通过循环使实验参数在两组参数间作定次数的等步长变化即可。b).发现问题通过Plot函数与自定义函数与可以轻松地画出实验示意图(如图8),使用鼠标取点语句有一个前提,即取点窗口必须为一个坐标系,可绘出图像后整体窗口变为图形,MATLAB无法得到此时的鼠标位置。图8:杨氏双缝干涉原理示意图c).解决问题在老师的提醒下,我们想到可以通过图形用户接口(GUI)来实现用户与计算机程序间的交流。我们从老师那里了解到通

过创建GUI函数,设置其中的组件(如按钮、文本框等)可以在运行程序时通过操作这些组件来改变其自身的变量,程序里便可以通过这些变量改变实验参数。下一步设想:通过确定一个平面(任意)即能画出干涉图样,并能显示两个平面间图样的运动变化。研究结果1.第一步实现(画出干涉图样和光强分布曲线): 图8、9、10、11:第一步所绘图样,条纹间距随双缝间距d及缝与光屏间的距离D的变化而变化2. 第二步实现(设计控制面板并画出可随实验参数变化的实验原理示意图) 图12、13(上):第二步所绘图样及原理示意图图14、15、16、17(上四幅): 图像随d与d1的差异而逐次将实验参数做等步长(步长为两参数差的1/10)变化图18、19、20、21:图像随D与D1的差异而逐次将实验参数做等步长(步长为两参数差的1/10)变化分析与讨论在以往的中学物理教学中,一大难点就是如何让学生理解光的波粒二象性。粒子性很容易理解,比如光的直线传播就是一个很好的证明。可波动性则相反。由于光是一种电磁波,并不能看到直观的振动,而只有通过观察到波具有的性质之一——波的叠加现象(如干涉)才能间接推出光具有波动性。能观察这个现象的最为简单的方法就是杨氏干涉实验。常规教学演示方法直接实验法眼见为实,方法之一就是直接进行实验。可光的波长很短,想观测出明显的干涉现象很困难,需要一定的实验条件,才能观测出间距甚至不足一毫米的条纹。即使学校具备实验条件,在以班级为单位的教学中很难让每一个学生都直观地看到实验结果。FLASH模拟法解决实验难这一问题的一个方法是通过FLASH的方式画出示意图,这在一定程度上解决了这个问题,可并不可能精确地画出一组实验参数所对应的精确图样,也不能很直观地让学生们了解图案大小与实验参数的关系。我们的方法改进我们利用MATLAB软件在控制面板

上设定画出的干涉图样、光强分布曲线、实验原理示意图并设定实验参数,还通过简便操作在任意两组实验参数间做逐步变化,观察图样的变化趋势。这样就可以令学生更直观地了解光的干涉现象,弥补了FLASH的不足。模拟缺陷:MATLAB软件自身占据空间较大,使用起来相对而言有一定的局限性。图22:我们在研究程序图23:撰写论文图24:修改程序结论通过计算机模拟(利用光强公式计算每一点的光强并转化为灰度值)可以绘出杨氏双缝干涉的干涉图样;通过控制面板可以轻易改变实验参数并能逐步画出两组参数间图样的变化趋势。收获和体会时间飞逝,一转眼这个课题进行已一年多的时间了。在研究课题的过程中,我们不仅了解了许多有趣的知识,还学到了许多在平时上课学不到的经验与教训。勇于接受新知识的挑战一年前,我们有幸参加了北师大博士生的一个项目-化学兴趣培养课,其中作为知识铺垫给我们讲了一些有关量子力学的知识。在老师的鼓励下,我们对这个颠覆一切经典的理论产生了兴趣,进而自己找资料学习。与我们一起上课的同学中有很多人都觉得量子理论太深奥,学不懂。我们在学习这方面时也经常有这样的感受,但经过几次尝试,我们了解到只要认真分析就一定能够理解理论,理解了理论就可以轻易地掌握理论。如此看来,即使是相对于我们能力超前很多的量子理论已不是完全不可理解的。经过大半年的学习,我们先后理解了光量子理论中的波粒二象性、杨氏双缝干涉实验原理及其光强公式的推导过程、近代光学发展史等在同龄人看来不易理解的知识。这件事让我们进一步了解了“世上无难事,只怕有心人。”的为人处事的道理,让我在日后能更加自信地面对各种挑战。怀疑是良师益友在研究的过程中,总会有意见不和的地方,给我们印象最深的是这样一件事:在咨询老师关于如何画干涉图样的过程中,老师认为应将得出的光强乘上一个定值,使绘出的图样更明显。在这个问题上,我们一直持怀疑态度,回到家后,我们经过反复试验,并将试验结果与真实干涉条纹作比较,发现事实上数据不做处理时效

果与真实结果最接近。经过查资料,我们了解到理论上明暗条纹应该是等宽的,从而证实了我们的怀疑。就像课文《怀疑与学问》中所说的:“在不断的发问和求解中,一切学问才会起来。”面对任何权威,都应当不失怀疑的好习惯。这便是我们在做课题中所收获的最有价值的经验之一。合作使1+1> 2每每与别人合作完成一件事,每个人都可能产生对合作者不放心、怕合作者不能做到最好的心理。可到了初三,学习非常紧张起来,所有的工作不可能全由一个人来完成,必须将课题分工,同伴一起合作。结果,合作给我们带来的惊喜逐渐消除了最初的担心。这件事让我们了解到学会合作的必要条件是同伴间的相互信任,这样才能让一个团队创造的价值大于每个个体所创造之和。科研需要毅力在研究程序及了解知识过程中,我们遇到了许多困难,由于学习紧张,时间就变得弥足珍贵。在这有限的时间里,我们通过上网查资料,找课外书等方式熟练掌握了有关的物理知识。对于一个并不是特别了解的软件,我们和老师一起探讨,在老师的指导下渐渐熟练了对演示软件的操作。这不仅意味着知识的学习,更重要的是,它使我们在信息技术方面的能力显著提高。当我们克服了重重险阻,终于成功时,那种成就感和喜悦感是无以言表的。这就是支撑我们走下去的支柱,而且这种科研精神以及刻苦精神,都是我们将来生活所必需的。我们在感到辛苦的同时,又会享受到无与伦比的快乐,这使我们变得更加成熟。我们在过程中得到了宝贵的财富——不仅仅是能力的提高,也不仅仅是成功的喜悦,而是永不放弃,求真务实的精神。参考文献[美]D.Hanselman等,朱仁峰译,《精通Matlab7》 ,清华大学出版社,20xx年12月。[英]安东尼.黑等,雷奕安译,《新量子世界》, 湖南科学技术出版社,20xx年5月。[德]M.玻恩等,杨葭荪译,《光学原理(第七版)》(上册),电子工业出版社,20xx年2月。赵凯华等,《光学》,北京大学出版社,20xx年4月。董太源等,《光学干涉实验的计算机仿真模拟》,江西理工大学报,20xx年第三期。致谢这个课题的研究在一定程度上是超过

了我们现年龄段接受能力范围的。我们之所以能完成它是因为有那么一群人在背后支持我们,帮助我们去理解、学习、掌握哪些原本不可能被我们所接受的知识:在学习量子力学时,魏锐老师(即给化学兴趣班上课的北师大博士生)一直鼓励我,让我们有信心去理解量子力学在各个领域方面表现出的奇异性质,这无疑在我们课题的研究中给与了莫大的帮助。在学习MATLAB的使用方法时,胡健老师(北工大研究生)帮助我们解决了许多程序技术上的问题,为我们的研究提供了很多便利。同样值得一提的是,我们应该格外感谢西城区青少年科技馆的闫老师。由于她的辅导,我们才能顺利地完成这篇论文。……在此我们要对在此课题上给予过我们帮助的人表示深深的感谢。附件1研究第一步(画出干涉图样和光强分布曲线)的程序 %干涉条纹的间距随着d(双缝间距)的变化而变化clear;clf;%清零变量D = 1000;%设置双缝到光屏的距离(1000mm)Lambad = 632.8e-006;%设置光线波长(632.8nm)N = 1000;%定义变量x = linspace(-5,5,N);%设置图像精度y = linspace(-5,5,N);%设置图像精度for k=-0.5:0.1:0.5%定义变量范围与精度,令其通过循环改变双缝距离d=1+k;%定义双缝距离为(0.5-1.5mm)for i = 1:N%定义变量确定横向点的坐标I(i) = cos(pi*d*x(i)/(Lambad*D)).^2;%光强分布公式endfigure(gcf);%创建显示窗口subplot(2,2,1:2);%给窗口分栏,定义光强分布曲线的位置plot(x,I);%画出光强分布曲线Xlabel('x/mm');%标出横坐标(单位mm)Ylabel('I(x)');%标出纵坐标单位title('光强分布曲线');%标出标题axis([-5 5 0 1]);%标出坐标分度值A=255; %定义干涉图像灰度分度值B=I*A;%换算subplot(2,2,3:4);%定义干涉图样位置image(x,y,B);%画出干涉图像原形colormap(gray(A));%将图样转化为灰度图Xlabel('x/mm');%标出横坐标(单位mm)

Ylabel('y/mm');%标出纵坐标(单位mm)title('干涉图样');%标出标题axis([-5 5 0 5]);%标出坐标分度值drawnow;%刷新屏幕pause;%暂停并等待指令进行下次循环end%干涉条纹的间距随着D(双缝到光屏的距离)的变化而变化clear;clf; %清零变量d = 1; %设置双缝间距(1mm)Lambad = 632.8e-006; %设置光线波长(632.8nm)N = 1000; %定义变量x = linspace(-5,5,N); %设置图像精度y = linspace(-5,5,N); %设置图像精度for k=-500:100:500%定义变量范围与精度,令其通过循环改变双缝到光屏间的距离D=1000+k; %定义双缝到光屏间的距离为(500-1500mm)for i = 1:N%定义变量确定横向点的坐标I(i) = cos(pi*d*x(i)/(Lambad*D)).^2; %光强分布公式 endfigure(gcf); %创建显示窗口subplot(2,2,1:2); %给窗口分栏,定义光强分布曲线的位置plot(x,I); %画出光强分布曲线Xlabel('x/mm'); %标出横坐标(单位mm)Ylabel('I(x)'); %标出纵坐标单位title('光强分布曲线'); %标出标题axis([-5 5 0 1]); %标出坐标分度值Nclevels=255; %定义干涉图像灰度分度值Br=I*Nclevels; %换算subplot(2,2,3:4); %定义干涉图样位置image(x,y,Br); %画出干涉图像原形colormap(gray(Nclevels)); %将图样转化为灰度图Xlabel('x/mm'); %标出横坐标(单位mm)Ylabel('y/mm'); %标出纵坐标(单位mm)title('干涉图样'); %标出标题axis([-5 5 0 5]); %标出坐标分度值drawnow; %刷新屏幕pause; %暂停并等待指令进行下次循环end附件2研究第二步(设计控制面板并画出可随实验参数变化的实验原理示意图)的程序1.主程序function varargout = light(varargin) %创建GUI函数% LIGHT M-file for light.fig%LIGHT, by itself, creates a new LIGHT or raises the

existing%singleton*.%%H = LIGHT returns the handle to a new LIGHT or the handle to%the existing singleton*.%%LIGHT('CALLBACK',hObject,eventData,handles,...) calls the local%function named CALLBACK in LIGHT.M with the given input arguments.%%LIGHT('Property','Value',...) creates a new LIGHT or raises the%existing singleton*.Starting from the left, property value pairs are%applied to the GUI before light_OpeningFunction gets called.An%unrecognized property name or invalid value makes property application%stop.All inputs are passed to light_OpeningFcn via varargin.%%*See GUI Options on GUIDE's Tools menu.Choose "GUI allows only one%instance to run (singleton)".%% See also: GUIDE, GUIDATA, GUIHANDLES% Copyright 2002-2003 The MathWorks, Inc.% Edit the above text to modify the response to help light% Last Modified by GUIDE v2.5 25-Oct-2007 17:19:25% Begin initialization code - DO NOT EDITgui_Singleton = 1;gui_State = struct('gui_Name',mfilename, ...'gui_Singleton',gui_Singleton, ...'gui_OpeningFcn', @light_OpeningFcn, ...'gui_OutputFcn',@light_OutputFcn, ...'gui_LayoutFcn',[] , ...'gui_Callback',[]);if nargin && ischar(varargin{1})gui_State.gui_Callback = str2func(varargin{1});endif nargout[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});elsegui_mainfcn(gui_State, varargin{:});end% End initialization code - DO NOT EDIT% --- Executes just before light is made visible.function light_OpeningFcn(hObject, eventdata, handles, varargin)

% This function has no output args, see OutputFcn.% hObjecthandle to figure% eventdatareserved - to be defined in a future version of MATLAB% handlesstructure with handles and user data (see GUIDATA)% varargincommand line arguments to light (see VARARGIN)% Choose default command line output for lighthandles.output = hObject;% Update handles structureguidata(hObject, handles);% UIWAIT makes light wait for user response (see UIRESUME)% uiwait(handles.figure1);global current_n; %定义全局变量current_n=0; %给变量赋值draw(handles); %运行函数,画出图像% --- Outputs from this function are returned to the command line.function varargout = light_OutputFcn(hObject, eventdata, handles) % varargoutcell array for returning output args (see VARARGOUT);% hObjecthandle to figure% eventdatareserved - to be defined in a future version of MATLAB% handlesstructure with handles and user data (see GUIDATA)% Get default command line output from handles structurevarargout{1} = handles.output;function edit1_Callback(hObject, eventdata, handles) %定义编辑窗口1的函数set(hObject,'Value',str2num(get(hObject,'String'))); %获取窗口显示的值d=get(hObject,'Value'); %给变量d 赋值set(handles.slider2,'Value',d); %将d的值传入窗口的变量中draw(handles); %运行函数,画出图像% --- Executes during object creation, after setting all properties.function edit1_CreateFcn(hObject, eventdata, handles)% hObjecthandle to edit1 (see GCBO)% eventdatareserved - to be defined in a future version of MATLAB% handlesempty - handles not created until after all CreateFcns called% Hint: edit controls

usually have a white background on Windows.%See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunction edit2_Callback(hObject, eventdata, handles) %定义编辑窗口2的函数set(hObject,'Value',str2num(get(hObject,'String'))); %获取窗口显示的值D=get(hObject,'Value'); %给变量D 赋值set(handles.slider1,'Value',D); %将d的值传入窗口的变量中draw(handles); %运行函数,画出图像% --- Executes during object creation, after setting all properties.function edit2_CreateFcn(hObject, eventdata, handles)% hObjecthandle to edit2 (see GCBO)% eventdatareserved - to be defined in a future version of MATLAB% handlesempty - handles not created until after all CreateFcns called% Hint: edit controls usually have a white background on Windows.%See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');end% --- Executes on slider movement.function slider1_Callback(hObject, eventdata, handles) %定义拖动条1的函数% hObjecthandle to slider1 (see GCBO)% eventdatareserved - to be defined in a future version of MATLAB% handlesstructure with handles and user data (see GUIDATA)% Hints: get(hObject,'Value') returns position of slider%get(hObject,'Min') and get(hObject,'Max') to determine range of sliderD=get(hObject,'Value'); %由拖动条1的位置获取 D 的值set(handles.edit2,'String',num2str(D),'Value',D); %将D的值存入编辑窗口2的变量中draw(handles); %运行函数,画出图像% --- Executes during object creation, after setting all

properties.function slider1_CreateFcn(hObject, eventdata, handles)% hObjecthandle to slider1 (see GCBO)% eventdatareserved - to be defined in a future version of MATLAB% handlesempty - handles not created until after all CreateFcns called% Hint: slider controls usually have a light gray background.if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor',[.9 .9 .9]);end% --- Executes on slider movement.function slider2_Callback(hObject, eventdata, handles) %定义拖动条2的函数% hObjecthandle to slider2 (see GCBO)% eventdatareserved - to be defined in a future version of MATLAB% handlesstructure with handles and user data (see GUIDATA)% Hints: get(hObject,'Value') returns position of slider%get(hObject,'Min') and get(hObject,'Max') to determine range of sliderd=get(hObject,'Value'); %由拖动条2的值获取d的值set(handles.edit1,'String',num2str(d),'Value',d); %将d的值存入编辑窗口的变量中draw(handles); %运行函数,画出图像% --- Executes during object creation, after setting all properties.function slider2_CreateFcn(hObject, eventdata, handles)% hObjecthandle to slider2 (see GCBO)% eventdatareserved - to be defined in a future version of MATLAB% handlesempty - handles not created until after all CreateFcns called% Hint: slider controls usually have a light gray background.if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor',[.9 .9 .9]);endfunction edit8_Callback(hObject, eventdata, handles) %定义编辑窗口8的函数% hObjecthandle to edit8 (see GCBO)% eventd

atareserved - to be defined in a future version of MATLAB% handlesstructure with handles and user data (see GUIDATA)global current_n; %定义全局变量set(hObject,'Value',str2num(get(hObject,'String'))); %获取编辑窗口8显示的值current_n=0; %给变量赋值% Hints: get(hObject,'String') returns contents of edit8 as text%str2double(get(hObject,'String')) returns contents of edit8 as a double% --- Executes during object creation, after setting all properties.function edit8_CreateFcn(hObject, eventdata, handles)% hObjecthandle to edit8 (see GCBO)% eventdatareserved - to be defined in a future version of MATLAB% handlesempty - handles not created until after all CreateFcns called% Hint: edit controls usually have a white background on Windows.%See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunction edit9_Callback(hObject, eventdata, handles) %定义编辑窗口9的函数% hObjecthandle to edit9 (see GCBO)% eventdatareserved - to be defined in a future version of MATLAB% handlesstructure with handles and user data (see GUIDATA)global current_n; %定义全局变量set(hObject,'Value',str2num(get(hObject,'String'))); %获取编辑窗口的显示值current_n=0; %给变量赋值% Hints: get(hObject,'String') returns contents of edit9 as text%str2double(get(hObject,'String')) returns contents of edit9 as a double% --- Executes during object creation, after setting all properties.function edit9_CreateFcn(hObject, eventdata, handles)% hObjecthandle to edit9 (see GCBO)% eventdatareserved - to be defined in a future version of

MATLAB% handlesempty - handles not created until after all CreateFcns called% Hint: edit controls usually have a white background on Windows.%See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');end%当d(双缝间距)变化时%--- Executes on button press in pushbutton2.function pushbutton2_Callback(hObject, eventdata, handles) %定义按钮2的函数% hObjecthandle to pushbutton2 (see GCBO)% eventdatareserved - to be defined in a future version of MATLAB% handlesstructure with handles and user data (see GUIDATA)global current_n%定义全局变量current_n=current_n+1;%赋值if current_n==1%条件判断d_final=get(handles.edit8,'Value');%获取编辑窗口8的变量值d_initial=get(handles.edit1,'Value');%获取编辑窗口1的变量值delta_d=(d_final-d_initial)/10;%设定步长set(hObject,'UserData',delta_d);%将步长存入按钮2的UserData中Lambad = 632.8e-006; %设置光线波长(632.8nm)d=d_initial+(current_n)*delta_d; %获取d的值D=get(handles.edit2,'Value'); %获取D的值if(D>=0.001&D<=3000)&(d>=0.001&d<=2) %确定所设参数在绘图范围内N = 1000; %定义变量x = linspace(-5,5,N);%设置图像精度y = linspace(-5,5,N);%设置图像精度for i = 1:N%定义变量确定横向点的坐标I(i) = cos(pi*d*x(i)/(Lambad*D)).^2; %光强分布公式endaxes(handles.axes1); %准备在绘图板1中创建图形cla; %清除以前原有图形plot(-400,3,'ro','linewidth',3); %画出光源位置line([0,0],[3-d/2+0.1,3+d/2-0.1],'linewidth',4);line([0,0],[3+d/2+0.1,6],'linewidth',4);line([0,0],[0,3-d/2-0.1],'linewidth',4);line([D,D],[0,6],'linewidth',4); %画出双缝与光屏hold on%使已画图形继

续存在for r=0:100:800%循环circle(-400,3,r,-20,pi); %用自定义函数画出初始光波endfor r=0:100:2*D%循环circle(10,3+d/2,r,D-10,pi*0.85);circle(10,3-d/2,r,D-10,pi*0.85); %用自定义函数画出双缝光源endhold off%绘图结束title('杨氏双缝干涉示意图'); %标出标题axis([-400,3300,0,6]); %定义横坐标axes(handles.axes2); %准备在绘图板2中创建图形cla; %清除以前原有图形plot(x,I); %画出光强分布曲线Xlabel('x/mm'); %标出横坐标(单位mm)Ylabel('I(x)'); %标出纵坐标单位title('光强分布曲线'); %标出标题axis([-5 5 0 1]); %标出坐标分度值A=255; %定义干涉图像灰度分度值B=I*A; %换算axes(handles.axes3); %准备在绘图板3中创建图形cla; %清除以前原有图形image(x,y,B); %画出干涉图像原形colormap(gray(A)); %将图样转化为灰度图Xlabel('x/mm');%标出横坐标(单位mm)Ylabel('y/mm');%标出纵坐标(单位mm)title('干涉图样');%标出标题axis([-5 5 0 5]);%标出坐标分度值endelseif current_n<=10%判断delta_d=get(hObject,'UserData');% 从UserData中获取步长d_final=get(handles.edit8,'Value'); %获取编辑窗口8的变量值d_initial=get(handles.edit1,'Value'); %获取编辑窗口1的变量值Lambad = 632.8e-006; %设置光线波长(632.8nm)d=d_initial+(current_n)*delta_d;%获取d的值D=get(handles.edit2,'Value');%获取D的值if(D>=0.001&D<=3000)&(d>=0.001&d<=2) %确定所设参数在绘图范围内N = 1000; %定义变量x = linspace(-5,5,N);%设置图像精度y = linspace(-5,5,N);%设置图像精度for i = 1:N%定义变量确定横向点的坐标I(i) = cos(pi*d*x(i)/(Lambad*D)).^2; %光强分布公式endaxes(handles.axes1); %准备在绘图板1中创

建图形cla; %清除以前原有图形plot(-400,3,'ro','linewidth',3); %画出光源位置line([0,0],[3-d/2+0.1,3+d/2-0.1],'linewidth',4);line([0,0],[3+d/2+0.1,6],'linewidth',4);line([0,0],[0,3-d/2-0.1],'linewidth',4);line([D,D],[0,6],'linewidth',4); %画出双缝与光屏hold on%使已画图形继续存在for r=0:100:800%循环circle(-400,3,r,-20,pi); %用自定义函数画出初始光波endfor r=0:100:2*D%循环circle(10,3+d/2,r,D-10,pi*0.85);circle(10,3-d/2,r,D-10,pi*0.85); %用自定义函数画出双缝光源endhold off%绘图结束title('杨氏双缝干涉示意图'); %标出标题axis([-400,3300,0,6]); %定义横坐标axes(handles.axes2); %准备在绘图板2中创建图形cla; %清除以前原有图形plot(x,I); %画出光强分布曲线Xlabel('x/mm'); %标出横坐标(单位mm)Ylabel('I(x)'); %标出纵坐标单位title('光强分布曲线'); %标出标题axis([-5 5 0 1]); %标出坐标分度值A=255; %定义干涉图像灰度分度值B=I*A; %换算axes(handles.axes3); %准备在绘图板3中创建图形cla; %清除以前原有图形image(x,y,B); %画出干涉图像原形colormap(gray(A)); %将图样转化为灰度图Xlabel('x/mm');%标出横坐标(单位mm)Ylabel('y/mm');%标出纵坐标(单位mm)title('干涉图样');%标出标题axis([-5 5 0 5]);%标出坐标分度值endelse%判断current_n=0; %赋值draw(handles); %运行函数,画出图像end%当D(双缝到光屏的距离)变化时% --- Executes on button press in pushbutton3.function pushbutton3_Callback(hObject, eventdata, handles)% hObjecthandle to pushbutton3 (see GCBO)% eventdatareserved - to be defined in a future

version of MATLAB% handlesstructure with handles and user data (see GUIDATA)global current_n%定义全局变量current_n=current_n+1;%赋值if current_n==1%条件判断D_final=get(handles.edit9,'Value'); %获取编辑窗口9的变量值D_initial=get(handles.edit2,'Value'); %获取编辑窗口2的变量值delta_D=(D_final-D_initial)/10; %设定步长set(hObject,'UserData',delta_D); %将步长存入按钮3的UserData中Lambad = 632.8e-006; %设置光线波长(632.8nm)D=D_initial+(current_n)*delta_D; %获取D的值d=get(handles.edit1,'Value'); %获取d的值if(D>=0.001&D<=3000)&(d>=0.001&d<=2) %确定所设参数在绘图范围内N = 1000; %定义变量x = linspace(-5,5,N);%设置图像精度y = linspace(-5,5,N);%设置图像精度for i = 1:N%定义变量确定横向点的坐标I(i) = cos(pi*d*x(i)/(Lambad*D)).^2; %光强分布公式endaxes(handles.axes1); %准备在绘图板1中创建图形cla; %清除以前原有图形plot(-400,3,'ro','linewidth',3); %画出光源位置line([0,0],[3-d/2+0.1,3+d/2-0.1],'linewidth',4);line([0,0],[3+d/2+0.1,6],'linewidth',4);line([0,0],[0,3-d/2-0.1],'linewidth',4);line([D,D],[0,6],'linewidth',4); %画出双缝与光屏hold on%使已画图形继续存在for r=0:100:800%循环circle(-400,3,r,-20,pi); %用自定义函数画出初始光波endfor r=0:100:2*D%循环circle(10,3+d/2,r,D-10,pi*0.85);circle(10,3-d/2,r,D-10,pi*0.85); %用自定义函数画出双缝光源endhold off%绘图结束title('杨氏双缝干涉示意图'); %标出标题axis([-400,3300,0,6]); %定义横坐标axes(handles.axes2); %准备在绘图板2中创建图形cla; %清除以前原有图形plot(x,I); %画出光强分布曲线Xlabel('x/mm'); %标出横坐标(单位mm)Ylabel('I(x)'); %标出纵坐标单位

title('光强分布曲线'); %标出标题axis([-5 5 0 1]); %标出坐标分度值A=255; %定义干涉图像灰度分度值B=I*A; %换算axes(handles.axes3); %准备在绘图板3中创建图形cla; %清除以前原有图形image(x,y,B); %画出干涉图像原形colormap(gray(A)); %将图样转化为灰度图Xlabel('x/mm');%标出横坐标(单位mm)Ylabel('y/mm');%标出纵坐标(单位mm)title('干涉图样');%标出标题axis([-5 5 0 5]);%标出坐标分度值endelseif current_n<=10%判断delta_D=get(hObject,'UserData'); % 从UserData中获取步长D_final=get(handles.edit9,'Value'); %获取编辑窗口9的变量值D_initial=get(handles.edit2,'Value'); %获取编辑窗口2的变量值Lambad = 632.8e-006; %设置光线波长(632.8nm)D=D_initial+(current_n)*delta_D; %获取D的值d=get(handles.edit1,'Value'); %获取d的值if(D>=0.001&D<=3000)&(d>=0.001&d<=2) %确定所设参数在绘图范围内N = 1000; %定义变量x = linspace(-5,5,N);%设置图像精度y = linspace(-5,5,N);%设置图像精度for i = 1:N%定义变量确定横向点的坐标I(i) = cos(pi*d*x(i)/(Lambad*D)).^2; %光强分布公式endaxes(handles.axes1); %准备在绘图板1中创建图形cla; %清除以前原有图形plot(-400,3,'ro','linewidth',3); %画出光源位置line([0,0],[3-d/2+0.1,3+d/2-0.1],'linewidth',4);line([0,0],[3+d/2+0.1,6],'linewidth',4);line([0,0],[0,3-d/2-0.1],'linewidth',4);line([D,D],[0,6],'linewidth',4); %画出双缝与光屏hold on%使已画图形继续存在for r=0:100:800%循环circle(-400,3,r,-20,pi); %用自定义函数画出初始光波endfor r=0:100:2*D%循环circle(10,3+d/2,r,D-10,pi*0.85);circle(10,3-d/2,r,D-10,pi*0.85); %用自定义函数画出双缝光源endhold off%绘图结束

title('杨氏双缝干涉示意图'); %标出标题axis([-400,3300,0,6]); %定义横坐标axes(handles.axes2); %准备在绘图板2中创建图形cla; %清除以前原有图形plot(x,I); %画出光强分布曲线Xlabel('x/mm'); %标出横坐标(单位mm)Ylabel('I(x)'); %标出纵坐标单位title('光强分布曲线'); %标出标题axis([-5 5 0 1]); %标出坐标分度值A=255; %定义干涉图像灰度分度值B=I*A; %换算axes(handles.axes3); %准备在绘图板3中创建图形cla; %清除以前原有图形image(x,y,B); %画出干涉图像原形colormap(gray(A)); %将图样转化为灰度图Xlabel('x/mm');%标出横坐标(单位mm)Ylabel('y/mm');%标出纵坐标(单位mm)title('干涉图样');%标出标题axis([-5 5 0 5]);%标出坐标分度值endelse%判断current_n=0; %赋值draw(handles); %运行函数,画出图像end2.画图函数1)画圆函数functioncircle(xin,yin,r,x_end,sita) %定义画圆函数%画出下半只图像for alpha=-sita/2:sita/50:0;%定义图象范围x=xin+r*cos(alpha);%定义X轴y=yin+r/(500)*sin(alpha); %定义Y轴p=find(x<=x_end); %只显示光屏左侧的图像plot(x(p),y(p), 'r-') %画出图像end%画出上半只图像for alpha=0:sita/50:sita/2; %定义图象范围x=xin+r*cos(alpha); %定义X轴y=yin+r/(500)*sin(alpha); %定义Y轴p=find(x<=x_end); %只显示光屏左侧的图像plot(x(p),y(p), 'r-') %画出图像end2)绘图函数function draw(handles) %定义函数Lambad = 632.8e-006; %设置光线波长(632.8nm)d=get(handles.edit1,'Value'); %获取d的值D=get(handles.edit2,'Value'); %获取D的值if(D>=0.001&D<=3000)

&(d>=0.001&d<=2) %确定所设参数在绘图范围内N = 1000; %定义变量x = linspace(-5,5,N);%设置图像精度y = linspace(-5,5,N);%设置图像精度for i = 1:N%定义变量确定横向点的坐标I(i) = cos(pi*d*x(i)/(Lambad*D)).^2; %光强分布公式endaxes(handles.axes1); %准备在绘图板1中创建图形cla; %清除以前原有图形plot(-400,3,'ro','linewidth',3); %画出光源位置line([0,0],[3-d/2+0.1,3+d/2-0.1],'linewidth',4);line([0,0],[3+d/2+0.1,6],'linewidth',4);line([0,0],[0,3-d/2-0.1],'linewidth',4);line([D,D],[0,6],'linewidth',4); %画出双缝与光屏hold on%使已画图形继续存在for r=0:100:800%循环circle(-400,3,r,-20,pi); %用自定义函数画出初始光波endfor r=0:100:2*D%循环circle(10,3+d/2,r,D-10,pi*0.85);circle(10,3-d/2,r,D-10,pi*0.85); %用自定义函数画出双缝光源endhold off%绘图结束title('杨氏双缝干涉示意图'); %标出标题axis([-400,3300,0,6]); %定义横坐标axes(handles.axes2); %准备在绘图板2中创建图形cla; %清除以前原有图形plot(x,I); %画出光强分布曲线Xlabel('x/mm'); %标出横坐标(单位mm)Ylabel('I(x)'); %标出纵坐标单位title('光强分布曲线'); %标出标题axis([-5 5 0 1]); %标出坐标分度值A=255; %定义干涉图像灰度分度值B=I*A; %换算axes(handles.axes3); %准备在绘图板3中创建图形cla; %清除以前原有图形image(x,y,B); %画出干涉图像原形colormap(gray(A)); %将图样转化为灰度图Xlabel('x/mm');%标出横坐标(单位mm)Ylabel('y/mm');%标出纵坐标(单位mm)title('干涉图样');%标出标题axis([-5 5 0 5]);%标出坐标分度值end《中小学生创新》编辑部 电话:010-88636146 E-mail:cx33@VIP.163.com 返回首页 返回上一页

相关推荐