1.确认修课名单;2.作业在下周四前交齐,可以重新提交;3.考试时间:11月28日下午3:20-5:20;4.答疑地点:科研楼东侧403室5.考前布置一个大作业,不用提交。傅里叶伪谱法有限差分法:直接从微分方程出发,用差商代替微商,从而将微分方程直接转化为代数方程。有限元法:首先将微分方程转化为等效积分形式,应用变分原理或者加权余量法,从而将定解问题转化为代数方程。伪谱法是一种高效、高精度计算地震波动场的数值方法,它利用快速傅里叶变换对波动方程进行空间求导。对介质参数平滑变化的非均匀介质,最小波长所需要的节点数比有限差分法少,因此和有限差分法相比,它的计算精度高、计算速度快,很适合于大规模模型的计算。最初的伪谱法大多基于三角函数,随后出现了基于傅立叶函数、切比雪夫函数的伪谱法,发展出更有效的自由边界和吸收边界的处理方式。伪谱法是全局方法,只能用在空间域。如果所求解的是含时微分方程,一般用简单的有限差分方法来处理时间域的计算。傅里叶伪谱法将波场函数表示为傅里叶级数的展开形式,空间域的求导转化为波数域的乘积计算,时间域的求导用二阶差分格式给出。(Kosloffetal.,1984)在空间域,利用离散傅里叶变换求出位移对空间的导数。12/01()()()NinlNldfnxilkFlkedxNx考虑偏微分方程和边界条件:谱方法其中L和B分别为线性微分算子和边界微分算子。问题:求以上偏微分方程的数值解。答案:数值解是满足边界条件,同时使以下残差较小的函数如何度量残差的大小?=>加权余量法(MethodofWeightedResiduals:MWR):设PN是Hilbert空间的一个有限维子空间,在该空间内寻找取该子空间的一组基函数作为试探函数(trialfunctions):Hilbert空间:完备的内积空间,希尔伯特空间为基于任意正交系上的多项式表示的傅立叶级数和傅立叶变换提供了一种有效的表述方式,而这也是泛函分析的核心概念之一。一般把偏微分方程形式称为强形式(strongform),由于以上微分方程在U内每一点都成立,因此总可以找到权函数w,使得下式成立:上式称为偏微分方程的等效积分形式。对于数值解,由于存在残差:所以以上等效积分形式不能严格满足。由以上等效积分形式可以得到以残差表示的近似的等效积分形式:加权余量法是通过选择待定系数,强迫残差R在某种平均意义上等于零,残差的加权积分为零可得到一组方程,用来求解待定系数,进而得到原问题的近似解答。谱方法谱方法有限差分方法:试探函数为重叠的局部(local)低阶多项式。有限单元方法:试探函数为局部(local)光滑函数(固定阶数的多项式,只在U的子域内非零)。谱方法:试探函数为全局的(global)光滑函数(如:Fourier级数)。用配点法求解偏微分方程组Fourier伪谱方法连续傅里叶变换离散傅里叶变换快速Fourier变换(FastFouriertransform,FFT):例:乘积运算次数网格节点数全矩阵向量乘积FFT比值1D(nx=512)2.6x1059.2x10328.41D(nx=2096)4.4x1064.6x10494.981D(nx=8384)7.0x1072.2x105312.6全矩阵-向量相乘的运算次数与FFT运算次数的比值可以看作使用FFT时的加速比。李本文李本文functiondf=sderld(f,dx)%SDERLD(f,dx)spectralderivativeofvectornx=max(size(f));%initializekkmax=pi/dx;dk=kmax/(nx/2);fori=1:nx/2;k(i)=i*dk;k(nx/2+i)=-kmax+i*dk;endk=sqrt(-1)*k;%FFTandIFFTff=fft(f);ff=k.*ff;df=real(ifft(ff));clc;clear;figure('color','w');fori=1:100;t(i)=(i-1)*pi/100;f(i)=sin(2*t(i));endnx=max(size(f));%initializekdx=pi/100;kmax=pi/dx;dk=kmax/(nx/2);fori=1:nx/2;k(i)=i*dk;k(nx/2+i)=-kmax+i*dk;endk=sqrt(-1)*k;%FFTandIFFTdf=sderld(f,dx);plot(t,f,t,df);xlabel('time');ylabel('Signal');legend('f','df');00.511.522.533.5-2.5-2-1.5-1-0.500.511.52timeSignalfdf吴宝年等,2012吴宝年等,2012吴宝年等,2012一阶导数发生数值振荡,二阶导数没有发生数值振荡吴宝年等,2012吴宝年等,2012一阶导数没有发生数值振荡,二阶导数发生数值振荡采用交错网格计算一阶导数,采用中心网格计算二阶导数,该方法可以有效消除由于数值振荡产生的干扰伪波。吴宝年等,2012吴宝年等,201...