实验报告-声波谐振管

时间:2024.4.20

【实验题目】声波谐振管实验

【实验仪器】

【实验记录与分析】

长度保留到毫米,所有图标明图题、各轴代表的量和单位、实验数据点、拟合直线及其方程和相关系数

实验室温度:T=24℃,谐振管直径:L0=3.2cm,声速理论值:v0=346.1m/s(保留一位小数)

一、 最小谐振频率的测定

计算开管最小谐振频率的理论值f0=   Hz

所测闭管的管长L=    cm,闭管最小谐振频率的理论值f0’=    Hz

分别作开管和闭管的f与n的曲线,用直线拟合求出各自的最小谐振频率的实验平均值

1                                         2

最小谐振频率的实验结果:

开管:f=179.47 Hz,|(f-f0)/f0|=4.02 %;闭管:f’=   Hz,|(f’-f0’)/f0’|=     %

二、 测量驻波波形

1、 开管驻波波形(压强波)(从0开始每隔2cm测一点)

开管驻波波形图:

图3

2、闭管驻波波形(压强波)(从0开始每隔2cm测一点)

闭管驻波波形图:

图4

三、管长和谐振模式

以n为横坐标,管长为纵坐标作图,并进行直线拟合,求声速:

图5

四、(选做)管中的声速 1、测量闭管中的声速(麦克风位置接近零点)

作L与Δt曲线,直线拟合,求声速。

麦克风距离波源1.5cm,波反射回来经过的路程s(cm)=2L(cm)-3(cm),以此为横坐标作图,则声速v=1/k:

图6

闭管中的声速:v=   341.3   m/s,相对误差:|(v-v0)/v0|=   1.39   %

2、 测量开管中的声速(自行设计)      

图7

【总结与讨论】

本实验总体来讲较为成功。实验一中,闭管测得基频与经验公式的结果相差很大,可能是实验过程中仪器不太稳定,而且采用了较长的管长,导致测量管长的时候不太准确。实验二、三、四都是探究性质的实验,因此没有做误差分析。但是根据常识,实验二中的波形图大体正确,实验三四测出的声速也与24摄氏度时的声速(346.1m/s)相差不多。

成绩(满分30分):         指导教师签名:              日期:                 


第二篇:声波方程数值模拟实验报告


声波方程数值模拟实验报告

实验要求:

1、应用声波方程作为正演模拟的波动方程;

2、将所提供震源函数离散后绘图;

3、给定两个二维速度-深度模型(一个小模型;一个大模型),绘出图形来;

4、对于小模型,整个区域的速度值可设为常数,即只有一种介质,将震源点放在模型中间,分别记录两个时刻的波前快照(即该时刻区域内所有网格点的波场值)。第一时刻为地震波还未传播到边界上的某时刻,第二时刻为地震波已经传播到边界上的某时刻,体会其人工边界反射;

5、对于大模型,定义为水平层状速度模型(至少两层);做两个实验,一是将震源点放在区域表层任一点,记录下某些时刻的波前快照,体会地震波在两种介质的分界面上传播规律;二是合成一个地震记录,即记录下与震源同一深度点的各点所有时刻的波场值,并指出记录上的同向轴分别对应哪些波。

实验目的:

1. 通过本次作业,加深对波动方程的理解,明白波动方程所代表的物理意义。

2. 通过模拟地震波在介质中的传播,理解实际勘探中地震波在地层中的传播规律。

3. 通过模拟水平层状速度模型,体会地震波在两种介质分界面的传播规律,并能够从地震记录中识别出反射波,透射波,多次波,折射波和绕射波。

4. 通过模拟人工合成的地震记录,体会地震勘探基本原理和方法,验证地震波传播能量波形变化趋势。

需要的已知条件包括:

1)震源函数

2)地层速度(波速)

3)边界条件

2.弹性波方程:

声波方程的有限差分法数值模拟

对于二维速度-深度模型,地下介质中地震波的传播规律可以近似地用声波方程描述:

                                       (4-1)

是介质在点(x , z)处的纵波速度,为描述速度位或者压力的波场,为震源函数。

为求式(4-1)的数值解,必须将此式离散化,即用有限差分来逼近导数,用差商代替微商。为此,先把空间模型网格化(如图4-1所示)。

设x、z方向的网格间隔长度为为时间采样步长,则有:

    (i为正整数)

     (j为正整数)     (n为正整数)

表示在(i,j)点,k时刻的波场值。

在(i,j)点k时刻用Taylor展式展开:

                          (4-2)

在(i,j)点k时刻用Taylor展式展开:

                         (4-3)

