小孔成像实验报告

小孔成像实验报告

班级            姓名                 学号           成绩

一、实验目的:

1、通过本实验理解光的直线传播原理;

2、探究小孔成像的规律

二、实验材料:

   蜡烛、打火机、薯片罐(或别的废旧圆柱形小筒)、硬纸卡、半透明薄纸

三、实验过程及结果记录:

1、按照书本P92页活动所示制作三个小孔直径分别为1mm 、2mm 、3mm 的小孔成像仪

2、点燃一根蜡烛并固定,在距蜡烛5cm处上下调整小孔成像仪与蜡烛火焰间位置直到看到清晰的像为止。当                                              时可以看到清晰的像。

3、找到合适位置后将三个不同直径的小孔成像仪固定在该处,观察半透明薄纸中的像,观察并记录像的清晰程度、亮度和像的大小。

4、探究小孔成像规律:选择其中成像最清晰的一个小孔成像仪,在距蜡烛5cm处固定小孔成像仪,前后移动纸筒位置,改变光屛和小孔成像仪间的距离,观察像的大小有怎样的变化?像是正立的还是倒立的?

四、实验结论:

   1、通过实验,我认为要制作一个成像清晰的小孔成像仪有以下几个注意事项:

                                                                                

                                                                                

2、小孔成像的规律有:当             时呈放大倒立的像,当              时呈缩小倒立的像,当            时呈等大倒立的像。

五、实验反思

     实验结束后我还有以下问题:

                                                                                

                                                                                

 

第二篇:层析成像实验报告(程序)

层析成像实验报告

一、计算下述函数在自变量采样点集上的值: ?(?x2?4x?3)/2, -3?x?-1

编写脚本程序,分别创建采样向量,计算相应的函数值向量,并利用函数绘图函数fplot(x,y)绘制x-y曲线。将程序、执行过程及图形结果拷贝至作业文档提交。提示:if …(elseif) …else...语句 源程序:

clear,clc

x = -3:0.01:3;

N = length(x);

y = zeros(1,N);

fori =1:N

if x(i) >=-3 & x(i) < -1

y(i) = (-x(i)^2 - 4*x(i) - 3)/2;

图片结果: ?y??-x2?1, -1?x?1?(?x2?4x?3)/2, 1?x?3?elseif x(i) >=-1 & x(i) < 1 y(i) = -x(i)^2 + 1; else y(i) = (-x(i)^2 + 4*x(i) - 3)/2; end end plot(x,y)

二、按要求完成下述练习

编写函数maxi,返回给定向量中最大元素的下标值。换言之,imax=maxi(v)返回的imax满足v(imax)不小于任何v(i)。

- 将你的学号作为测试数据(每一位对应一个向量元素)进行测试 - 提示:利用for ….循环语句

functionimax=fun(v)

t=v(1,1);

imax=1;

fori=1:11

if v(1,i+1)>t

t=v(1,i+1); imax=i+1; %else % imax1=0; end end

层析成像实验报告程序

imax

end

三、射线追踪

模型为一三层模型,范围100m×100m。该模型含有三个水平层,上下两个层速度为3000m/s,中间为一高速层,速度为4500m/s,高速层厚度范围是50~60m。激发点有19个,坐标依次为是El(0,5)、E2(0,10)、E3(0,15),…,E10(0,95)接收点有21个,坐标分别为Rl(100,0)、R2 (100,5)、R3(100,10),…,R21(100,100)。将此模型网格化为10×10个单元格.根据LTI法追踪出19×21条射线的路径和旅行时。

#include<stdio.h> #include<math.h> void main() {

voidzheji(float rec[],intM,int N);

/*雷克子波*/

R[],float

b[],float

fp=fopen("zibo.txt","w+"); for(n1=0;n1<61;n1++)

{

b[n1]=(1-2*pi*pi*fm*fm*(n1-30)*dt*(n1-30)*dt)*exp(-pi*pi*fm*fm*(n1-30)*dt*(n1-30)*dt); }

FILE *fp;

doubledt=0.002,pi=3.1415926; int fm,n1;

float b[960]={0.0}; fm=30;

for(n1=0;n1<960;n1++)

{

fprintf(fp,"%f\n",b[n1]); }

fclose(fp);

