工程与环境物探实验报告

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
if((fpr=fopen("Rflct.text","r"))==NULL) printf("error");
if((fpc=fopen("Convolution.text","w"))==NULL) printf("error");
for(i=0;i<100;i++)
{
fscanf(fpw,"%f",&w1[i]);
{
//printf("%lf\n",Con[i]);
fprintf(fpc,"%lf\n",Con[i]);
}
fclose(fpw);
fclose(fpr);
fclose(fpc);
return 1;
}
5.数据及解释
f=40Hz地震记录
f=25Hz地震记录
f=20Hz地震记录
由图可知,当频率f逐渐变小时,子波开始产生干涉现象,导致分辨率降低。
//printf("%f\n",w1[i]);
w[100-1-i]=w1[i];
//printf("%f\n",w[100-1-i]);
}
for(i=0;i<50;i++)
{
fscanf(fpr,"%f",&r1[i]);
}
for(i=0;i<200;i++)
r[i]=0;
for(i=0;i<50;i++)
工程与环境物探教程
实验报告
一个反射地震纪录道的形成
专业:勘查技术与工程
学号:20100506XXXX
姓名:XXXXXXX
1.解决的问题
假设在地面以下半空间内有n+1层弹性介质,则有n个波阻抗界面,在第I层的p波速度为v[i],密度为p[i],第i层反射界面上反射系数用R[i]表示,进行实验一个反射地震纪录道的形成。
for(i=0;i<50;i++)
{
t=(50-i)*d;
Wa[i]=(float)(1-(pi*pi*f*f*t*t))*(float)exp(-2*pi*pi*f*f*t*t);
}
for(i=50;i<100;i++)
{
t=(i-50)*d;
Wa[i]=(float)(1-(pi*pi*f*f*t*t))*(float)exp(-2*pi*pi*f*f*t*t);
已知模型如图所示,
p1=2000kg/m3v1=800m/sp2=1600kg/m3v1=1000m/s
p3=2600kg/m3v1=2000m/sp4=1800kg/百度文库3v1=900m/s
p5=3200kg/m3v1=2300m/sh1=h2=h3=h3=50m
2.计算要求
1.求每个反射界面的反射系数
return 1;
}
/***********子波的求取***********/
int Wave(float f,float d)
{
FILE *fpw;
if((fpw=fopen("Wave.text","w"))==NULL)printf("error");
int i;
float Wa[100],t;
波阻抗:Z[i]=D[i]*v[i]
—D[i]为第i层密度,v[i]为第i层速度
反射系数:
R[i]=(z[i+1]-z[i]/(z[i+1]+z[i]
整理后反射系数表达式如下:
R[i]=(V[i+1]*D[i+1]-V[i]*D[i])/(V[i+1]*D[i+1]+V[i]*D[i])
实验选取选取Ricker(雷克)子波:
int Convolution(float f,float d,float h)
{
FILE *fpr,*fpw,*fpc;
int i,iao;
float w[100],w1[100],r[200],r1[50],Con[150];
if((fpw=fopen("Wave.text","r"))==NULL) printf("error");
当中间某层速度低于上下两高速层时,地震波在此层会发生顶底反射,当入射角大于临界角时,发生波导效应全反射。如下图:
6.结论
利用地震褶积模型可以正演地震记录。一般可以分为四个部分:第一部分是地震子波,第二是反射序列,第三是褶积过程,第四是一个地震道的记录。
地震褶积模型是简化了的反射纪录道线性模型,一般说来,她忽略了介质吸收,透射损失等诸多因素。
z[i]=(1-π*f*i*π*f*i)*exp(-(π*f*i)*(π*f*i));
2.思路方法
主导思想:地震记录道由振幅反射系数序列与子波的褶积构成
多层反射界面,在地面接收的反射波总和的一个地震到记录X(t)可表示为地层反射系数序列R[i]和地震子波z[i]的褶积(卷积)的结果,公式表示如下:
X(t)=
{
r[100+i]=r1[i];
}
for(i=0;i<200;i++)
printf("%f\n",r[i]);
for(i=0;i<150;i++)
{
Con[i]=0.;
for(iao=0;iao<100;iao++)
Con[i]=Con[i]+w[iao]*r[i+iao];
}
for(i=0;i<150;i++)
Re[c]=(float)(v[i+1]*p[i+1]-v[i]*p[i])/(v[i+1]*p[i+1]+v[i]*p[i]);
}
for(i=0;i<50;i++)
{
fprintf(fpr,"%f\n",Re[i]);
}
fclose(fpr);
return 1;
}
/**********褶积的计算*********/
int main()
{
float d=0.004,f=30.,h=50;//设定采样间隔频率厚度
if(Wave(f,d)!=1) printf("error");
if(Reflect(h,d)!=1) printf("error");
if(Convolution(f,d,h)!=1) printf("error");
int i,c=0;
float v[5]={800,1000,2000,900,2300};
float p[5]={2000,1600,2600,1800,3200};
float Re[50];
for(i=0;i<50;i++)
Re[i]=0;
for(i=0;i<4;i++)
{
c+=(int)(h/(v[i]*d));
}
for(i=0;i<100;i++)
{
fprintf(fpw,"%f\n",Wa[i]);
}
fclose(fpw);
return 1;
}
/*******反射序列的求取*******/
int Reflect(float h,float d)
{
FILE *fpr;
fpr=fopen("Rflct.text","w");
4.程序代码
# include<stdio.h>
# include<math.h>
# include<string.h>
# define pi 3.1416
int Wave(float,float );//定义子波
int Reflect(float,float);//定义反射系数
int Convolution(float,float,float );//定义合成记录
相关文档
最新文档