将上两式相加,略去高阶小量,整理得(i,j)点k时刻的二阶时间微商为:

                                                                      (4-4)

对于空间微分,采用四阶精度差分格式,(以X方向为例)即将

分别在(i,j)点k时刻展开到四阶小量,消除四阶小量并解出二阶微分得:

            (4-5)

同理可得:

                 (4-6)

这就实现了用网个点波场值的差商代替了偏微分方程的微商,将上三个式子代入(4-1)式中得:

                     }

                    

                                                                                                                   (4-7)

式中为介质速度的空间离散值,是空间离散步长,为时间离散步长,为震源函数,关于一般使用一个理论的雷克型子波代替,即:

                                   (4-8)

上式中,为时间, 为中心频率,一般取为20-40HZ,为控制频带宽度的参数,一般取3-5。在实际计算过程中,需把此震源函数离散,参与波场计算。确定震源位置。

稳定性条件:                                                                          (4-8)

这里表示的是地下介质的最大波速;若地下介质网格间隔、最小速度、及时间采样间隔不符合(4-8)式时,第推求解(4-7)式,波场值会出现误差(高阶小量)累积,出现不稳定现象。

频散关系式:                       (4-9)

式中为最小速度,为Nyquist频率。一般取震源子波中的主频的2倍值参与计算,G为每个波长所占的网格点数,对于空间二阶差分、时间二阶差分取8,而对于空间为四阶差分的情况则取4方能有效减少频散。

二.实验步骤

1、  应用声波方程作为正演模拟的波动方程,忽略转换波的产生、传播;

2、  将所提供震源函数离散后绘图;

震源函数为雷克子波,离散绘图如下:

fm=30;

r=3;

t=0.002;

 for n=1:200

w(n)=exp(-(2*pi*fm/r)^2*(t*n)^2)*cos(2*pi*fm*t*n);

 end

figure(1),plot(w);

3、  对于小模型,整个区域的速度值可设为常数,即只有一种介质,将震源点放在模型中间,分别记录两个时刻的波前快照(即区域内所有网格点的波场值)。第一时刻为地震波还未传播到边界上的某时刻。

由稳定条件,设v为2000,可以令DT=0.001,DH=5,此时精度较高,且满足频散关系

程序,图形如下:

#include <stdio.h>

#include <math.h>

#include <stdlib.h>

#define PI 3.141593

#define FM 30

#define R 3

#define KN 200

#define XN 101

#define ZN 101

#define DH 5

#define DT 0.001

void main()

{

       FILE *fp;

       int i,j,k,m,n;

    float u1[XN][ZN],u2[XN][ZN],u3[XN][ZN],u4[XN][ZN],f[XN][ZN]; //不能直接初值为0

    float u5[XN][ZN],v[XN][ZN],w[KN],uu0,uu1,uu2;

  for(k=0;k<KN;k++)

     w[k]=exp(-(2*PI*FM/R)*(2*PI*FM/R)*(k*DT)*(k*DT))*cos(2*PI*FM*k*DT);

for(i=0;i<XN;i++)   //定义f函数,当且仅当i,j同时为50时,f为1,其余为0

 for(j=0;j<ZN;j++)

  {if(i==50&&j==50)

   f[i][j]=1;

  else f[i][j]=0;

  }

   for(i=0;i<XN;i++)

    for(j=0;j<ZN;j++)

    { u1[i][j]=0.0;

         u2[i][j]=0.0;

         u3[i][j]=0.0;

         u4[i][j]=0.0;

      v[i][j]=2000;   //速度相同表示同一介质

    }

    for(k=0;k<KN;k++)

     {for(i=2;i<XN-2;i++)

      for(j=2;j<ZN-2;j++)

      {uu0=(v[i][j])*(v[i][j])*(DT/DH)*(DT/DH);

       uu1=-1.0/12*(u2[i-2][j]+u2[i+2][j])+4.0/3*(u2[i-1][j]+u2[i+1][j])-5.0/2*u2[i][j];

       uu2=-1.0/12*(u2[i][j-2]+u2[i][j+2])+4.0/3*(u2[i][j-1]+u2[i][j+1])-5.0/2*u2[i][j];

       u3[i][j]=2*u2[i][j]-u1[i][j]+uu0*uu1+uu0*uu2+w[k]*f[i][j];

      }

    for(m=0;m<XN;m++)

          for(n=0;n<ZN;n++)

         {u1[m][n]=u2[m][n];

          u2[m][n]=u3[m][n];

          }

     if(k==100)

     for(m=0;m<XN;m++)

      for(n=0;n<ZN;n++)

        u4[m][n]=u3[m][n];//记录波前快照,中间点

   }

      if((fp=fopen("wavefront.dat","w"))!=NULL)

      {fprintf(fp,"%d\n",XN);

       fprintf(fp,"%d\n",ZN);

       for(i=0;i<XN;i++)

        for(j=0;j<ZN;j++)

         fprintf(fp,"%f\n",u4[i][j]);

         fclose(fp);

      }

}

