1、程序4:基于MISS软件的复杂模型的模拟一、 任务与要求画出雷克子波的图形二、 方法原理三、 程序设计(1) 程序代码#includemath.h#define PI 3.1415926#define Vm 20 /主频#define N 61 /采样点数#define dt 0.002 /采样间隔void leiker(float ); /声明采样雷克子波函数void main() FILE *fp; int i; float fN=0.0; /雷克子波采样值 leiker(f); /调用子函数 fp=fopen(201305060208.txt,w);/采样值写入文件 for(i=0;iN
2、;i+) fprintf(fp,%fn,fi); fclose(fp);/采样雷克子波函数void leiker(float f) i+) fi=(1-2*PI*PI*Vm*Vm*(i-30)*dt*(i-30)*dt)*exp(-PI*PI*Vm*Vm*(i-30)*dt*(i-30)*dt);/雷克子波表达式 (2) 计算实例一 任务与要求把雷克子波和反射系数进行褶积二 方法原理三程序设计1.程序代码#define Vm 20 void leiker(double );/声明雷克子波void con(double a,double b,double c,int M,int L) ;/声明褶
3、积函数/void main() double x100=0;/x反射系数,f表示子波; x50=1.0; double y100=0; /输出的褶积值; double f61=0.0; con(x,f,y,100,61); / 调用褶积/ for(i=30;131; printf(,yi); /输出y到屏幕/ fp=fopen(zheji.txt/输出褶积后的y值 /采样雷克子波函数/void leiker(double f) 61;/褶积的函数/void con(double a,double b,double c,int M,int L) /a代表反射系数,b代表子波,c代表褶积后的值,M
4、是a的个数,L是b的个数,N是c的个数 int i,j,N; N=M+L-1; double tp=0.0; for(j=0;j=0&(i-j)L) tp+=aj*bi-j; ci=tp; tp=0.0; 2计算实例二维褶积反射系数与二维的子波进行褶积二方法原理 把二维的转化为一维的数组在进行计算。1. 程序代码 int i,j,k,n; double Ref2d60100=0,Ref1d100=0,yk60160=0; double y160=0; float TEMP;60; Ref2di50=1.0;100;j+) Ref1dj=Ref2dij; /调用子函数/ con(Ref1d,f,
5、y,100,61);第%d道,i); n=i; for(k=0;k#define NX 128 /水平方向采样点#define NZ 128 /深度方向采样点 float LS; int IX,IZ; float VNZNX=0; FILE *fp,*fp1; double Ref2d128128=0,Ref1d128=0,yk128188=0; double y188=0; /*/ /读文本速度文件Model_V.txtr for(IZ=0;IZNZ;IZ+) for(IX=0;IXNX;IX+) fscanf(fp,&VIZIX); fp1=fopen(Model_R.txt for(IX=0; for(IZ=0; LS=float(VIZIX); fwrite(&LS,sizeof(float),1,fp1); fclose(fp1); /*/128; Ref2dij=Vij; con(Ref1d,f,y,128,61);188;ooooo.txt二进制文件 TEMP=ykji;2. 计算实例构建的模型:计算的结果:
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1