2024 年 数维杯(C题)大学生数学建模挑战赛 | 天然气水合物资源 | 数学建模完整代码+建模过程全解全析

news2024/11/26 21:49:54

当大家面临着复杂的数学建模问题时,你是否曾经感到茫然无措?作为2022年美国大学生数学建模比赛的O奖得主,我为大家提供了一套优秀的解题思路,让你轻松应对各种难题。

CS团队倾注了大量时间和心血,深入挖掘解决方案。通过偏微分方程,多元目标规划等算法,设计了明晰的项目,团队努力体现在每个步骤,确保方案既创新又可行,为大家提供了全面而深入的洞见噢~

让我们来看看数维杯 (C题)

完整内容可以在文章末尾领取!

在这里插入图片描述

根据勘探数据确定天然气水合物资源的分布范围。

假设勘探区域内的天然气水合物资源分布为均匀分布,即每个点的资源量Q服从均值为μ、方差为σ的正态分布。根据勘探数据,可以得到14个点的坐标(x,y),表示14个钻孔的位置。

假设勘探区域的边界为一个矩形,左下角坐标为(0,0),右上角坐标为(l,w),其中l为矩形的长度,w为矩形的宽度。

根据题目中给出的公式可知,天然气水合物资源量Q与有效面积A、有效厚度Z、孔隙度φ、水合物饱和度S、产气量因子E相关。

假设每个钻孔位置的有效面积为A0,有效厚度为Z0,孔隙度为φ0,水合物饱和度为S0,产气量因子为E0,可以将天然气水合物资源量Q表示为:

Q = A 0 × Z 0 × φ 0 × S 0 × E 0 Q = A_0 × Z_0 × φ_0 × S_0 × E_0 Q=A0×Z0×φ0×S0×E0

根据题目中给出的勘探数据,我们可以得到14个钻孔的有效面积、有效厚度、孔隙度、水合物饱和度和产气量因子的平均值和方差,分别为μA、μZ、μφ、μS、μE和σA、σZ、σφ、σS、σE。

因此,钻孔位置(x,y)处的天然气水合物资源量Q(x,y)可以表示为:

Q ( x , y ) = A 0 ( x , y ) × Z 0 ( x , y ) × φ 0 ( x , y ) × S 0 ( x , y ) × E 0 ( x , y ) Q(x,y) = A_0(x,y) × Z_0(x,y) × φ_0(x,y) × S_0(x,y) × E_0(x,y) Q(x,y)=A0(x,y)×Z0(x,y)×φ0(x,y)×S0(x,y)×E0(x,y)

其中,

A 0 ( x , y ) = μ A + σ A n ξ A A_0(x,y) = \mu_A + \frac{\sigma_A}{\sqrt{n}}ξ_A A0(x,y)=μA+n σAξA

Z 0 ( x , y ) = μ Z + σ Z n ξ Z Z_0(x,y) = \mu_Z + \frac{\sigma_Z}{\sqrt{n}}ξ_Z Z0(x,y)=μZ+n σZξZ

φ 0 ( x , y ) = μ φ + σ φ n ξ φ φ_0(x,y) = \mu_φ + \frac{\sigma_φ}{\sqrt{n}}ξ_φ φ0(x,y)=μφ+n σφξφ

S 0 ( x , y ) = μ S + σ S n ξ S S_0(x,y) = \mu_S + \frac{\sigma_S}{\sqrt{n}}ξ_S S0(x,y)=μS+n σSξS

E 0 ( x , y ) = μ E + σ E n ξ E E_0(x,y) = \mu_E + \frac{\sigma_E}{\sqrt{n}}ξ_E E0(x,y)=μE+n σEξE

其中,n为14,表示钻孔的数量,ξ为服从标准正态分布的随机数。

根据题目要求,我们需要确定天然气水合物资源的分布范围,即需要确定使得Q(x,y)大于某个阈值的所有(x,y)的范围。

假设阈值为T,即Q(x,y) > T,可以得到:

A 0 ( x , y ) × Z 0 ( x , y ) × φ 0 ( x , y ) × S 0 ( x , y ) × E 0 ( x , y ) > T A_0(x,y) × Z_0(x,y) × φ_0(x,y) × S_0(x,y) × E_0(x,y) > T A0(x,y)×Z0(x,y)×φ0(x,y)×S0(x,y)×E0(x,y)>T

化简得:

T A 0 ( x , y ) × Z 0 ( x , y ) × φ 0 ( x , y ) × E 0 ( x , y ) < S 0 ( x , y ) \frac{T}{A_0(x,y) × Z_0(x,y) × φ_0(x,y) × E_0(x,y)} < S_0(x,y) A0(x,y)×Z0(x,y)×φ0(x,y)×E0(x,y)T<S0(x,y)

因此,可以得到天然气水合物资源的分布范围为:

{ ( x , y ) ∣ T A 0 ( x , y ) × Z 0 ( x , y ) × φ 0 ( x , y ) × E 0 ( x , y ) < S 0 ( x , y ) } \{(x,y) | \frac{T}{A_0(x,y) × Z_0(x,y) × φ_0(x,y) × E_0(x,y)} < S_0(x,y)\} {(x,y)A0(x,y)×Z0(x,y)×φ0(x,y)×E0(x,y)T<S0(x,y)}

即所有满足条件的(x,y)点的集合。

根据给定的勘探数据,我们可以利用地质勘探常用的插值方法,如克里金插值、反距离加权插值等,来确定天然气水合物资源的分布范围。这些方法可以通过计算勘探点周围的参数值,来估计未知点的参数值,从而绘制出资源的等值线图。另外,我们也可以通过概率分布图来观察资源的分布范围,一般来说,资源的储量会随着深度的增加而增加,因此在等深度的情况下,资源的概率分布图应该是一个向下凹的形状。

根据附件勘探井位信息,天然气水合物资源分布范围可以通过插值方法确定。假设勘探区域内的天然气水合物资源储量分布是均匀的,可以使用Kriging插值方法来估计其分布范围。

Kriging插值方法是一种常用的空间插值方法,它基于空间数据的自相关性,在空间上进行加权平均来估计未知位置的值。根据勘探井位信息,可以得到每个井位的坐标和相应的天然气水合物资源储量。假设每个井位的资源储量为 Q i Q_i Qi,坐标为 ( x i , y i ) (x_i,y_i) (xi,yi),其中 i = 1 , 2 , . . . , 14 i = 1,2,...,14 i=1,2,...,14,则可以建立如下半方差函数:

γ ( h ) = 1 2 N ( h ) ∑ i = 1 14 ( Q i − Q i + h ) 2 \gamma (h) = \frac{1}{2N(h)}\sum_{i=1}^{14}(Q_i - Q_{i+h})^2 γ(h)=2N(h)1i=114(QiQi+h)2

其中, h h h为两个井位之间的距离, Q i + h Q_{i+h} Qi+h表示间隔为 h h h的井位的资源储量。 N ( h ) N(h) N(h)为满足间隔为 h h h的井位对的个数。假设半方差函数满足高斯模型,即 γ ( h ) = σ 2 [ 1 − exp ⁡ ( − 3 h a ) ] \gamma(h) = \sigma^2 [1 - \exp(-\frac{3h}{a})] γ(h)=σ2[1exp(a3h)],其中 σ 2 \sigma^2 σ2为方差, a a a为相关长度。则可以得到如下Kriging方程:

∑ i = 1 14 λ i γ ( d i j ) = Q j − ∑ i = 1 14 λ i γ ( d i j ) \sum_{i=1}^{14}\lambda_i\gamma (d_{ij}) = Q_j - \sum_{i=1}^{14}\lambda_i\gamma (d_{ij}) i=114λiγ(dij)=Qji=114λiγ(dij)

其中, λ i \lambda_i λi为权重, d i j d_{ij} dij为第 i i i个井位和第 j j j个井位之间的距离。将所有的 Q i Q_i Qi d i j d_{ij} dij代入上式,可以得到一个线性方程组,从而求解出未知位置的资源储量,即可以确定天然气水合物资源的分布范围。

具体的求解过程可以参考文献[1]中的方法。通过Kriging插值方法,可以得到勘探区域内天然气水合物资源储量的概率分布,从而确定其分布范围。
在这里插入图片描述

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# 读取勘探数据
data = pd.read_excel('勘探数据.xlsx')

# 筛选出含有天然气水合物的井位数据
gas_hydrate_data = data[data['天然气水合物饱和度']>0]

# 绘制勘探井位分布图
plt.scatter(data['经度'], data['纬度'], s=10, c='b', label='勘探井位')
plt.scatter(gas_hydrate_data['经度'], gas_hydrate_data['纬度'], s=50, c='r', label='含水合物的井位')
plt.xlabel('经度')
plt.ylabel('纬度')
plt.legend()
plt.show()

# 根据勘探井位数据确定水合物资源分布范围
min_lng = data['经度'].min()
max_lng = data['经度'].max()
min_lat = data['纬度'].min()
max_lat = data['纬度'].max()

print('天然气水合物资源范围为:')
print('经度范围:{} ~ {}'.format(min_lng, max_lng))
print('纬度范围:{} ~ {}'.format(min_lat, max_lat))

第二个问题是确定研究区域内天然气水合物资源参数有效厚度、地层孔隙度和饱和度的概率分布及其在勘探区域内的变化规律。

假设研究区域内天然气水合物资源参数有效厚度、地层孔隙度和饱和度的概率分布分别为 H , ϕ , S H, \phi, S H,ϕ,S,并且它们之间相互独立,那么可以用以下公式来表示在给定深度 z z z的情况下,天然气水合物资源的概率分布 P ( Q ∣ z ) P(Q|z) P(Qz)
P ( Q ∣ z ) = P ( H ∣ z ) × P ( ϕ ∣ z ) × P ( S ∣ z ) P(Q|z) = P(H|z) \times P(\phi|z) \times P(S|z) P(Qz)=P(Hz)×P(ϕz)×P(Sz)
其中 P ( H ∣ z ) P(H|z) P(Hz)为在给定深度 z z z时,有效厚度为 H H H的概率分布, P ( ϕ ∣ z ) P(\phi|z) P(ϕz)为在给定深度 z z z时,地层孔隙度为 ϕ \phi ϕ的概率分布, P ( S ∣ z ) P(S|z) P(Sz)为在给定深度 z z z时,水合物饱和度为 S S S的概率分布。

为了确定在整个勘探区域内的变化规律,可以将以上公式进行积分求和,得到整个勘探区域内天然气水合物资源的概率分布 P ( Q ) P(Q) P(Q)
P ( Q ) = ∫ 0 z m a x P ( Q ∣ z ) d z P(Q) = \int_{0}^{z_{max}} P(Q|z) dz P(Q)=0zmaxP(Qz)dz
其中 z m a x z_{max} zmax为勘探区域的最大深度。

为了更精确地估计天然气水合物资源量,可以将整个勘探区域分为多个小区域,对每个小区域内的天然气水合物资源量进行估计,然后将所有小区域内的资源量相加,得到整个勘探区域内的总资源量估计值。假设将勘探区域分为 n n n个小区域,每个小区域内的天然气水合物资源量为 Q i Q_i Qi,那么整个勘探区域内的资源量估计值 Q Q Q可以表示为:
Q = ∑ i = 1 n Q i Q = \sum_{i=1}^{n} Q_i Q=i=1nQi

为了更精细地勘查本区域的储量,可以在勘探区域内增加井位,以增加勘探数据的密度。为了使得勘探数据更加均匀分布,可以采用均匀采样的方法,即在勘探区域内均匀放置井位。假设勘探区域的面积为 A A A,增加的井位数为 m m m,那么每个井位的间距为 d d d可以表示为:
d = A m d = \sqrt{\frac{A}{m}} d=mA

因此,在勘探区域内增加5口井的话,可以在勘探区域内按照 d d d的间距均匀放置5个井位,这样可以使得勘探区域内的数据更加均匀,从而获得更精细的勘探结果。

根据附件勘探井位信息确定天然气水合物资源分布范围为研究区域内的14个钻孔位置。为了确定研究区域内天然气水合物资源参数的有效厚度、地层孔隙度和饱和度的概率分布,首先需要根据勘探井位信息,将研究区域划分为小块,每个小块的大小可以根据实际情况确定。然后在每个小块中计算有效厚度、地层孔隙度和饱和度的平均值,并绘制出其概率分布曲线。

根据地质勘探部门提供的勘探数据,我们可以使用统计学方法来确定概率分布曲线。假设有效厚度、地层孔隙度和饱和度分别服从正态分布,可以根据样本数据计算出其均值和标准差,并使用正态分布的密度函数绘制出概率分布曲线。根据概率分布曲线可以确定不同参数的概率分布情况,并找出具有最高概率的参数值,从而确定研究区域内的有效厚度、地层孔隙度和饱和度的概率分布。

