主要内容gydF4y2Ba

求解偏微分方程gydF4y2Ba

这个例子通过使用Symbolic Math Toolbox™求解微分方程来模拟海啸波现象。gydF4y2Ba

这个模拟是对这种现象的一个简化的可视化,是基于戈林和瑞奇伦的一篇论文。gydF4y2Ba

海啸模型的数学gydF4y2Ba

一个孤波(Korteweg-de Vries方程的一个孤波解)沿着一条深度恒定的运河以恒定的速度从右向左传播。这相当于海啸在深海中移动。在运河的左端,有一个类似大陆架的斜坡。到达斜坡后,孤波开始增加其高度。当水变得很浅时,大部分波浪被反射回运河。然而,在斜坡的末端出现了一个窄而高的水峰,并以减慢的速度沿着入射波的原始方向前进。这是最终袭击海岸的海啸,对海岸线造成了灾难性的破坏。接近海岸的波浪速度相对较小。海浪最终开始破裂。gydF4y2Ba

采用线性无色散水理论,高度gydF4y2Ba ugydF4y2Ba (gydF4y2Ba xgydF4y2Ba ,gydF4y2Ba tgydF4y2Ba )gydF4y2Ba 在不同深度的一维运河中,在未受扰动的水位以上的自由表面波gydF4y2Ba hgydF4y2Ba (gydF4y2Ba xgydF4y2Ba )gydF4y2Ba 是下式偏微分方程的解。(参见[2])。gydF4y2Ba

ugydF4y2Ba tgydF4y2Ba tgydF4y2Ba =gydF4y2Ba ggydF4y2Ba (gydF4y2Ba hgydF4y2Ba ugydF4y2Ba xgydF4y2Ba )gydF4y2Ba xgydF4y2Ba

在这个公式中,下标表示偏导数,和gydF4y2Ba ggydF4y2Ba =gydF4y2Ba 9gydF4y2Ba 。gydF4y2Ba 8gydF4y2Ba 1gydF4y2Ba 米gydF4y2Ba /gydF4y2Ba 年代gydF4y2Ba 2gydF4y2Ba 是重力加速度。gydF4y2Ba

考虑一个波浪穿过一个线性斜坡gydF4y2Ba hgydF4y2Ba (gydF4y2Ba xgydF4y2Ba )gydF4y2Ba 从一个深度恒定的区域gydF4y2Ba hgydF4y2Ba 2gydF4y2Ba 到一个深度恒定的区域gydF4y2Ba hgydF4y2Ba 1gydF4y2Ba ≪gydF4y2Ba hgydF4y2Ba 2gydF4y2Ba 。关于的傅里叶变换gydF4y2Ba tgydF4y2Ba 将水波偏微分方程转化为傅里叶模态的常微分方程gydF4y2Ba ugydF4y2Ba (gydF4y2Ba xgydF4y2Ba ,gydF4y2Ba tgydF4y2Ba )gydF4y2Ba =gydF4y2Ba UgydF4y2Ba (gydF4y2Ba xgydF4y2Ba ,gydF4y2Ba ωgydF4y2Ba )gydF4y2Ba egydF4y2Ba 我gydF4y2Ba ωgydF4y2Ba tgydF4y2Ba 。gydF4y2Ba

-gydF4y2Ba ωgydF4y2Ba 2gydF4y2Ba UgydF4y2Ba =gydF4y2Ba ggydF4y2Ba (gydF4y2Ba hgydF4y2Ba UgydF4y2Ba xgydF4y2Ba )gydF4y2Ba xgydF4y2Ba

对于深度恒定的区域gydF4y2Ba hgydF4y2Ba ,傅里叶模式是沿相反方向匀速传播的行波gydF4y2Ba cgydF4y2Ba =gydF4y2Ba ggydF4y2Ba hgydF4y2Ba 。gydF4y2Ba

