一、问题描述
Stokes五阶波是一种描述水波传播的数学模型,可以用来研究海洋、湖泊等自由表面的波浪特性。该模型考虑了表面张力和重力对波浪的影响,是一种比较精确的波浪模型。在使用Stokes波计算波浪水质点的波面、速度、加速度、波压等参数时,需要首先求解关于波长
L
L
L与系数
λ
\lambda
λ的超越方程组:
{
λ
=
π
H
/
{
L
[
1
+
λ
2
B
33
+
λ
4
(
B
35
+
B
55
)
]
}
L
=
L
0
t
a
n
h
(
k
d
)
[
1
+
λ
2
C
1
+
λ
4
C
2
]
\begin{cases} \begin{align} \lambda=\pi H/\{L[1+\lambda^2B_{33}+\lambda^4(B_{35}+B_{55})]\} \\ L = L_0tanh(kd)[1+\lambda^2C_1+\lambda^4C_2] \end{align} \end{cases}
{λ=πH/{L[1+λ2B33+λ4(B35+B55)]}L=L0tanh(kd)[1+λ2C1+λ4C2]
二、算法描述&步骤
对超越方程组采用迭代方式进行,步骤如下:
【1】给定初值
λ
0
,
L
0
\lambda_0,L_0
λ0,L0,计算波数
k
k
k,系数
C
1
,
C
2
C_1,C_2
C1,C2,带入
(
2
)
(2)
(2)求解
L
1
L_1
L1,将
L
1
L_1
L1带入
(
1
)
(1)
(1)求解
λ
1
\lambda_1
λ1;
【2】将
λ
1
,
L
1
\lambda_1,L_1
λ1,L1作为新的
λ
0
,
L
0
\lambda_0,L_0
λ0,L0进行迭代,直到
(
λ
1
−
λ
0
)
2
+
(
L
1
−
L
0
)
2
<
t
o
l
\sqrt {(\lambda_1-\lambda_0)^2+(L_1-L_0)^2<tol}
(λ1−λ0)2+(L1−L0)2<tol。
三、Matlab代码
% 部分代码展示------------------------
% 非线性波浪理论-Stokes波超越方程参数求解
clear,clc,close all
% lambda1和L1为最终求解参数
%% 参数
lambda0 = 0.2;
H = 4.91;
T = 11;
d = 16;
g = 9.8;
L0 = g*T^2/(2*pi);
k = 2*pi/L0;
c1 = cosh(k*d);
s = sinh(k*d);