非线性方程
在水力学领域遇到的非线性方程的一个例子是通过长梯形通道寻找流动的法向深度 yny_nyn。 这样的流动深度出现在均匀流动区域,远离任何不均匀原因的影响,例如堰的上游。
法向深度 yny_nyn 可以通过求解以下方程获得:
Q=1nAR2/3S01/2Q=\frac{1}{n} A R^{2 / 3} S_{0}^{1 / 2} Q=n1AR2/3S01/2
浪涌高度和速度
非线性方程的另一种情况,也来自水利工程领域,是计算由于在其一端的流量突然增加或减少而在一维通道中发生的冲击波的高度。
图示了两种这样的情况,一种是由于下游端的流量减少,另一种是由于上游端的流量增加。 两幅图都描绘了所谓的正涌浪,即行波后面的水深大于其前面的水深。 第一种情况可能发生在水电运河中,其中控制进入涡轮机的水的下游闸门突然运行以减少排放。 另一个可能在水力发电机组的出口通道中,由于涡轮转轮的启动,排放量突然增加。 另一种类型的浪涌可能发生在带有闸门的通道中,该通道阻止了储备的水,而储备的水突然被撤回。 然后产生一个负浪涌,其中波浪向上传播的水流深度小于其前面的水深。
狭窄和凸起通道部分的水流深度
线性方程
在求解联立方程时通常会出现一组包含 n 个未知变量的 n 个方程。 下面介绍了这种“方程组”的一些代表性示例,这些示例取自水利工程和水文学领域,需要同时求解方程。
反应堆稳态分析系统
管网流量的稳态分布
单位水文的推导
Python求解上述方程
import numpy as np
import matplotlib.pylab as plt
b0 = 20.0
s = 2.0
s0 = 0.001
mn = 0.020
Q = 40
yinitial = 1.0
errorallow = 0.0001
def area(y):area=y*(b0+s*y)return area
def wetperi(depth):wetperi = b0+2*depth*np.sqrt(1+s*s)return wetperi
def hyrad(depth):hyrad = (b0+depth*s)*depth/(b0+2*depth*np.sqrt(1+s*s))return hyrad
def topwidth(depth):topwidth=b0+2*s*depthreturn topwidth
iter = 0
max_error = 1.0
yn = yinitial
while (max_error > errorallow):iter = iter+1Fyn = area(yn)**1.6667/wetperi(yn)**0.6667-mn*Q/
np.sqrt(s0)