ugydF4y2Ba (gydF4y2Ba xgydF4y2Ba ,gydF4y2Ba tgydF4y2Ba )gydF4y2Ba =gydF4y2Ba CgydF4y2Ba 1gydF4y2Ba (gydF4y2Ba ωgydF4y2Ba )gydF4y2Ba egydF4y2Ba 我gydF4y2Ba ωgydF4y2Ba (gydF4y2Ba tgydF4y2Ba +gydF4y2Ba xgydF4y2Ba /gydF4y2Ba cgydF4y2Ba )gydF4y2Ba +gydF4y2Ba CgydF4y2Ba 2gydF4y2Ba (gydF4y2Ba ωgydF4y2Ba )gydF4y2Ba egydF4y2Ba 我gydF4y2Ba ωgydF4y2Ba (gydF4y2Ba tgydF4y2Ba -gydF4y2Ba xgydF4y2Ba /gydF4y2Ba cgydF4y2Ba )gydF4y2Ba

解决方案gydF4y2Ba ugydF4y2Ba 2gydF4y2Ba (gydF4y2Ba xgydF4y2Ba ,gydF4y2Ba tgydF4y2Ba )gydF4y2Ba =gydF4y2Ba egydF4y2Ba 我gydF4y2Ba ωgydF4y2Ba (gydF4y2Ba tgydF4y2Ba +gydF4y2Ba xgydF4y2Ba /gydF4y2Ba cgydF4y2Ba 2gydF4y2Ba )gydF4y2Ba +gydF4y2Ba RgydF4y2Ba (gydF4y2Ba ωgydF4y2Ba )gydF4y2Ba egydF4y2Ba 我gydF4y2Ba ωgydF4y2Ba (gydF4y2Ba tgydF4y2Ba -gydF4y2Ba xgydF4y2Ba /gydF4y2Ba cgydF4y2Ba 2gydF4y2Ba )gydF4y2Ba 对于深水区是两个波的叠加:gydF4y2Ba

  • 匀速向左移动的波gydF4y2Ba cgydF4y2Ba 2gydF4y2Ba =gydF4y2Ba ggydF4y2Ba hgydF4y2Ba 2gydF4y2Ba

  • 向右传播的波,其振幅由与频率相关的反射系数给出gydF4y2Ba RgydF4y2Ba (gydF4y2Ba ωgydF4y2Ba )gydF4y2Ba

这个选择gydF4y2Ba ugydF4y2Ba 2gydF4y2Ba 满足深水区的波动方程gydF4y2Ba RgydF4y2Ba (gydF4y2Ba ωgydF4y2Ba )gydF4y2Ba 。gydF4y2Ba

解决方案gydF4y2Ba ugydF4y2Ba 1gydF4y2Ba (gydF4y2Ba xgydF4y2Ba ,gydF4y2Ba tgydF4y2Ba )gydF4y2Ba =gydF4y2Ba TgydF4y2Ba (gydF4y2Ba ωgydF4y2Ba )gydF4y2Ba egydF4y2Ba 我gydF4y2Ba ωgydF4y2Ba (gydF4y2Ba tgydF4y2Ba +gydF4y2Ba xgydF4y2Ba /gydF4y2Ba cgydF4y2Ba 1gydF4y2Ba )gydF4y2Ba 对于浅水区,是一种以恒定速度向左传播的透射波gydF4y2Ba cgydF4y2Ba 1gydF4y2Ba =gydF4y2Ba ggydF4y2Ba hgydF4y2Ba 1gydF4y2Ba 。这个选择gydF4y2Ba ugydF4y2Ba 1gydF4y2Ba 对于任意透射系数,均满足浅水区波动方程gydF4y2Ba TgydF4y2Ba (gydF4y2Ba ωgydF4y2Ba )gydF4y2Ba 。gydF4y2Ba