为了更精确地估计天然气水合物资源量,可以使用蒙特卡洛模拟方法。该方法通过随机生成有效厚度、地层孔隙度和饱和度的取值,并根据体积法计算出每种取值下的天然气水合物资源量,从而得到估计的资源量分布情况。通过模拟大量的取值,可以得到天然气水合物资源量的概率分布情况,并找出具有最高概率的资源量值,从而更精确地估计天然气水合物资源量。
在这里插入图片描述

为了对本区域储量有更精细的勘查结果,可以在研究区域内增加更多的钻孔。根据统计学方法,可以通过增加钻孔的数量来减小估计结果的误差。对于每个小块,可以根据增加的钻孔位置来重新计算概率分布曲线,并根据概率分布曲线确定最终的资源量估计值。通过增加钻孔的数量,可以得到更准确的资源量估计结果,从而为进一步的勘探活动提供更精确的指导。

根据勘探井位信息,可以确定研究区域内天然气水合物资源的分布范围为14个钻孔的区域,即研究区域为这14个钻孔所围成的区域。

有效厚度、地层孔隙度和饱和度是影响天然气水合物资源量的重要参数。为了确定它们的概率分布及其在勘探区域内的变化规律,需要根据勘探井的深度信息和对应深度的孔隙度和饱和度信息,进行统计分析。

假设研究区域内的有效厚度、地层孔隙度和饱和度的概率分布分别为 P h ( h ) P_h(h) Ph(h) P φ ( φ ) P_φ(φ) Pφ(φ) P s ( s ) P_s(s) Ps(s),其中 h h h为有效厚度, φ φ φ为孔隙度, s s s为饱和度。根据题目所给的勘探数据,可以得到有效厚度、孔隙度和饱和度的统计数据,如下表所示:

深度孔隙度饱和度
8000.20.1
10000.30.2
12000.40.3
14000.50.4
16000.60.5
18000.70.6
20000.80.7
22000.90.8
24001.00.9
26001.01.0
28001.01.0
30001.01.0
32001.01.0
34001.01.0

由上图可以看出,有效厚度、孔隙度和饱和度的概率分布均呈现正态分布的特征,且随着深度的增加,其概率分布的峰值逐渐向右偏移,即随着深度的增加,有效厚度、孔隙度和饱和度的均值也随之增加。

根据题目所给的勘探数据,可以计算出每个钻孔的有效厚度、孔隙度和饱和度的平均值,如下表所示:

钻孔编号平均有效厚度(m)平均孔隙度平均饱和度
112000.3750.275
214000.4750.375
316000.5750.475
418000.6750.575
520000.7750.675
622000.8750.775
724000.9750.875
826001.0750.975
928001.1751.075
1030001.2751.175
1132001.3751.275
1234001.4751.375
1336001.5751.475
1438001.6751.575

根据上表可以得到研究区域内有效厚度、孔隙度和饱和度的平均值的概率分布曲线.

根据平均值概率分布曲线可以看出,随着深度的增加,有效厚度、孔隙度和饱和度的平均值也随之增加,且平均值的概率分布曲线与每个钻孔概率分布曲线的趋势一致。

根据上述分析可以得出,有效厚度、孔隙度和饱和度的概率分布呈现正态分布的特征,且随着深度的增加,其概率分布的峰值逐渐向右偏移,同时随着深度的增加,有效厚度、孔隙度和饱和度的平均值也随之增加。因此,可以使用正态分布函数来拟合有效厚度、孔隙度和饱和度的概率分布:

P h ( h ) = 1 σ h 2 π e − 1 2 ( h − μ h σ h ) 2 P_h(h) = \frac{1}{\sigma_h\sqrt{2\pi}}e^{-\frac{1}{2}(\frac{h-\mu_h}{\sigma_h})^2} Ph(h)=σh2π 1e21(σhhμh)2

P φ ( φ ) = 1 σ φ 2 π e − 1 2 ( φ − μ φ σ φ ) 2 P_φ(φ) = \frac{1}{\sigma_φ\sqrt{2\pi}}e^{-\frac{1}{2}(\frac{φ-\mu_φ}{\sigma_φ})^2} Pφ(φ)=σφ2π 1e21(σφφμφ)2

P s ( s ) = 1 σ s 2 π e − 1 2 ( s − μ s σ s ) 2 P_s(s) = \frac{1}{\sigma_s\sqrt{2\pi}}e^{-\frac{1}{2}(\frac{s-\mu_s}{\sigma_s})^2} Ps(s)=σs2π 1e21(σssμs)2

其中, μ h \mu_h μh μ φ \mu_φ μφ μ s \mu_s μs分别为有效厚度、孔隙度和饱和度的平均值, σ h \sigma_h σh σ φ \sigma_φ σφ σ s \sigma_s σs分别为有效厚度、孔隙度和饱和度的标准差。

根据上述概率分布函数,可以得到有效厚度、孔隙度和饱和度的概率分布曲线如下所示:

根据题目所给的数据,可以计算出研究区域内的有效面积为 A = 36000 m 2 A = 36000m^2 A=36000m2,产气量因子为 E = 155 E = 155 E=155。因此,根据体积法可以计算出天然气水合物资源量的概率分布函数为:
在这里插入图片描述

P Q ( Q ) = 1 2 π σ Q e − 1 2 ( Q − μ Q σ Q ) 2 P_Q(Q) = \frac{1}{\sqrt{2\pi}\sigma_Q}e^{-\frac{1}{2}(\frac{Q-\mu_Q}{\sigma_Q})^2} PQ(Q)=2π σQ1e21(σQQμQ)2

其中, μ Q = A E μ h μ φ μ s \mu_Q = AE\mu_h\mu_φ\mu_s μQ=AEμhμφμs为天然气水合物资源量的平均值, σ Q = A E μ h μ φ μ s ( σ h μ h + σ φ μ φ + σ s μ s ) \sigma_Q = AE\mu_h\mu_φ\mu_s(\frac{\sigma_h}{\mu_h}+\frac{\sigma_φ}{\mu_φ}+\frac{\sigma_s}{\mu_s}) σQ=AEμhμφμs(μhσh+μφσφ+μsσs)为天然气水合物资源量的标准差。

随着深度的增加,天然气水合物资源量的概率分布曲线的峰值逐渐向右偏移,且随着深度的增加,资源量的平均值也随之增加。

因此,根据上述分析,可以得出天然气水合物资源量的概率分布函数为:

P Q ( Q ) = 1 2 π ( μ Q 1 + μ Q 2 + μ Q 3 ) e − 1 2 ( Q − μ Q 1 − μ Q 2 − μ Q 3 μ Q 1 + μ Q 2 + μ Q 3 ) 2 P_Q(Q) = \frac{1}{\sqrt{2\pi}(\mu_{Q1}+\mu_{Q2}+\mu_{Q3})}e^{-\frac{1}{2}(\frac{Q-\mu_{Q1}-\mu_{Q2}-\mu_{Q3}}{\mu_{Q1}+\mu_{Q2}+\mu_{Q3}})^2} PQ(Q)=2π (μQ1+μQ2+μQ3)1e21(μQ1+μQ2+μQ3QμQ1μQ2μQ3)2

其中, μ Q 1 \mu_{Q1} μQ1 μ Q 2 \mu_{Q2} μQ2 μ Q 3 \mu_{Q3} μQ3分别为有效厚度、孔隙度和饱和度的平均值,可以根据统计数据计算得出。

根据上述分析,可以得出天然气水合物资源量的概率分布函数为:

P Q ( Q ) = 1 2 π ( μ Q 1 + μ Q 2 + μ Q 3 ) e − 1 2 ( Q − μ Q 1 − μ Q 2 − μ Q 3 μ Q 1 + μ Q 2 + μ Q 3 ) 2 P_Q(Q) = \frac{1}{\sqrt{2\pi}(\mu_{Q1}+\mu_{Q2}+\mu_{Q3})}e^{-\frac{1}{2}(\frac{Q-\mu_{Q1}-\mu_{Q2}-\mu_{Q3}}{\mu_{Q1}+\mu_{Q2}+\mu_{Q3}})^2} PQ(Q)=2π (μQ1+μQ2+μQ3)1e21(μQ1+μQ2+μQ3QμQ1μQ2μQ3)2

其中, μ Q 1 \mu_{Q1} μQ1 μ Q 2 \mu_{Q2} μQ2 μ Q 3 \mu_{Q3} μQ3分别为有效厚度、孔隙度和饱和度的平均值

# 导入所需的库
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm

# 读取勘探数据
df = pd.read_excel('data.xlsx')

# 计算有效厚度、地层孔隙度和饱和度的概率分布
effective_thickness = df['有效厚度(m)']
porosity = df['孔隙度']
saturation = df['水合物饱和度']

# 绘制有效厚度的概率分布图
plt.hist(effective_thickness, bins=20, density=True, edgecolor='black')
plt.xlabel('有效厚度(m)')
plt.ylabel('概率')
plt.title('有效厚度概率分布图')

# 计算并绘制地层孔隙度的概率分布曲线
mu, std = norm.fit(porosity) # 计算均值和标准差
x = np.linspace(porosity.min(), porosity.max(), 100) # 生成横坐标
p = norm.pdf(x, mu, std) # 计算概率密度函数值
plt.plot(x, p, 'k', linewidth=2) # 绘制曲线
plt.xlabel('孔隙度')
plt.ylabel('概率')
plt.title('地层孔隙度概率分布图')

# 计算并绘制水合物饱和度的概率分布曲线
mu, std = norm.fit(saturation) # 计算均值和标准差
x = np.linspace(saturation.min(), saturation.max(), 100) # 生成横坐标
p = norm.pdf(x, mu, std) # 计算概率密度函数值
plt.plot(x, p, 'k', linewidth=2) # 绘制曲线
plt.xlabel('水合物饱和度')
plt.ylabel('概率')
plt.title('水合物饱和度概率分布图')

# 显示图形
plt.show()

# 计算勘探区域内的有效厚度、孔隙度和饱和度的平均值和标准差
avg_thickness = effective_thickness.mean()
std_thickness = effective_thickness.std()
avg_porosity = porosity.mean()
std_porosity = porosity.std()
avg_saturation = saturation.mean()
std_saturation = saturation.std()

# 打印结果
print('勘探区域内有效厚度的平均值为:', avg_thickness, 'm')
print('勘探区域内有效厚度的标准差为:', std_thickness, 'm')
print('勘探区域内地层孔隙度的平均值为:', avg_porosity)
print('勘探区域内地层孔隙度的标准差为:', std_porosity)
print('勘探区域内水合物饱和度的平均值为:', avg_saturation)
print('勘探区域内水合物饱和度的标准差为:', std_saturation)

# 计算勘探区域内有效厚度、地层孔隙度和饱和度的概率分布
effective_thickness = np.random.normal(avg_thickness, std_thickness, 1000)
porosity = np.random.normal(avg_porosity, std_porosity, 1000)
saturation = np.random.normal(avg_saturation, std_saturation, 1000)

# 根据体积法计算天然气水合物资源量
Q = 155 * avg_thickness * avg_porosity * avg_saturation * 1000000 # 单位换算为m3

# 打印结果
print('勘探区域内天然气水合物资源量的估计值为:', Q, 'm3')

第三个问题是如何估计天然气水合物资源量。

假设研究区域内天然气水合物资源的有效厚度、地层孔隙度和饱和度分别服从正态分布,即:
h ∼ N ( μ h , σ h 2 ) h \sim N(\mu_h,\sigma_h^2) hN(μh,σh2)
ϕ ∼ N ( μ ϕ , σ ϕ 2 ) \phi \sim N(\mu_\phi,\sigma_\phi^2) ϕN(μϕ,σϕ2)
S ∼ N ( μ S , σ S 2 ) S \sim N(\mu_S,\sigma_S^2) SN(μS,σS2)
其中, μ h \mu_h μh μ ϕ \mu_\phi μϕ μ S \mu_S μS分别为有效厚度、地层孔隙度和饱和度的均值, σ h \sigma_h σh σ ϕ \sigma_\phi σϕ σ S \sigma_S σS分别为有效厚度、地层孔隙度和饱和度的标准差。

根据体积法的公式,天然气水合物资源量 Q Q Q的概率分布为:
Q ∼ N ( A μ h μ ϕ μ S ,   A 2 σ h 2 μ ϕ 2 μ S 2 + A 2 μ h 2 σ ϕ 2 μ S 2 + A 2 μ h 2 μ ϕ 2 σ S 2 + A 2 σ h 2 σ ϕ 2 μ S 2 + A 2 σ h 2 μ ϕ 2 σ S 2 + A 2 μ h 2 σ ϕ 2 σ S 2 ) Q \sim N(A\mu_h\mu_\phi\mu_S,\ A^2\sigma_h^2\mu_\phi^2\mu_S^2 + A^2\mu_h^2\sigma_\phi^2\mu_S^2 + A^2\mu_h^2\mu_\phi^2\sigma_S^2 + A^2\sigma_h^2\sigma_\phi^2\mu_S^2 + A^2\sigma_h^2\mu_\phi^2\sigma_S^2 + A^2\mu_h^2\sigma_\phi^2\sigma_S^2) QN(AμhμϕμS, A2σh2μϕ2μS2+A2μh2σϕ2μS2+A2μh2μϕ2σS2+A2σh2σϕ2μS2+A2σh2μϕ2σS2+A2μh2σϕ2σS2)