第二时刻为地震波已经传播到边界上的某时刻,体会其人工边界反射;

程序图形如下:

#include <stdio.h>

#include <math.h>

#include <stdlib.h>

#define PI 3.141593

#define FM 30

#define R 3

#define KN 200

#define XN 101

#define ZN 101

#define DH 5

#define DT 0.001

void main()

{

       FILE *fp;

       int i,j,k,m,n;

    float u1[XN][ZN],u2[XN][ZN],u3[XN][ZN],u4[XN][ZN],f[XN][ZN]; //不能直接初值为0

    float u5[XN][ZN],v[XN][ZN],w[KN],uu0,uu1,uu2;

  for(k=0;k<KN;k++)

     w[k]=exp(-(2*PI*FM/R)*(2*PI*FM/R)*(k*DT)*(k*DT))*cos(2*PI*FM*k*DT);

for(i=0;i<XN;i++)   //定义f函数,当且仅当i,j同时为50时,f为1,其余为0

 for(j=0;j<ZN;j++)

  {if(i==50&&j==50)

   f[i][j]=1;

  else f[i][j]=0;

  }

   for(i=0;i<XN;i++)

    for(j=0;j<ZN;j++)

    { u1[i][j]=0.0;

         u2[i][j]=0.0;

         u3[i][j]=0.0;

         u4[i][j]=0.0;

      v[i][j]=2000;   //速度相同表示同一介质

    }

    for(k=0;k<KN;k++)

     {for(i=2;i<XN-2;i++)

      for(j=2;j<ZN-2;j++)

      {uu0=(v[i][j])*(v[i][j])*(DT/DH)*(DT/DH);

       uu1=-1.0/12*(u2[i-2][j]+u2[i+2][j])+4.0/3*(u2[i-1][j]+u2[i+1][j])-5.0/2*u2[i][j];

       uu2=-1.0/12*(u2[i][j-2]+u2[i][j+2])+4.0/3*(u2[i][j-1]+u2[i][j+1])-5.0/2*u2[i][j];

       u3[i][j]=2*u2[i][j]-u1[i][j]+uu0*uu1+uu0*uu2+w[k]*f[i][j];

      }

    for(m=0;m<XN;m++)

          for(n=0;n<ZN;n++)

         {u1[m][n]=u2[m][n];

          u2[m][n]=u3[m][n];

          }

     if(k==160)  //只需改动K值,即显示边界反射

     for(m=0;m<XN;m++)

      for(n=0;n<ZN;n++)

        u4[m][n]=u3[m][n];//记录波前快照,边界

   }

      if((fp=fopen("wavefront.dat","w"))!=NULL)

      {fprintf(fp,"%d\n",XN);

       fprintf(fp,"%d\n",ZN);

       for(i=0;i<XN;i++)

        for(j=0;j<ZN;j++)

         fprintf(fp,"%f\n",u4[i][j]);

         fclose(fp);

      }

}

4、  对于大模型,定义为水平层状速度模型;做两个实验,一是将震源点放在区域表层任一点,记录下某些时刻的波前快照,体会地震波在两种介质的分界面上传播规律,指出哪是反射波,哪是透射波;

这时取小模型的常量,为减少频散,速度v至少为2400

程序图形如下:

#include <stdio.h>

#include <math.h>

#include <stdlib.h>

#define PI 3.141593

#define FM 30

#define R 3

#define KN 200

#define XN 200

#define ZN 100

#define DH 5

#define DT 0.001

void main()