对于过渡区域(斜率),使用gydF4y2Ba ugydF4y2Ba (gydF4y2Ba xgydF4y2Ba ,gydF4y2Ba tgydF4y2Ba )gydF4y2Ba =gydF4y2Ba UgydF4y2Ba (gydF4y2Ba xgydF4y2Ba ,gydF4y2Ba wgydF4y2Ba )gydF4y2Ba egydF4y2Ba 我gydF4y2Ba ωgydF4y2Ba tgydF4y2Ba 。gydF4y2Ba

符号数学工具箱中海啸模型的参数万博 尤文图斯和解gydF4y2Ba

定义海啸模型的参数如下。忽略对频率的依赖gydF4y2Ba ωgydF4y2Ba 在以下注释中:gydF4y2Ba RgydF4y2Ba =gydF4y2Ba RgydF4y2Ba (gydF4y2Ba ωgydF4y2Ba )gydF4y2Ba ,gydF4y2Ba TgydF4y2Ba =gydF4y2Ba TgydF4y2Ba (gydF4y2Ba ωgydF4y2Ba )gydF4y2Ba ,gydF4y2Ba UgydF4y2Ba (gydF4y2Ba xgydF4y2Ba )gydF4y2Ba =gydF4y2Ba UgydF4y2Ba (gydF4y2Ba xgydF4y2Ba ,gydF4y2Ba ωgydF4y2Ba )gydF4y2Ba 。gydF4y2Ba

信谊gydF4y2BalgydF4y2BaHgydF4y2BadepthratiogydF4y2BaggydF4y2Ba积极的gydF4y2Ba信谊gydF4y2BaxgydF4y2BatgydF4y2BawgydF4y2BaTgydF4y2BaRgydF4y2BaU (x)gydF4y2BaL1 =深度*L;L2 = l;h1 =深度*H;h2 = H;h(x) = x* h /L;C1 = sqrt(g*h1);C2 = sqrt(g*h2);u(x,t) = u(x)*exp(1i*w*t);u1(x,t) = t *exp(1i*w*(t + x/c1));u2 (x, t) = exp(1我* w * (t + x / c2)) + R * exp(我* w * (t - x / c2));gydF4y2Ba

在过渡区域的线性斜率,使用gydF4y2BadsolvegydF4y2Ba来解傅里叶变换的ODEgydF4y2Ba UgydF4y2Ba 的gydF4y2Ba ugydF4y2Ba 。gydF4y2Ba

wavePDE (x, t) = diff (u, t, t) - g * diff (h (x) * diff (u, x), x);slopede (x) = wavePDE(x,0);U(x) = dsolve(slopeODE);gydF4y2Ba

解决方案gydF4y2Ba UgydF4y2Ba 是一个涉及贝塞尔函数的复杂表达式。它包含两个依赖于的任意“常数”gydF4y2Ba ωgydF4y2Ba 。gydF4y2Ba

Const = setdiff(syvar (U), sym([depth,g,H,L,x,w]))gydF4y2Ba
Const =gydF4y2Ba
                 
                  
                   
                    
                     
                      (gydF4y2Ba
                     
                      
                       
                        
                         
                          
                           
                            CgydF4y2Ba
                          
                          
                           
                            1gydF4y2Ba
                          
                         
                        
                       
                       
                        
                         
                          
                           
                            CgydF4y2Ba
                          
                          
                           
                            2gydF4y2Ba
                          
                         
                        
                       
                      
                     
                     
                      )gydF4y2Ba
                    
                   
                   
                    (C1, C2)gydF4y2Ba
                  
                 

对于任何傅里叶模式,整体解必须是连续可微的函数gydF4y2Ba xgydF4y2Ba 。因此,函数值和导数必须在接缝点处匹配gydF4y2Ba lgydF4y2Ba 1gydF4y2Ba 和gydF4y2Ba lgydF4y2Ba 2gydF4y2Ba 。这提供了四个线性方程gydF4y2Ba TgydF4y2Ba ,gydF4y2Ba RgydF4y2Ba 的两个常数gydF4y2Ba UgydF4y2Ba 。gydF4y2Ba

