实验报告
姓 名:汤博 班 级:F0703028 学 号:5070309028 实验成绩:
同组姓名: 无 实验日期:20##-9-23 指导老师:助教26 批阅日期:
全息干涉技术的应用
【实验目的】
1.了解二次曝光全息干涉术的原理、特点及应用
2. 通过用二次曝光法测量悬臂梁弯曲变形。
【实验原理】
1.二次曝光全息干涉法
二次曝光全息干涉法就是在同一片感光板上分别记录同一物体变形前后的两张全息照片(全息图).先后二次曝光的唯一差别在于后一次曝光前该物体有了一个微小的变形或移动,而全息防振台上的整个拍摄装置、元件仍保持原状,故当在再现观察时,用再现光波照射这张经过双重曝光后,又经过化学冲洗处理(显影、定影处理)的全息照片时,在看到再现物像的同时,还会在像的表面上看到由于物体的微小形变或位移而产生的干涉条纹.出现这种形变干涉条纹的物理解释如图1所示. S为被照明物体光波的波源,G为感光版上的任意点,设物点变形前、后位于Q1和Q2;形变所产生的物点实际位移是 ,所以,物光波由照明光波的波源发出后被Q1及Q2物点散射到G点,此二列散射光波在G点的位相差为
2.二次曝光测量悬臂梁变形分布
本实验中将拍摄一端夹紧的悬臂梁,当另一端受力发生弯曲变形的二次曝光全息干涉照片,并测出该梁中性截面上各点的位移值。由于悬臂梁的自由端在不大的集中外力Fy作用下,梁中心截面上各点沿x轴向的变形很小,常可以略去不计.而各点沿y轴的变形分布,可以用材料力学的公式确定,即
式中,L为梁长,E为材料的杨氏模量,J为梁截面的惯性矩,x为待测物点Qi的位置坐标.
【实验数据记录、实验结果计算】
a = 24.5cm b = 6.5cm
h1= 25.8cm h2 = 17.3cm
L = 19.3cm ymax = 10
= 0.6328 10-3mm
【对实验结果中的现象或问题进行分析、讨论】
由于我们并没有成功的拍摄出全息干涉的照片,所以以上数据并非是我们在实验时测量到的,而是我们读的样本数据值。分析实验失败的一些原因吧,第一次失败可能是由于在曝光时胶片并未充分曝光就拿去冲洗了,使得我们并未观察到图像,也可能是由于光路并没有调整完毕。第二次,我们重新调整了光路,并且将光强调整到了最适宜的大小,使得曝光时间变为1s,更容易把握,但是在冲洗时,显影有些过渡,使得拍出来的图像太暗,不易观察,但还是可以看到一些图像的。实验结果产生了一些误差,可能是由于我们在读样本数据时的一些估读误差所致。
【实验感想】
由于我在上个学期曾经做过关于全息照相的实验,当时我就没有拍摄出图像,深感遗憾,希望这次能够成功完成这个实验。但是,很不幸的是,这次的实验我也失败了,这是我了解到了要做好光学实验室很不容易的,对光学的原理的理解,以及光路的调整都需要有很高的要求。但是这种通过这种一边动手一边学习的方法,我们可以更好的理解实验原理,并且可以通过自己的知识来进行一些创新,最后感谢实验老师在实验中对我的帮助。
第二篇:java实验报告5
一.实验目的
(1)学习类的继承、子类在对象中调用父类定义的方法
(2)学习类继承时方法的覆盖
(3)学习java中抽象类的语法、子类中实现父类的抽象方法
(4)了解JDK参考文档
(5)学习文档注释、javadoc命令的使用
(6)了解同一目录下,多个类并存且同名的情况对程序运行的影响
(7)学习接口
(8)学习内部类
二.实验软件环境
jdk1.6.0_18、windows 7
三.实验内容
(1)编写一个java程序,在程序中定义一个PersonB类,定义一个PersonB类的子类StudentB类,再定义一个C2类,在main()方法生成StudentB类的两个对象
package com.gdut.net.javaoo.class070120;
//C2.java
class PersonB
{
String name;
int age;
public PersonB()
{
System.out.println("PersonB()被调用");
}
public PersonB(String newName)
{
name=newName;
System.out.println("PersonB(String newName)被调用");
}
public void introduce()
{
System.out.println("我是"+name+",今年"+age+"岁");
}
}
class StudentB extends PersonB
{
public StudentB()//[代码1]创建一个参数为空的StudentB类的构造方法,能显示“StudentB()被调用”
{
System.out.println("StudentB()被调用");
}
public StudentB(String newName,int newAge)
{
super(newName);//[代码2]调用父类的public PersonB(String newName)构造方法,传入newName参数,提示使用关键词super进行调用
age=newAge;//[代码3]将newAge赋值给age属性
}
}
class C2
{
public static void main(String args[])
{
StudentB s1=new StudentB();
StudentB s2=new StudentB("张三",19);
s2.introduce();//[代码4]调用s2的introduce方法
}
}
(2)编写一个java程序,在程序中定义一个Animal类,再定义两个Animal类的子类Bird、Fish类,在子类中覆盖父类的play方法
package com.gdut.net.javaoo.class070120;
//Overriding.java
class Animal
{
void play()
{
System.out.println("我是动物,我会很多本领");
}
}
class Bird extends Animal//[代码1]定义Animal类的子类Bird,覆盖Animal类的play方法,在play方法中输出“我是小鸟,我能飞翔”
{
void play()
{
System.out.println("我是小鸟,我能飞翔");
}
}
class Fish extends Animal//[代码2]定义Animal类的子类Fish,覆盖Animal类的play方法,在play方法中输出“我是小鱼,我能游泳”
{
void play()
{
System.out.println("我是小鱼,我能游泳");
}
}
class Overriding
{
public static void main(String args[])
{
Animal s1=new Animal();
Bird s2=new Bird();
Fish s3=new Fish();
s1.play();
s2.play();
s3.play();
}
}
(3)编写一个java程序,随机产生一个0~10的随机整数,并且求这个数的平方根
package com.gdut.net.javaoo.class070120;
//UseJDK.java
import java.lang.Math;
public class UseJDK
{
public static void main(String args[])
{
int a;
a=(int)(Math.random()*10);
System.out.println("a="+a);
System.out.println(a+"的平方根是"+Math.sqrt(a));
}
}
(4)编写两个java程序,在China.java中,显示“我是中国人”;在America.java中显示“我是美国人”
//man.java
package Chinese;
public class man
{
public void say()
{
System.out.println("我是中国人");
}
}
//China.java
import Chinese.man;
public class China
{
public static void main(String args[])
{
man zhangsan=new man();
zhangsan.say();
}
}
import American.man;
public class America
{
public static void main(String args[])
{
man lisi=new man();
lisi.say();
}
}
(5)编写一个java程序,在程序中定义一个接口Achievement,定义一个父类Person,定义一个子类Student继承Person类并实现Achievement接口,在子类Student中实现接口中的抽象方法并调用父类的方法
package com.gdut.net.javaoo.class070120;
//JieKou.java
interface Achievement
{
public float average();//[代码1]定义一个返回float型的方法average()
}
class Person
{
String name;
int age;
public Person(String newName,int newAge)
{
name=newName;
age=newAge;
}
public void introduce()
{
System.out.println("你好,我是"+name+",今年"+age+"岁");
}
}
class Student extends Person implements Achievement//[代码2]继承person类并实现Achievement接口
{
int Chinese;
int Math;
int English;
public Student(String newName,int newAge)
{
super(newName,newAge);//[代码3]调用父类的构造方法public Person(String newName.int newAge)
}
public void setScore(int c,int m,int e)
{
Chinese=c;
Math=m;
English=e;
}
public float average()
{
return (Chinese+Math+English)/3;
}
}
class JieKou
{
public static void main(String args[])
{
Student s1=new Student("张三",16);
s1.introduce();//[代码4]调用s1的introduce方法
s1.setScore(80,90,80);
System.out.println("我的平均分是"+s1.average());//[代码5]显示s1的平均分
}
}
(6)编写一个java程序,在程序中定义一个School类,在School类中定义一个内部类Student,分别创建这两个类的对象,访问个个对象中的方法
package com.gdut.net.javaoo.class070120;
//Inner.java
class School
{
String name;
public class Student
{
String name;
int age;
public Student(String schoolName,String studentName,int newAge)
{
School.this.name=schoolName;
name=studentName;
age=newAge;
}
public void output()
{
System.out.println("学校:"+School.this.name);
System.out.println("姓名:"+this.name);
System.out.println("年龄:"+this.age);
}
}
public void output()
{
Student stu=new Student("金融学院","张三",24);
stu.output();
}
}
public class Inner
{
public static void main(String args[])
{
System.out.println("--通过外部类成员访问内部类成员--");
School a=new School();
a.output();
System.out.println("--直接访问内部类成员--");
School.Student b=a.new Student("金融学院","李四",23);
b.output();
}
}
四.实验的结果及分析
五.实验心得体会
通过本章节的学习,对于本章节所要学习的目标都初步达到了。
更好地掌握了java程序的编写以及其思想。