{

       FILE *fp;

       int i,j,k,m,n;

    float u1[XN][ZN],u2[XN][ZN],u3[XN][ZN],u4[XN][ZN],u5[XN][ZN]; //不能直接初值为0

    float f[XN][ZN],v[XN][ZN],w[KN],uu0,uu1,uu2;

  for(k=0;k<KN;k++)

     w[k]=exp(-(2*PI*FM/R)*(2*PI*FM/R)*(k*DT)*(k*DT))*cos(2*PI*FM*k*DT);

   for(i=0;i<XN;i++)

    for(j=0;j<ZN;j++)

    { u1[i][j]=0.0;

         u2[i][j]=0.0;

         u3[i][j]=0.0;

         u4[i][j]=0.0;

      f[i][j]=0.0;

      if (j<=30)

      v[i][j]=2400;     //第一层速度为2400

      else

      v[i][j]=3000;   //第二层速度为3000

    }

     f[100][10]=1;  //定义f函数,在100,10为1

    for(k=0;k<KN;k++)

     {for(i=2;i<XN-2;i++)

      for(j=2;j<ZN-2;j++)

      {uu0=(v[i][j])*(v[i][j])*(DT/DH)*(DT/DH);

       uu1=-1.0/12*(u2[i-2][j]+u2[i+2][j])+4.0/3*(u2[i-1][j]+u2[i+1][j])-5.0/2*u2[i][j];

       uu2=-1.0/12*(u2[i][j-2]+u2[i][j+2])+4.0/3*(u2[i][j-1]+u2[i][j+1])-5.0/2*u2[i][j];

       u3[i][j]=2*u2[i][j]-u1[i][j]+uu0*uu1+uu0*uu2+w[k]*f[i][j];

       u5[i][k]=u1[i][10];     //地震记录

      }

    for(m=0;m<XN;m++)

          for(n=0;n<ZN;n++)

         {u1[m][n]=u2[m][n];

          u2[m][n]=u3[m][n];

          }

     if(k==100)

     for(m=0;m<XN;m++)

      for(n=0;n<ZN;n++)

        u4[m][n]=u3[m][n];//记录波前快照

   }

  

    if((fp=fopen("wavefront.dat","w"))!=NULL)

      {fprintf(fp,"%d\n",XN);

       fprintf(fp,"%d\n",ZN);

       for(i=0;i<XN;i++)

        for(j=0;j<ZN;j++)

         fprintf(fp,"%f\n",u4[i][j]);

         fclose(fp);

      }

}

二是合成一个地震记录,即记录下与震源同一深度点的各点所有时刻的波场值,并指出记录上的同向轴分别对应哪些波?

这时取小模型的常量,为减少频散,速度v至少为2400

程序图像如下:

#include <stdio.h>

#include <math.h>

#include <stdlib.h>

#define PI 3.141593

#define FM 30

#define R 3

#define KN 200

#define XN 200         

#define ZN 200

#define DH 5

#define DT 0.001

void main()

{

       FILE *fp;

       int i,j,k,m,n;

    float u1[XN][ZN],u2[XN][ZN],u3[XN][ZN],u4[XN][ZN],u5[XN][ZN]; //不能直接初值为0

    float f[XN][ZN],v[XN][ZN],w[KN],uu0,uu1,uu2;

  for(k=0;k<KN;k++)

     w[k]=exp(-(2*PI*FM/R)*(2*PI*FM/R)*(k*DT)*(k*DT))*cos(2*PI*FM*k*DT);

   for(i=0;i<XN;i++)

    for(j=0;j<ZN;j++)

    { u1[i][j]=0.0;

         u2[i][j]=0.0;

         u3[i][j]=0.0;

         u4[i][j]=0.0;

      f[i][j]=0.0;

      if (j<=30)

      v[i][j]=2400;     //第一层速度为2400

      else

      v[i][j]=3100;   //第二层速度为3100

    }

     f[100][10]=1;  //定义f函数,在100,10为1

    for(k=0;k<KN;k++)

     {for(i=2;i<XN-2;i++)

      for(j=2;j<ZN-2;j++)

      {uu0=(v[i][j])*(v[i][j])*(DT/DH)*(DT/DH);

       uu1=-1.0/12*(u2[i-2][j]+u2[i+2][j])+4.0/3*(u2[i-1][j]+u2[i+1][j])-5.0/2*u2[i][j];

       uu2=-1.0/12*(u2[i][j-2]+u2[i][j+2])+4.0/3*(u2[i][j-1]+u2[i][j+1])-5.0/2*u2[i][j];

       u3[i][j]=2*u2[i][j]-u1[i][j]+uu0*uu1+uu0*uu2+w[k]*f[i][j];

       u5[i][k]=u1[i][10];     //地震记录

      }

    for(m=0;m<XN;m++)

          for(n=0;n<ZN;n++)

         {u1[m][n]=u2[m][n];

          u2[m][n]=u3[m][n];

          }

     if(k==100)

     for(m=0;m<XN;m++)

      for(n=0;n<ZN;n++)

        u4[m][n]=u3[m][n];//记录波前快照

   }

      if((fp=fopen("sei_record.dat","w"))!=NULL)

      {fprintf(fp,"%d\n",XN/2);

       fprintf(fp,"%d\n",KN);

       for(i=0;i<XN;i=i+2)

        for(j=0;j<KN;j++)

         fprintf(fp,"%f\n",u5[i][j]);

         fclose(fp);

      }

}