Du1 (x) = diff(u1(x,0),x)Du2 (x) = diff(u2(x,0),x);dU(x) = diff(U(x),x);eqs = [U(L1) == u1(L1,0), U(L2) == u2(L2,0),gydF4y2Ba…gydF4y2BadU(L1) == du1(L1), dU(L2) == du2(L2)];未知= [Const(1),Const(2),R,T];gydF4y2Ba

解这些方程。gydF4y2Ba

[Cvalue1, Cvalue2, R, T] = solve(eqs, unknowns);gydF4y2Ba

将结果代回gydF4y2Ba RgydF4y2Ba ,gydF4y2Ba TgydF4y2Ba ,gydF4y2Ba UgydF4y2Ba 。gydF4y2Ba

U (x) =潜艇(U (x){常量(1)常量(2)},{Cvalue1, Cvalue2});gydF4y2Ba

你不能直接求解gydF4y2Ba ωgydF4y2Ba =gydF4y2Ba 0gydF4y2Ba 因为相应表达式的分子和分母都消失了。相反,找出这些表达式的低频极限。gydF4y2Ba

简化(limit(U(x), w, 0))gydF4y2Ba
ans =gydF4y2Ba

2gydF4y2Ba depthratiogydF4y2Ba +gydF4y2Ba 1gydF4y2Ba 2/(√(depth) + 1)gydF4y2Ba

简化(limit(R, w, 0))gydF4y2Ba
ans =gydF4y2Ba

-gydF4y2Ba depthratiogydF4y2Ba -gydF4y2Ba 1gydF4y2Ba depthratiogydF4y2Ba +gydF4y2Ba 1gydF4y2Ba -(sqrt(depthratio) - 1)/(sqrt(depthratio) + 1)gydF4y2Ba

简化(limit(T, w, 0))gydF4y2Ba
ans =gydF4y2Ba

2gydF4y2Ba depthratiogydF4y2Ba +gydF4y2Ba 1gydF4y2Ba 2/(√(depth) + 1)gydF4y2Ba

这些限制非常简单。它们只依赖于定义斜率的深度值之比。gydF4y2Ba

用数值代替符号参数gydF4y2Ba

对于下面的计算,使用这些数值作为符号参数。gydF4y2Ba

  • 重力加速度:gydF4y2Ba ggydF4y2Ba =gydF4y2Ba 9gydF4y2Ba 。gydF4y2Ba 8gydF4y2Ba 1gydF4y2Ba 米gydF4y2Ba /gydF4y2Ba 年代gydF4y2Ba egydF4y2Ba cgydF4y2Ba 2gydF4y2Ba

  • 运河的深度:gydF4y2Ba HgydF4y2Ba =gydF4y2Ba 1gydF4y2Ba 米gydF4y2Ba

  • 浅区与深区深度比:gydF4y2Ba dgydF4y2Ba egydF4y2Ba pgydF4y2Ba tgydF4y2Ba hgydF4y2Ba rgydF4y2Ba 一个gydF4y2Ba tgydF4y2Ba 我gydF4y2Ba ogydF4y2Ba =gydF4y2Ba 0gydF4y2Ba 。gydF4y2Ba 0gydF4y2Ba 4gydF4y2Ba

  • 坡度区长度:gydF4y2Ba lgydF4y2Ba =gydF4y2Ba 2gydF4y2Ba 米gydF4y2Ba

G = 9.81;L = 2;H = 1;深度= 0.04;h1 =深度*H;h2 = H;L1 =深度*L;L2 = l;C1 = sqrt(g*h1);C2 = sqrt(g*h2);gydF4y2Ba