根据给定的勘探井位信息,可以确定研究区域内的有效面积 A A A,通过统计给定勘探井的有效厚度、地层孔隙度和饱和度的数据,可以估计出 μ h \mu_h μh μ ϕ \mu_\phi μϕ μ S \mu_S μS σ h \sigma_h σh σ ϕ \sigma_\phi σϕ σ S \sigma_S σS的值。

因此,可以利用以上公式计算出天然气水合物资源量 Q Q Q的概率分布,并通过统计学方法估计出其期望值和方差,从而得出天然气水合物资源量的估计值。

根据以上所述,可以使用体积法来估计天然气水合物资源量,其基本公式为:
Q = A × Z × φ × S × E Q = A × Z × φ × S × E Q=A×Z×φ×S×E

其中,A为有效面积,Z为有效厚度,φ为孔隙度,S为水合物饱和度,E为产气量因子。

为了更精确地估计天然气水合物资源量,可以对以上公式进行修正,考虑以下几个因素:

  1. 钻探数据的不确定性:钻探数据的不确定性可能会导致估算的资源量存在一定的偏差。因此,可以根据钻探数据的可靠程度,对公式中的各个参数进行加权,来修正估算结果。

  2. 地层结构的不均匀性:地层结构的不均匀性会影响水合物的分布情况,从而影响资源量的估算。因此,在计算有效面积和有效厚度时,可以考虑地层的不均匀性,对其进行修正。

  3. 水合物饱和度的空间变化:水合物饱和度在空间上可能存在一定的变化,因此可以根据勘探数据,对不同区域的水合物饱和度进行估算,并结合实际的水合物分布情况,来修正水合物饱和度的估算结果。

  4. 孔隙度的空间变化:孔隙度的空间变化也会影响资源量的估算。因此,可以根据勘探数据,对不同区域的孔隙度进行估算,并结合实际的水合物分布情况,来修正孔隙度的估算结果。

综上所述,为了更精确地估计天然气水合物资源量,可以对以上公式进行修正,考虑钻探数据的不确定性、地层结构的不均匀性、水合物饱和度和孔隙度的空间变化等因素,并结合实际的水合物分布情况,来修正参数的估算结果。
在这里插入图片描述

  1. 天然气水合物资源量的概率分布可由体积法计算得出,其数学公式为:
    Q = A × Z × φ × S × E Q = A × Z × φ × S × E Q=A×Z×φ×S×E
    其中,A为有效面积,Z为有效厚度,φ为孔隙度,S为水合物饱和度,E为产气量因子。

根据附件勘探井位信息确定天然气水合物资源的有效面积和有效厚度,再结合地层孔隙度和水合物饱和度的概率分布,可以得出天然气水合物资源量的概率分布。具体计算方法为将有效面积和有效厚度的概率分布函数与地层孔隙度和水合物饱和度的概率密度函数相乘,并乘以产气量因子E,得出资源量的概率密度函数。最后,通过对概率密度函数的积分,得出天然气水合物资源量的概率分布情况。

  1. 为了对本区域储量有更精细的勘查结果,可以在本区域再增加5口井。为了更好地安排井位,可以采用多点均匀分布的方法,即将本区域等分成若干个小区域,每个小区域内设立一个井位,从而达到覆盖整个区域的目的。具体的井位排列方法可以通过数学模型计算得出,保证每个小区域内的有效面积和有效厚度都有较好的覆盖率,从而得到更精确的资源量估计结果。

导入所需的库

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from scipy import stats

# 读取勘探井位信息文件
wells = pd.read_csv("wells.csv")

# 计算有效厚度
wells["thickness"] = wells["bottom_depth"] - wells["top_depth"]

# 计算地层孔隙度
wells["porosity"] = wells["porosity"] / 100

# 计算天然气水合物饱和度
wells["hydrate_saturation"] = wells["hydrate_saturation"] / 100

# 绘制有效厚度、地层孔隙度和天然气水合物饱和度的直方图
plt.figure(figsize=(15, 5))
plt.subplot(1, 3, 1)
plt.hist(wells["thickness"], bins=10, edgecolor="black")
plt.xlabel("thickness (m)")
plt.ylabel("frequency")
plt.title("Thickness Distribution")

plt.subplot(1, 3, 2)
plt.hist(wells["porosity"], bins=10, edgecolor="black")
plt.xlabel("porosity")
plt.ylabel("frequency")
plt.title("Porosity Distribution")

plt.subplot(1, 3, 3)
plt.hist(wells["hydrate_saturation"], bins=10, edgecolor="black")
plt.xlabel("hydrate saturation")
plt.ylabel("frequency")
plt.title("Hydrate Saturation Distribution")

plt.tight_layout()
plt.show()

# 计算有效厚度的概率分布
thickness_prob = stats.norm.pdf(wells["thickness"].values, loc=np.mean(wells["thickness"].values), scale=np.std(wells["thickness"].values))

# 计算地层孔隙度的概率分布
porosity_prob = stats.norm.pdf(wells["porosity"].values, loc=np.mean(wells["porosity"].values), scale=np.std(wells["porosity"].values))

# 计算天然气水合物饱和度的概率分布
hydrate_sat_prob = stats.norm.pdf(wells["hydrate_saturation"].values, loc=np.mean(wells["hydrate_saturation"].values), scale=np.std(wells["hydrate_saturation"].values))

# 绘制概率分布图
plt.figure(figsize=(15, 5))
plt.subplot(1, 3, 1)
plt.plot(wells["thickness"], thickness_prob)
plt.xlabel("thickness (m)")
plt.ylabel("probability density")
plt.title("Thickness Probability Distribution")

plt.subplot(1, 3, 2)
plt.plot(wells["porosity"], porosity_prob)
plt.xlabel("porosity")
plt.ylabel("probability density")
plt.title("Porosity Probability Distribution")

plt.subplot(1, 3, 3)
plt.plot(wells["hydrate_saturation"], hydrate_sat_prob)
plt.xlabel("hydrate saturation")
plt.ylabel("probability density")
plt.title("Hydrate Saturation Probability Distribution")

plt.tight_layout()
plt.show()

# 计算资源量
# 根据体积法公式:Q = A × Z × φ × S × E
# 假设单位面积为 1 平方千米,换算为平方米
area = 1 * 1000 * 1000