FILE*fp11,*fp1,*fp2,*fp3,*fp4,*fpy; fp11=fopen("result","wb"); fp1=fopen("最佳射角.txt","w+"); fp2=fopen("走时.txt","w+"); fp3=fopen("位置.txt","w+"); fpy=fopen("fsxs.txt","w+"); inti,j;

/*建立二维水平地质模型*/ float

V[10][256],p[10][256],dx=100.0,dz=100.0; for(i=0;i<10;i++)

{

for(j=0;j<60;j++) {

V[i][j]=1800;

p[i][j]=0.00021*V[i][j]+1.62;

}

for(j=60;j<180;j++) {

V[i][j]=2500;

p[i][j]=0.00021*V[i][j]+1.62;

}

for(j=180;j<256;j++)

{

V[i][j]=2800;

p[i][j]=0.00021*V[i][j]+1.62; } }

float

r1=(2500*p[5][100]-1800*p[5][5])/(2500*p[5][100]+1800*p[5][5]);

float

r2=(2800*p[5][200]-2500*p[5][100])/(2800*p[5][200]+2500*p[5][100]);

/*建立观测系统*/

intloc_s=2,i1,j1;

intloc_r[4]={4,5,6,7},t1[10],t2[10];

float

Ref[10][960]={0},rec[960]={0.0};

/*开始追踪*/

double

a[10]={0.0},a2[10]={0.0},x[10],t[10]; /*检波点距炮点的距离,每一层的深度

*/ double

x0[10]={200.0,300.0,400.0,500.0,600,700,800,900,1000,1100},h[3]={600,1800,2560}; /*试射法求最佳入射角*/ for(i=0;i<10;i++) {

float R[960]={0.0}; for(j=0;j<1000000000;j++)

{

a[i]=0.000002*j/180.0*pi;

x[i]=2*h[0]*tan(a[i]);

if(fabs(x[i]-x0[i])<0.0001)

break;

}

/*输出最佳入射角度及走时*/ printf("%f\n",a[i]*180/pi); fprintf(fp1,"%f\n",(a[i]*180));

t[i]=(2.0*h[0]/cos(a[i]))/1800.0;rint

f(fp2,"%f\n",fabs(t[i]));

t1[i]=int(fabs(t[i])/dt);

printf("%d\n",t1[i]); fprintf(fp3,"%f\n",t1[i]);

R[t1[i]]=r1;

/*试射法求最佳入射角第二层*/ for(j=0;j<1000000000;j++) a[i]=(0.000002*j+a[i])/180.0*pi; a2[i]=asin(1.5*sin(a[i]));

x[i]=2*(h[0]*tan(a[i])+(h[1]-h[0])*t

an(a2[i])); if(fabs(x[i]-x0[i])<0.0001)

break;}

/*输出最佳入射角度及走时*/ printf("%f\n",(a[i]*180)); double y=tan(a[i]);

t[i]=(2.0*h[0]/cos(a[i]))/1800.0+2.0*(h[1]-h[0])/cos(a2[i])/2500 ; t2[i]=(int)(fabs(t[i])/dt); printf("%d\n",t2[i]); Ref[i][t2[i]]=r2; R[t2[i]]=r2; if(i==0)

for(i1=0;i1<960;i1++) fprintf(fpy,"%f\n",R[i1]); fp4=fopen("反射系数.txt","w+"); for(i1=0;i1<10;i1++) {

for(j1=0;j1<960;j1++) fprintf(fp4,"%f\n",Ref[i1][j1]);

}

fclose(fp4);

/*调用褶积函数计算记录*/ zheji(R,b,rec,900,61); fwrite(&rec[0],4,960,fp11); }

fclose(fp1); fclose(fp2); fclose(fp3); fclose(fpy);

fclose(fp11); }

/*褶积子函数*/

void zheji(float R[],float b[],float rec[],intM,int N)

{ FILE *fpx; floatl,sum;

l=M+N-1; intm,n;

fpx=fopen("jilv.txt","w+); for(m=0;m<l;m++) { sum=0.0; for(n=0;n<=m;n++)

sum+=R[n]*b[m-n];

rec[m]=sum;

fprintf(fpx,"%f\n",rec[m]);

}fclose(fpx);

}