定义入射孤子的振幅gydF4y2Ba 一个gydF4y2Ba 匀速向左移动gydF4y2Ba cgydF4y2Ba 2gydF4y2Ba 在深水区。gydF4y2Ba

A = 0.3;孤子= @ (x, t) A *双曲正割(sqrt (3/4 * g * / H) * (x / c2 + t)) ^ 2;gydF4y2Ba

选择gydF4y2Ba NgydF4y2Ba tgydF4y2Ba 的样本点gydF4y2Ba tgydF4y2Ba 。时间尺度选择为入射孤子(时间)宽度的倍数。将傅里叶变换的相应离散频率存储在gydF4y2Ba WgydF4y2Ba 。gydF4y2Ba

Nt = 64;时间尺度= 40*sqrt(4/3*H/A/g);W =[0, 1:元/ 2 - 1,-(元/ 2 - 1):1]“* 2 *π/时间表;gydF4y2Ba

选择gydF4y2Ba NgydF4y2Ba xgydF4y2Ba 样本点gydF4y2Ba xgydF4y2Ba 每个区域的方向。创建样本点gydF4y2Ba XgydF4y2Ba 1gydF4y2Ba 在浅水区,gydF4y2Ba XgydF4y2Ba 2gydF4y2Ba 对于深水区,和gydF4y2Ba XgydF4y2Ba 1gydF4y2Ba 2gydF4y2Ba 对于斜率区域。gydF4y2Ba

Nx = 100;x_min = L1 - 4;x_max = L2 + 12;X12 = linspace(L1, L2, Nx);X1 = linspace(x_min, L1, Nx);X2 = linspace(L2, x_max, Nx);gydF4y2Ba

计算输入孤子在时间网格上的傅里叶变换gydF4y2Ba NgydF4y2Ba tgydF4y2Ba 等距样本点。gydF4y2Ba

S = fft(soliton(-0.8*TimeScale*c2, linspace(0,TimeScale,2*(Nt/2)-1)))';S = repmat(S,1,Nx);gydF4y2Ba

基于傅里叶数据构造深水区行波解gydF4y2Ba 年代gydF4y2Ba 。gydF4y2Ba