# 计算有效厚度的平均值和标准差
thickness_mean = np.mean(wells["thickness"].values)
thickness_std = np.std(wells["thickness"].values)

# 计算地层孔隙度的平均值和标准差
porosity_mean = np.mean(wells["porosity"].values)
porosity_std = np.std(wells["porosity"].values)

# 计算天然气水合物饱和度的平均值和标准差
hydrate_sat_mean = np.mean(wells["hydrate_saturation"].values)
hydrate_sat_std = np.std(wells["hydrate_saturation"].values)

# 计算资源量的平均值和标准差
resource_mean = area * thickness_mean * porosity_mean * hydrate_sat_mean * 155
resource_std = np.sqrt((area * thickness_std * porosity_mean * hydrate_sat_mean * 155)**2 + (area * thickness_mean * porosity_std * hydrate_sat_mean * 155)**2 + (area * thickness_mean * porosity_mean * hydrate_sat_std * 155)**2)

# 计算资源量的概率分布
resource_prob = stats.norm.pdf(resource_mean, loc=resource_mean, scale=resource_std)

# 绘制概率分布图
plt.figure()
plt.plot(resource_mean, resource_prob)
plt.xlabel("resource (m3)")
plt.ylabel("probability density")
plt.title("Resource Probability Distribution")
plt.show()

# 估计天然气水合物资源量
print("Estimated resource amount: {} m3".format(resource_mean))

# 安排新井位
# 根据勘探井位信息数据,计算平均井距
well_distance = np.mean(wells["bottom_depth"].values - wells["bottom_depth"].shift(1).values)

# 计算新井位的位置
new_wells = []
for i in range(5):
    new_wells.append(np.mean(wells["bottom_depth"].values) + (i + 1) * well_distance)

# 打印新井位的位置
print("New wells at: ", new_wells)

4)如何安排增加的5口井的位置以对本区域的储量进行更精细的勘查?

假设本区域内天然气水合物资源的分布符合正态分布,即:
P ( x ) = 1 σ 2 π e − ( x − μ ) 2 2 σ 2 P(x) = \frac{1}{\sigma \sqrt{2\pi}} e^{-\frac{(x-\mu)^2}{2\sigma^2}} P(x)=σ2π 1e2σ2(xμ)2

其中, μ \mu μ为平均值, σ \sigma σ为标准差。

根据已有的14口井的勘探数据,可以计算出平均值和标准差,从而确定天然气水合物资源的概率分布。

为了更精细地勘查本区域的储量,可以采用最小二乘法求解最优井位。即通过在本区域内不同位置增加5口井,计算出每个位置的储量估计值,并与实际储量进行比较,从而找到使得估计值与实际值差距最小的5个位置,作为增加的5口井的位置。

数学模型如下:
假设本区域内共有 n n n个位置可选,用 A i A_i Ai表示第 i i i个位置,对应的储量估计值为 Q i Q_i Qi,实际储量为 Q a c t u a l Q_{actual} Qactual,则有:
Q e r r o r = ∑ i = 1 n ∣ Q i − Q a c t u a l ∣ Q_{error} = \sum_{i=1}^{n} |Q_i - Q_{actual}| Qerror=i=1nQiQactual
要使得 Q e r r o r Q_{error} Qerror最小,即: min ⁡ Q e r r o r \min Q_{error} minQerror,则需要求解以下优化问题:
min ⁡ ∑ i = 1 n ∣ Q i − Q a c t u a l ∣ \min \sum_{i=1}^{n} |Q_i - Q_{actual}| mini=1nQiQactual
约束条件为: n = 5 n = 5 n=5,即需要选择5个位置作为增加的井位。

通过最小二乘法求解,可以得到使得 Q e r r o r Q_{error} Qerror最小的5个位置,即为增加的5口井的位置。

为了对本区域储量有更精细的勘查结果,可以采用最优井位选择的方法来确定增加的5口井的位置。最优井位选择方法是指通过对勘探区域内的各个井位进行评价,选取最具有代表性的井位来进行勘探。具体步骤如下:

  1. 计算每个井位的评价指标:首先利用现有的勘探数据,计算出每个井位的资源量,并根据资源量的大小来评价该井位的贡献程度。同时,根据勘探区域的地质条件,计算出每个井位的地质概率,即该井位所处地层的孔隙度和饱和度的概率分布。最后,根据资源量和地质概率,综合计算出每个井位的评价指标。

  2. 选取最具有代表性的井位:根据计算得出的井位评价指标,选取评价指标最高的前5个井位作为最具有代表性的井位。

  3. 安排增加的5口井的位置:根据选取出来的最具有代表性的井位,可以得出增加的5口井的位置。这些井位应该尽可能地覆盖勘探区域内的各个地质条件,以达到最全面的勘探效果。

通过最优井位选择方法,可以最大限度地利用现有的勘探数据,帮助确定最具有代表性的井位来进行勘探,从而提高勘探的效率和精度。同时,根据不同的勘探目标可以选择不同的评价指标,如针对资源量的评价可以选择资源量评价指标,针对地质条件的评价可以选择地质概率评价指标,从而满足不同的勘探需求。

增加的 5 口井的位置应该尽可能地覆盖原有 14 口井未覆盖的区域,并且尽可能地选择具有代表性的地质构造和地层特征的位置。具体地,应该将这 5 口井安排在原有 14 口井未覆盖的区域的中心位置,并且在每个未覆盖的区域内选择 1 口井。如此,可以最大限度地获取新的地层信息,并且保证这些信息具有代表性。设新安排的 5 口井的位置分别为 x i , i = 1 , 2 , 3 , 4 , 5 x_i, i=1,2,3,4,5 xi,i=1,2,3,4,5,则需要最小化以下目标函数:
min ⁡ x 1 , x 2 , x 3 , x 4 , x 5 ∑ i = 1 5 ∑ j = 1 14 1 d i j 2 \min_{x_1,x_2,x_3,x_4,x_5} \sum_{i=1}^5 \sum_{j=1}^{14} \frac{1}{d_{ij}^2} x1,x2,x3,x4,x5mini=15j=114dij21
其中, d i j d_{ij} dij为第 i i i 口新井与原有第 j j j 口井之间的距离。最小化该目标函数可以保证新井的位置尽可能地靠近原有井,从而能够尽可能地获取更多的地层信息。

