主要内容gydF4y2Ba

求解部分微分方程gydF4y2Ba

这个例子通过使用符号数学工具箱™来求解微分方程来模拟海啸波现象。gydF4y2Ba

该模拟是一种简化的现象的可视化,并且基于粗糙和赖希仑[1]基于纸张。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 = depthratio * L;L2 = L;h1 = depthratio * H;h2 = H;h (x) = x * h / L;c1 = sqrt (g * h1);c2 = sqrt (g * h2);t u (x) = u (x) * exp(1我* 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);slopeODE (x) = wavePDE (x, 0);U (x) = dsolve (slopeODE);gydF4y2Ba

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

Const = setdiff(symvar(U), sym([depthratio,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);杜(x) = diff (U (x) x);= U(L1) = u1(L1,0), U(L2) = u2(L2,0),gydF4y2Ba...gydF4y2BadU(L1) == du1(L1), dU(L2) == du2(L2)];未知数= (Const(1)常量(2),R, T);gydF4y2Ba

解决这些方程。gydF4y2Ba

[Cvalue1, Cvalue2, R, T] =求解(eq, unknowns);gydF4y2Ba

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

U(x)=子(u(x),{const(1),const(2)},{cvalue1,cvalue2});gydF4y2Ba

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

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

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

简化(限制(R, w, 0))gydF4y2Ba
ans =gydF4y2Ba

-gydF4y2Ba depthratiogydF4y2Ba -gydF4y2Ba 1gydF4y2Ba depthratiogydF4y2Ba +gydF4y2Ba 1gydF4y2Ba -(根号(depthratio) - 1)/(根号(depthratio) + 1)gydF4y2Ba

简化(限制(T, w, 0))gydF4y2Ba
ans =gydF4y2Ba

2gydF4y2Ba depthratiogydF4y2Ba +gydF4y2Ba 1gydF4y2Ba 2 /(√(depthratio) + 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;Depthratio = 0.04;h1 = depthratio * H;h2 = H;L1 = depthratio * L;L2 = L;c1 = sqrt (g * h1);c2 = sqrt(g * h2);gydF4y2Ba

定义入射孤子的振幅gydF4y2Ba 一个gydF4y2Ba 以恒定的速度向左前往左侧gydF4y2Ba cgydF4y2Ba 2gydF4y2Ba 在深水区。gydF4y2Ba

a = 0.3;soliton = @(x,t)a。* sech(sqrt(3/4 * g * a / h)*(x / c2 + t))。^ 2;gydF4y2Ba

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

nt = 64;Timescale = 40 * SQRT(4/3 * H / A / G);w = [0,1:nt / 2  -  1, - (nt / 2  -  1): -  1]'* 2 * pi / timescale;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(年代,1,Nx);gydF4y2Ba

利用海中傅立叶数据,构造了深水区行波解gydF4y2Ba 年代gydF4y2Ba .gydF4y2Ba

孤子=实数(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)));if (ifft(S .* R .* exp(-1i*W*X2/c2));gydF4y2Ba

使用浅水区中传输波的相同方法。gydF4y2Ba

双(T =潜艇(潜艇(vpa(潜艇(T)), w w), x, X1));: T(1) =双(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) =双(2 / (1 + sqrt (depthratio)));= if (ifft(S .* U12)); if (ifft(S .* U12)) = if (ifft(S .* U12));gydF4y2Ba

情节的解决方案gydF4y2Ba

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

soliton = interpft(孤子,10 * nt);反射Wave = interpft(反射波,10 * nt);U12 = interpft(U12,10 * NT);传输Wave = Interpft(传输波,10 * NT);gydF4y2Ba

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

图(gydF4y2Ba“可见”gydF4y2Ba,gydF4y2Ba“上”gydF4y2Ba);情节([x_min, L1、L2 x_max], [h1, h1, h2, h2),gydF4y2Ba“颜色”gydF4y2Ba,gydF4y2Ba“黑”gydF4y2Ba)轴([x_min, x_max, -H-0.1, 0.6])保持gydF4y2Ba在gydF4y2Baline1 =情节(X1, transmittedWave (1:)gydF4y2Ba“颜色”gydF4y2Ba,gydF4y2Ba“蓝”gydF4y2Ba);line12 =情节(X12 U12 (1:)gydF4y2Ba“颜色”gydF4y2Ba,gydF4y2Ba“蓝”gydF4y2Ba);line2 = plot(X2,soliton(1,:)) + refltedwave (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

[1] Derek G. Gover和F.Raichlen,海啸 - 长浪到货架上的传播,水路,港口,沿海和海洋工程118(1),1992,PP。41 - 63。gydF4y2Ba

[2] H. Lamb,流体力学,多佛,1932。gydF4y2Ba