soliton = real(ifft(S .* exp(1i*W*X2/c2));gydF4y2Ba

将深水区反射波的傅里叶模式转换为网格上的数值gydF4y2Ba (gydF4y2Ba xgydF4y2Ba ,gydF4y2Ba ωgydF4y2Ba )gydF4y2Ba 空间。把这些值和傅里叶系数相乘gydF4y2Ba 年代gydF4y2Ba 然后使用函数gydF4y2Ba传输线gydF4y2Ba来计算反射波gydF4y2Ba (gydF4y2Ba xgydF4y2Ba ,gydF4y2Ba tgydF4y2Ba )gydF4y2Ba 空间。注意,第一行是数字数据gydF4y2Ba RgydF4y2Ba 由NaN值组成,因为对符号数据进行了适当的数值计算gydF4y2Ba RgydF4y2Ba 为gydF4y2Ba ωgydF4y2Ba =gydF4y2Ba 0gydF4y2Ba 是不可能的。的第一行中的值gydF4y2Ba RgydF4y2Ba 作为低频极限。gydF4y2Ba

双(R =潜艇(潜艇(vpa(潜艇(R)), w w), x, X2));R(1) =双((1-sqrt (depthratio)) / (1 + sqrt (depthratio)));reflectedWave = real(ifft(S .* R .* exp(-1i*W*X2/c2));gydF4y2Ba

对浅水区域的透射波采用同样的方法。gydF4y2Ba

T = double(s (s (vpa(s (T)),w, w),x,X1));T(1,:) = double(2/(1+sqrt(depthratio));transmittedWave = real(ifft(S .* T .* exp(1i*W*X1/c1));gydF4y2Ba

同样,对斜率区域使用这种方法。gydF4y2Ba

U12 =双(潜艇(潜艇(vpa(潜艇(U (x))), w w), x, X12));U12(1,:) = double(2/(1+sqrt(depthratio));U12 = real(S .* U12);gydF4y2Ba

绘制解决方案gydF4y2Ba

为了获得更流畅的动画,可以使用三角插值沿着图数据的列生成额外的样本点。gydF4y2Ba

soliton = interpft(soliton, 10*Nt);reflectedWave = interpft(reflectedWave, 10*Nt);U12 = interpft(U12, 10*Nt);transmittedWave = interpft(transmittedWave, 10*Nt);gydF4y2Ba

创建一个显示在单独图形窗口中的解决方案的动画情节。gydF4y2Ba

图(gydF4y2Ba“可见”gydF4y2Ba,gydF4y2Ba“上”gydF4y2Ba);情节([x_min, L1、L2 x_max], [h1, h1, h2, h2),gydF4y2Ba“颜色”gydF4y2Ba,gydF4y2Ba“黑”gydF4y2Ba) axis([x_min, x_max, -H-0.1, 0.6]) holdgydF4y2Ba在gydF4y2Baline1 = plot(X1,transmittedWave(1,:),gydF4y2Ba“颜色”gydF4y2Ba,gydF4y2Ba“蓝”gydF4y2Ba);line12 = plot(X12,U12(1,:),gydF4y2Ba“颜色”gydF4y2Ba,gydF4y2Ba“蓝”gydF4y2Ba);line2 = plot(X2,soliton(1,:) + reflectedWave(1,:),gydF4y2Ba“颜色”gydF4y2Ba,gydF4y2Ba“蓝”gydF4y2Ba);gydF4y2Ba为gydF4y2BaT = 2: size(soliton, 1)*0.35 line1。YData = transmittedWave(t,:);line12。YData = U12(t,:);么。YData = soliton(t,:) + reflectedWave(t,:);暂停(0.1)gydF4y2Ba结束gydF4y2Ba

图中包含一个轴。轴包含4个类型为线的对象。gydF4y2Ba

更多关于海啸的知识gydF4y2Ba

在现实生活中,海啸的波长为数百公里,通常以每小时500公里以上的速度移动。(请注意,海洋的平均深度约为4公里,对应于速度gydF4y2Ba ggydF4y2Ba hgydF4y2Ba ≈gydF4y2Ba 7gydF4y2Ba 0gydF4y2Ba 0gydF4y2Ba kgydF4y2Ba 米gydF4y2Ba /gydF4y2Ba hgydF4y2Ba ogydF4y2Ba ugydF4y2Ba rgydF4y2Ba )。在深海上空,振幅相当小,通常在0.5米左右或更小。然而,当海啸向大陆架传播时,其高度会急剧增加:据报道,其振幅可达30米以上。gydF4y2Ba

一个有趣的现象是,虽然海啸通常以垂直于其行进方向延伸数百公里的波阵接近海岸线,但它们并不沿海岸造成均匀的破坏。在某些地方,它们会造成灾难,而在其他地方只观察到中度波浪现象。这是由于从海床到大陆架的坡度不同造成的。事实上,非常陡峭的斜坡会使大部分海啸反射回深水区域,而小斜坡反射的波浪较少,传输的是一个狭窄但高的波浪,携带着很多能量。gydF4y2Ba

运行不同值的模拟gydF4y2Ba lgydF4y2Ba ,对应不同的斜率。坡度越陡,传播的波就越低、越弱。gydF4y2Ba

注意,这个模型忽略了分散和摩擦效应。在架子上,模拟失去了它的物理意义。在这里,摩擦效应很重要,它会导致波浪的破裂。gydF4y2Ba

参考文献gydF4y2Ba

[10]刘志强,陆架上海啸长波传播的研究,海洋工程学报,2002,第1期,第1 - 6页。gydF4y2Ba

H.兰姆,流体力学,多佛,1932。gydF4y2Ba