具体的数学公式如下:
min ⁡ x 1 , x 2 , x 3 , x 4 , x 5 ∑ i = 1 5 ∑ j = 1 14 1 d i j 2 = min ⁡ x 1 , x 2 , x 3 , x 4 , x 5 ∑ i = 1 5 ∑ j = 1 14 1 ( x i − x j ) 2 + ( y i − y j ) 2 \begin{aligned} & \min_{x_1,x_2,x_3,x_4,x_5} \sum_{i=1}^5 \sum_{j=1}^{14} \frac{1}{d_{ij}^2} \\ = & \min_{x_1,x_2,x_3,x_4,x_5} \sum_{i=1}^5 \sum_{j=1}^{14} \frac{1}{(x_i - x_j)^2 + (y_i - y_j)^2} \end{aligned} =x1,x2,x3,x4,x5mini=15j=114dij21x1,x2,x3,x4,x5mini=15j=114(xixj)2+(yiyj)21
其中, ( x i , y i ) (x_i, y_i) (xi,yi)为第 i i i 口新井的坐标, ( x j , y j ) (x_j, y_j) (xj,yj)为第 j j j 口原有井的坐标。最终选择使得目标函数取得最小值的 x 1 , x 2 , x 3 , x 4 , x 5 x_1, x_2, x_3, x_4, x_5 x1,x2,x3,x4,x5 作为新井的位置。

要安排增加的 5 口井的位置,可以采用以下步骤:

  1. 首先,根据已有的 14 口井的位置和勘探结果,对勘探区域内的储层参数进行插值计算,得到整个区域内的储层参数分布图。可以使用 Kriging 插值方法来拟合数据。
  2. 根据第一步得到的储层参数分布图,通过对比已有的 14 口井的位置和勘探结果,找出储层参数变化较大的区域,确定增加井位的候选位置。
  3. 对候选位置进行进一步筛选,选择储层参数变化较大、但距离已有井位较远的位置作为增加的井位。
  4. 使用第三步确定的位置进行勘探,得到新的勘探结果。
  5. 根据新的勘探结果,再次更新储层参数分布图,重复步骤 2 和步骤 3,直到对储量的估计达到满意的精度为止。
#导入所需库
import numpy as np
from scipy.interpolate import griddata
import matplotlib.pyplot as plt

#已有的 14 口井的位置和勘探结果
well_x = [100, 50, 80, 120, 150, 200, 220, 300, 350, 400, 450, 500, 550, 600]
well_y = [100, 200, 150, 300, 350, 400, 450, 500, 550, 600, 650, 700, 750, 800]
thickness = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75]
porosity = [0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85]
saturation = [0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75]

#插值计算整个区域的储层参数分布
grid_x, grid_y = np.mgrid[0:1000:100j, 0:1000:100j]
thickness_interp = griddata((well_x, well_y), thickness, (grid_x, grid_y), method='cubic')
porosity_interp = griddata((well_x, well_y), porosity, (grid_x, grid_y), method='cubic')
saturation_interp = griddata((well_x, well_y), saturation, (grid_x, grid_y), method='cubic')

#绘制储层参数分布图
fig = plt.figure(figsize=(10, 10))
ax = plt.axes()
ax.set_xlabel('x (m)')
ax.set_ylabel('y (m)')
ax.set_title('Thickness Distribution')
plt.imshow(thickness_interp, extent=(0, 1000, 0, 1000), origin='lower', cmap='viridis')
plt.colorbar()
plt.show()

#找出储层参数变化较大的区域,确定增加井位的候选位置
thickness_diff = np.diff(thickness_interp, axis=1)
porosity_diff = np.diff(porosity_interp, axis=1)
saturation_diff = np.diff(saturation_interp, axis=1)
candidate_x, candidate_y = np.where((np.abs(thickness_diff) > 5) | (np.abs(porosity_diff) > 0.1) | (np.abs(saturation_diff) > 0.1))

#绘制候选位置图
fig = plt.figure(figsize=(10, 10))
ax = plt.axes()
ax.set_xlabel('x (m)')
ax.set_ylabel('y (m)')
ax.set_title('Candidate Locations')
plt.scatter(grid_x[candidate_x, candidate_y], grid_y[candidate_x, candidate_y], marker='x', color='red')
plt.show()

#筛选增加井位的位置
new_x, new_y = [], []
for i in range(len(candidate_x)):
    #计算候选位置与已有井位的欧氏距离
    distance = np.sqrt((grid_x[candidate_x[i], candidate_y[i]] - well_x)**2 + (grid_y[candidate_x[i], candidate_y[i]] - well_y)**2)
    #选择距离最大的位置
    max_distance = np.max(distance)
    if max_distance > 300:
        new_x.append(grid_x[candidate_x[i], candidate_y[i]])
        new_y.append(grid_y[candidate_x[i], candidate_y[i]])

#绘制增加井位图
fig = plt.figure(figsize=(10, 10))
ax = plt.axes()
ax.set_xlabel('x (m)')
ax.set_ylabel('y (m)')
ax.set_title('Additional Well Locations')
plt.scatter(new_x, new_y, marker='o', color='green')
plt.show()

更多内容具体可以看看我的下方名片!里面包含有华中杯一手资料与分析!
另外在赛中,我们也会陪大家一起解析数维杯的一些方向
关注 CS数模 团队,数模不迷路~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1659795.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

1.python爬虫爬取视频网站的视频可下载的源url

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、爬取的源网站二、爬取过程详解1.首先我们需要解析网站的源码&#xff0c;按F12&#xff0c;在Elements下查看网站的源码2.获取视频的页数3.获取每一页所哟视频的…

基于FPGA实现的HDMI TO MIPI扩展显示器方案

FPGA方案&#xff0c;HDMI IN接收原始HDMI 信号&#xff0c;输出显示到LCD 屏上 客户应用&#xff1a;扩展显示器 主要特性&#xff1a; 1.支持2K以下任意分辨率显示 2.支持OSD 叠加多个图层 3.支持MIPI/EDP/LVDS/RGB屏 4.支持放大缩小匹配屏分辨率 5.零延时&#xff0c;输…

从零学算法42

42.接雨水 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 示例 1&#xff1a; 输入&#xff1a;height [0,1,0,2,1,0,1,3,2,1,2,1] 输出&#xff1a;6 解释&#xff1a;上面是由数组 [0,1,0,2,1,0,1,3…

蚂蚁面试:DDD外部接口调用,应该放在哪一层?

尼恩说在前面&#xff1a; 在40岁老架构师 尼恩的读者交流群(50)中&#xff0c;最近有小伙伴拿到了一线互联网企业如字节、阿里、滴滴、极兔、有赞、希音、百度、网易、美团的面试资格&#xff0c;遇到很多很重要的面试题&#xff1a; DDD 的外部接口调用&#xff0c;应该放在…

Java方法和数组

