常用水文预报算法和计算程序VB版

 

Public Sub GETtnk(R() As Double, q() As Double, DT As Integer, N As Double, k As Double)

'根据入流和出流时间序列,用矩法算出本场洪水的纳须单位线参数 n 和 k

'R      净雨过程
'Q      R相应的出流过程
'DT     计算时段长

Dim MI1 As Double, MI2  As Double, MO1 As Double, MO2  As Double, NI2 As Double, NO2 As Double

Dim X1 As Double, X2 As Double, X3 As Double
Dim i As Integer, XM As Double

Dim NR As Integer, NQ As Integer

    NR = UBound(R())
    NQ = UBound(q)
   
    i = 0
    X1 = 0
    X2 = 0
    X3 = 0

    For i = 1 To NR
       
        X1 = X1 + R(i) * (2 * i - 1)
        X2 = X2 + R(i)
        X3 = X3 + R(i) * (2 * i - 1) ^ 2
        
    Next
    MI1 = X1 / X2 * DT / 2
    MI2 = X3 / X2 * DT * DT / 4
    X1 = 0
    X2 = 0
    X3 = 0
    For i = 1 To NQ - 1
        XM = (q(i) + q(i + 1)) / 2
        X1 = X1 + XM * (2 * i - 1)
        X2 = X2 + XM
        X3 = X3 + XM * (2 * i - 1) ^ 2

    Next
   
    MO1 = X1 / X2 * DT / 2
    MO2 = X3 / X2 * DT * DT / 4
    NI2 = MI2 - MI1 ^ 2
    NO2 = MO2 - MO1 ^ 2
    N = (MO1 - MI1) ^ 2 / (NO2 - NI2)
    k = (NO2 - NI2) / (MO1 - MI1)
    
End Sub

Public Sub CUNIT(N As Double, KK As Double, DT As Integer, UH() As Double, MAX As Integer, M As Integer)
'//时段单位线计算
   
   
    Dim IT As Double, TT As Double, ni As Double
    Dim JC As Double
    Dim X1 As Double, X2 As Double, UNIT As Double, WC As Double
   
   
    N = Int(N)
    UH(1) = 0
    IT = 2
    TT = DT
10  X1 = 0
    X2 = 0
   
    For i = 1 To N
        ni = N - 1
        JC = 1
        If ni = 0 Then GoTo 30
            For j = 1 To ni
               JC = JC * j
            Next
'        End If
30      X1 = ((TT + DT) / KK) ^ ni / JC + X1
        X2 = (TT / KK) ^ ni / JC + X2
       
    Next
    X1 = X1 * Exp(DT / KK)
    UH(IT) = Exp(-TT / KK) * (X1 - X2)
    If ((UH(IT) < UH(IT - 1) And UH(IT) < 0.0005)) Then
        M = IT - 1
        UNIT = 0
        For i = 1 To M
            UNIT = UNIT - UH(i)
        Next
        WC = UNIT - 1
        If Abs(WC) >= 0.0005 Then
            UH(M) = UH(M) - WC
            If (UH(M) < 0.0005) Then M = M - 1
        End If
       
    Else
        TT = TT + DT
        IT = IT + 1
        GoTo 10
    End If


End Sub 

'  模块名:InterpModule.bas
'  函数名:INLagrn
'  功能:  用拉格朗日插值公式进行一元全区间不等距插值
'  参数:  n     - Integer型变量,给定结点的点数
'          x     - Double型一维数组,长度为n,存放给定的n个结点的值x(i),要求x(1)<x(2)<...<x(n)
'          y     - Double型一维数组,长度为n,存放给定的n个结点的函数值y(i),y(i) = f(x(i)), i=1,2,...,n
'          t   - Double型变量,存放指定的插值点的值
'  返回值:Double型,指定的查指点t的函数近似值f(t)
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
水文预报领域,近年来涌现了一些新的模型和算法,以下是其中几个代表性的: 1. 数据驱动模型:数据驱动模型利用大量的观测数据和气象数据,结合机器学习算法进行建模和预测。例如,基于神经网络的模型如循环神经网络 (RNN)、长短期记忆网络 (LSTM) 和卷积神经网络 (CNN) 等,可以用于水文时间序列预测和洪水预报。 2. 物理模型与数据融合:物理模型与数据融合方法将物理过程模型与观测数据进行融合,提高预报的准确性和可靠性。这些方法可以通过卡尔曼滤波、粒子滤波等数据同化技术,将观测数据与物理模型进行优化融合。 3. 基于机器学习的降尺度方法:降尺度方法是将全局气候模式输出的气象变量转化为局部水文变量。最近,基于机器学习的降尺度方法如生成对抗网络 (GAN)、条件生成对抗网络 (cGAN) 和变分自编码器 (VAE) 等,能够从全局气候模式输出中生成高分辨率的气象数据,以提供更准确的输入数据给水文模型。 4. 稀疏建模方法:稀疏建模方法通过考虑水文过程中的稀疏性和非线性特征,提高模型的预测能力。例如,基于 L1 范数的稀疏回归方法可以自动选择重要的变量,减少冗余信息,提高水文预报的精度。 5. 模型集成方法:模型集成方法将多个不同模型的预测结果进行融合,以提高预报的准确性和鲁棒性。常见的集成方法包括模型平均、加权平均、堆叠模型等。 这些新的模型和算法不断推动水文预报领域的发展,提供了更准确、可靠和灵活的水文预报解决方案。未来,随着技术的进一步发展,还将涌现更多创新的模型和算法,以应对水文预报面临的挑战。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值