从上向下看的两条直线为与震源同深度点的各点所有时刻的波场值,在向下与两直线紧邻的双曲线为第二层界面反射的记录。

三.    通过实验所发现的问题和认识

(1)    在用C语言写程序时,很多小问题不注意比如将i=i+2写成i+2,在m,n循环中出现i,j等等,导致无限循环,数据过大,不能出现dat文件等问题。经过这次试验对C语言和matlab的使用有了更加深刻的认识。

(2)程序成图时,图形不合适,调试数据时出现The data file length error! 按照       对数据进行多次修改,得到较合理的图形。

(3)通过这次试验对地下介质中地震波的传播规律和声波方程有了深刻的认识。

更多相关推荐:
实验报告-声波谐振管

基础物理实验声波谐振管实验实验仪器实验题目声波谐振管实验实验记录与分析长度保留到毫米所有图应标明图题各轴代表的量和单位实验数据点拟合直线及其方程和相关系数实验室温度T谐振管直径L0cm声速理论值v0ms保留一位...

超声波测距实验报告

电子信息系统综合设计报告超声波测距仪目录摘要3第一章111213绪论3设计要求3理论基础3系统概述4第二章方案论证421系统控制模块522距离测量模块523温度测量模块524实时显示模块525蜂鸣报警模块6第三...

大学物理实验超声波速测量实验报告

大学物理实验超声波速测量实验报告一实验目的1了解超声波的物理特性及其产生机制2学会用相位法测超声波声速并学会用逐差法处理数据3测量超声波在介质中的吸收系数及反射面的反射系数4并运用超声波检测声场分布5学习超声波...

超声波衰减系数 物理实验报告

北京交通大学大学物理实验设计性实验实验题目超声波衰减系数的测量学院班级通信1306学号姓名首次实验时间年月日时段指导教师签字目录一实验任务二实验要求三实验方案物理模型的比较与选择实验方法的比较与选择仪器的选择与...

超声波测距器实验报告

超声波测距器的设计设计说明超声波测距器可应用于汽车倒车建筑施工工地以及一些工业现场的位置监控也可用于如液位井深管道长度物体厚度等的测量也有很多方法可以测量这里用超声波设计一个测距器实现距离的测量1基本部分a测量...

四川大学电子信息超声波测距综合设计实验报告

四川大学电子信息学院综合设计实验报告实验名称超声波测距系统班级6组员114211420xx11四川大学电子信息学院摘要1第一章绪论111系统总体介绍112超声波测量原理1第二章方案拟定221系统控制模块222距...

北航基础物理实验研究性报告-使用振幅法测量声速

基础物理实验研究性报告使用振幅法测量声波的速度第一作者学号第二作者学号院系使用振幅法测量声波的速度北京航空航天大学北京102206摘要本文以使用分振幅法测量声波的速度为主要研究内容在了解模拟示波器的使用和基本操...

声波方程数值模拟实验报告

声波方程数值模拟实验报告实验要求1应用声波方程作为正演模拟的波动方程2将所提供震源函数离散后绘图3给定两个二维速度深度模型一个小模型一个大模型绘出图形来4对于小模型整个区域的速度值可设为常数即只有一种介质将震源...

声波方程数值模拟实验报告

声波方程数值模拟实验报告一基础理论知识需要的已知条件包括11震源函数2地层速度波速3边界条件22u2u2uvp22Stt2xz2弹性波方程222wv2wwsx2z2t2声波方程的有限差分法数值模拟对于二维速度深...

广工实验一LC并联谐振回路仿真电路实验报告

实验一LC并联谐振回路仿真电路一实验目的1学习Multisim10软件的使用方法2学习Multisim10中虚拟仪器的使用方法3理解LC并联谐振回路的基本特性二实验内容及要求1创建实验电路图112谐振回路的调谐...

实验报告LC电路

实验报告实验日期第1页系别班号姓名同组姓名教师评定实验名称LC电路的谐振现象目的要求1研究LC电路的谐振现象2了解LCR电路的相频特性和幅频特性仪器用具标准电感01HRL318标准电容005F电阻箱SS7802...

二级大物实验报告-交流谐振电路

实验题目交流谐振电路实验目的研究RLC串并联电路的交流谐振现象学习测量谐振曲线的方法学习并掌握电路品质因数Q的测量方法及其物理意义实验原理1RLC串联谐振电路电路中总阻抗ZR2L于是总电流12CIVR2L12C...

声波谐振管实验报告(8篇)