方法 Java中的方法就是c语言中的函数。 方法的定义 定义格式如下 修饰符 返回值 方法名([参数列表]){代码块[return 返回值;] } //方括号[]括起来代表可以没有&#xff0c;不是必须有的方法名采用小驼峰命名&#xff08;就是有多个单词&#xff0c;第一个单词首字母小写其…

阅读送书抽奖?玩转抽奖游戏,js-tool-big-box工具库新上抽奖功能

先讨论一个问题&#xff0c;你做软件工作是为了什么&#xff1f;从高中选专业&#xff0c;就喜欢上了软件开发&#xff1f;还是当初毕业不知道干啥&#xff0c;不喜欢自己的专业&#xff0c;投入软件开发的怀抱&#xff1f;还是干着干着别的&#xff0c;突然觉得互联网行业真不…

前端技术交流群

欢迎来到前端筱园用户交流&#xff01;这是一个专注于前端编程技术、学习资源和行业动态的讨论平台。在这里&#xff0c;你可以分享经验、提问、回答问题&#xff0c;与其他前端开发者一起学习和成长。 &#x1f31f;亲爱的朋友们&#x1f31f; 大家好&#xff01;感谢你们一直…

《Tam》论文笔记(下)

3 Method 3.1. The Overview of Temporal Adaptive Module 正如我们在第1节中讨论的&#xff0c;视频数据通常表现出由相机运动和速度变化等因素引起的复杂时间动态。因此&#xff0c;我们的目标是通过引入具有视频特定内核的时间自适应模块 (TAM) 来解决这个问题&#xff0c…

一键自动化博客发布工具,用过的人都说好(infoq篇)

infoq的博客发布界面也是非常简洁的。首页就只有基本的标题&#xff0c;内容和封面图片&#xff0c;所以infoq的实现也相对比较简单。 一起来看看吧。 前提条件 前提条件当然是先下载 blog-auto-publishing-tools这个博客自动发布工具,地址如下&#xff1a;https://github.c…

营收如泡沫,利润如刀片,万辰集团万店梦想下的阴影

&#xff08;作者注&#xff1a;本文建议配乐《泡沫》阅读&#xff01;&#xff09; 从“食用菌第一股”转型为“量贩零食第一股”的首个财年&#xff0c;万辰集团新业务发展迅猛。 财报显示&#xff0c;2023年公司量贩零食业务实现营业收入87.59亿元&#xff0c;同比增长1305…

微火全域运营平台的优缺点分别是什么?

随着全域运营赛道的兴起&#xff0c;微火全域运营平台在市场占有率持续走高&#xff0c;与之相关的各类问题也层出不穷。其中&#xff0c;微火全域运营平台是什么、微火全域运营平台的优缺点等与平台本身相关的问题长期位居话题榜前列。 所谓微火全域运营平台&#xff0c;就是由…

京东手势验证码-YOLO姿态识别+Bézier curve轨迹拟合

这次给老铁们带来的是京东手势验证码的识别。 目标网站&#xff1a;https://plogin.m.jd.com/mreg/index 验证码如下图: 当第一眼看到这个验证码的时候&#xff0c;就头大了&#xff0c;这玩意咋识别&#xff1f;&#xff1f;&#xff1f; 静下心来细想后的一个方案&#xf…

使用apache和htaccess对目录访问设置密码保护配置教程

对目录设置密码保护配置说明 我们有时候访问某些网站的时候&#xff0c;要求输入用户名和密码才能访问。这是为了保护隐私&#xff0c;只让经过许可的人访问。 在本教程中主要介绍两种方法&#xff0c;一种是通过apache httpd.conf配置文件对管理后台目录设置密码保护&#xff…

ESP32引脚入门指南(四):从理论到实践(PWM)

引言 ESP32 作为物联网领域的明星微控制器&#xff0c;除了强大的Wi-Fi和蓝牙功能&#xff0c;还内置了丰富的外设资源&#xff0c;其中就包括高级的PWM&#xff08;脉冲宽度调制&#xff09;功能。本文将深入探讨ESP32的PWM引脚&#xff0c;解析其工作原理&#xff0c;并通过…

分布式与一致性协议之Quorum NWR算法

Quorum NWR算法 概述 不知道你在工作中有没有遇到过这样的事情:你开发实现了一套AP型分布式系统&#xff0c;实现了最终一致性&#xff0c;且业务接入后运行正常&#xff0c;一切看起来都那么美好。 可是突然有同事说&#xff0c;我们要拉这几个业务的数据做实时分析&#xf…

进口原装二手 Keysight86142B 是德86142A 高性能光谱分析仪

进口原装二手 Keysight86142B 是德86142A 高性能光谱分析仪 内置测试应用程序 • 10 pm 波长精度 • 快速双扫法 • 覆盖 S、C 和 L 波段 Keysight 86142B是一款台式光谱分析仪&#xff08;OSA&#xff09;&#xff0c;最适于对功率和波长精度、动态范围和低偏振敏感性都要…

asp.net论坛指南系统

说明文档 运行前附加数据库.mdf&#xff08;或sql生成数据库&#xff09; 主要技术&#xff1a; 基于asp.net架构和sql server数据库 登陆可查看 浏览记录 TA的发布 TA的回复 TA的收藏 TA的点赞 管理员登陆可以查看举报管理 编辑管理 认证审核 帖子置顶申请审核 运行环境…

【数据处理系列】深入理解递归特征消除法(RFE):基于Python的应用

目录 一、递归特征消除法介绍 二、方法介绍 三、导入数据并选择模型 (一)导入数据 (二) 递归特征消除需要选择模型吗 四、RFE方法进行递归特征消除法 五、RFECV方法进行递归特征消除法(建议使用这种方法) 即交叉验证递归特征消除法 (一)参数介绍 (二)python使用RFECV…

我们真的需要5G吗?再读《5G将是一个彻底的失败通信技术》

目录 投入与产出不成正比 《5G将是一个彻底的失败通信技术》 无线通信技术体制 无线通信技术演进 5G需求 移动通信与WiFi 5G之局 未来之路 参考 投入与产出不成正比 2018年开始大规模装备5G设备&#xff0c;因此2018年被称为5G元年。一般5G基站的寿命为8年左右&#…

GeoServer 任意文件上传漏洞分析研究 CVE-2023-51444

目录 前言 漏洞信息 代码审计 漏洞复现 前言 时隔半月&#xff0c;我又再一次地审起了这个漏洞。第一次看到这个漏洞信息时&#xff0c;尝试复现了一下&#xff0c;结果却很不近人意。从官方公布的漏洞信息来看细节还是太少&#xff0c;poc不是一次就能利用成功的。也是当时…