当大家面临着复杂的数学建模问题时,你是否曾经感到茫然无措?作为2022年美国大学生数学建模比赛的O奖得主,我为大家提供了一套优秀的解题思路,让你轻松应对各种难题!
CS团队倾注了大量时间和心血,深入挖掘解决方案。通过数值模拟,蒙特卡罗模拟、风险评估模型等算法,设计了明晰的项目,团队努力体现在每个步骤,确保方案既创新又可行,为大家提供了全面而深入的洞见噢~
让我们来看看国赛(D题)!
完整内容可以在文章末尾领取!
问题一
问题 1:投射一枚深弹,潜艇中心位置的深度定位没有误差,两个水平坐标定位均服从正态分布。分析投弹最大命中概率与投弹落点平面坐标及定深引信引爆深度之间的关系,并给出使得投弹命中概率最大的投弹方案,及相应的最大命中概率表达式。针对以下参数值给出最大命中概率:潜艇长 100 m,宽 20 m,高 25 m,潜艇航向方位角为 90°,深弹杀伤半径为 20 m,潜艇中心位置的水平定位标准差 𝜎 = 120 m,潜艇中心位置的深度定位值为 150 m。
该问题要求建立数学模型,以分析和解决投弹命中的概率问题。
为了分析投弹最大命中概率与投弹落点平面坐标及定深引信引爆深度之间的关系,我们可以进行以下的建模过程。
问题建模
-
潜艇模型
- 假设潜艇被简化为一个长方体,其尺寸为 100 m100 \, \text{m}100m(长度)x 20 m20 \, \text{m}20m(宽度)x 25 m25 \, \text{m}25m(高度)。潜艇的中心在海平面下的深度为 h0=150 mh_0 = 150 \, \text{m}h0=150m。
-
定位误差
- 水平坐标 (X,Y)(X, Y)(X,Y) 服从独立的正态分布,(X,Y)∼N(0,σ2)(X, Y) \sim N(0, \sigma^2)(X,Y)∼N(0,σ2),其中 σ=120 m\sigma = 120 \, \text{m}σ=120m,因此 XXX 和 YYY 的分布为:
X∼N(0,1202),Y∼N(0,1202) X \sim N(0, 120^2), \quad Y \sim N(0, 120^2) X∼N(0,1202),Y∼N(0,1202)
- 水平坐标 (X,Y)(X, Y)(X,Y) 服从独立的正态分布,(X,Y)∼N(0,σ2)(X, Y) \sim N(0, \sigma^2)(X,Y)∼N(0,σ2),其中 σ=120 m\sigma = 120 \, \text{m}σ=120m,因此 XXX 和 YYY 的分布为:
-
深度测量
- 深度 ZZZ 没有误差,确定为 h0=150 mh_0 = 150 \, \text{m}h0=150m。
-
投弹落点
- 假设投弹落点为 (X0,Y0)(X_0, Y_0)(X0,Y0),引爆深度设为 ddd。我们需要考虑如下几种情况来判断命中潜艇的条件:
命中条件
-
触发引信引爆(条件1):
- 深弹落点在潜艇覆盖的水平范围内:
∣X0∣≤1002和∣Y0∣≤202 |X_0| \leq \frac{100}{2} \quad \text{和} \quad |Y_0| \leq \frac{20}{2} ∣X0∣≤2100和∣Y0∣≤220 - 深度条件:投弹引爆深度 d<150+252=162.5 md < 150 + \frac{25}{2} = 162.5 \, \text{m}d<150+225=162.5m(在潜艇上表面下方)。
- 深弹落点在潜艇覆盖的水平范围内:
-
定深引信引爆(条件2):
- 深弹落点在潜艇覆盖范围内:
∣X0∣≤1002和∣Y0∣≤202 |X_0| \leq \frac{100}{2} \quad \text{和} \quad |Y_0| \leq \frac{20}{2} ∣X0∣≤2100和∣Y0∣≤220 - 深度条件:d≥150+252=162.5 md \geq 150 + \frac{25}{2} = 162.5 \, \text{m}d≥150+225=162.5m 并且潜艇在杀伤范围内。
- 杀伤范围条件:到潜艇中心的距离必须小于等于杀伤半径 20 m20 \, \text{m}20m:
(X0−0)2+(Y0−0)2≤20 \sqrt{(X_0 - 0)^2 + (Y_0 - 0)^2} \leq 20 (X0−0)2+(Y0−0)2≤20
- 深弹落点在潜艇覆盖范围内:
-
定深引信引爆(条件3):
- 深弹落点在潜艇覆盖范围之外:
∣X0∣>1002或∣Y0∣>202 |X_0| > \frac{100}{2} \quad \text{或} \quad |Y_0| > \frac{20}{2} ∣X0∣>2100或∣Y0∣>220 - 深度条件:d≥150d \geq 150d≥150 并且潜艇在杀伤范围内。
- 深弹落点在潜艇覆盖范围之外:
最大命中概率分析
我们需要计算以上命中条件下,潜艇被命中的概率。
计算命中概率
-
命中区域:
- 首先计算触发引信和定深引信引爆命中区域,以便后续计算命中概率。
-
命中概率公式:
- 根据正态分布,我们可以计算潜艇在 X−YX-YX−Y平面上的投弹命中区域所包含的概率。在条件1,2,3下进行整合。
-
联合概率:
- 根据独立性,我们对每一个命中条件计算其对应的概率,然后结合。
-
最大化命中概率:
- 设定合适的 ddd 可以提高命中概率。我们需要找到最佳的 ddd 值以确保命中概率最大化。数学上我们可以通过对目标函数进行求导找到最大点。
计算实例
给定所需参数,运用上述方法进行计算。
- 对于条件1,命中范围和对应概率:
$$
P_1 = P(X_0 \in [-50, 50]) \cdot P(Y_0 \in [-10, 10]) \cdot P(Z <
为了解决问题 1,我们首先需要确定潜艇的位置分布和深弹命中潜艇的条件。潜艇的中心位置在空间中可以用 (X,Y,Z)(X,Y,Z)(X,Y,Z) 三个坐标来描述,其中 XXX 和 YYY 均服从均值为 0,标准差为 σ=120\sigma = 120σ=120 m 的正态分布,而 ZZZ 的定位并没有误差,设定为 Z=150Z = 150Z=150 m。
我们对潜艇进行建模,将潜艇视为一个长方体,尺寸为长 100 m,宽 20 m,高 25 m。潜艇的有效区域在水平面上是一个长方形,范围为:
[−50,50]×[−10,10].
[-50, 50] \times [-10, 10].
[−50,50]×[−10,10].
命中概率模型建立
1. 投弹落点坐标的定义
设投弹落点的平面坐标为 (x0,y0)(x_0, y_0)(x0,y0)。深弹的杀伤半径为 R=20R = 20R=20 m。因此,深弹才能命中潜艇的条件如下:
- 投弹落点 (x0,y0)(x_0, y_0)(x0,y0) 必须在距离潜艇中心的有效范围内。
- 投弹落点的引爆深度需要在潜艇上下表面之内,能够通过触发引信或定深引信引爆。
2. 概率计算
由于 XXX 和 YYY 的分布是独立的正态分布,我们可以分别计算 XXX 和 YYY 在特定区域的命中率。
-
命中水平面范围:
投弹落点 (x0,y0)(x_0, y_0)(x0,y0) 在潜艇范围的命中条件为:
- ∣X∣≤50|X| \leq 50∣X∣≤50 m
- ∣Y∣≤10|Y| \leq 10∣Y∣≤10 m
通过标准化,我们可以计算 XXX 和 YYY 在特定区域的命中概率。
对于 XXX:
P(∣X∣≤50)=P(−50≤X≤50)=Φ(50120)−Φ(−50120)=2Φ(50120)−1, P(|X| \leq 50) = P(-50 \leq X \leq 50) = \Phi\left(\frac{50}{120}\right) - \Phi\left(\frac{-50}{120}\right) = 2\Phi\left(\frac{50}{120}\right) - 1, P(∣X∣≤50)=P(−50≤X≤50)=Φ(12050)−Φ(120−50)=2Φ(12050)−1,
其中 Φ\PhiΦ 是标准正态分布的累计分布函数。对于 YYY:
P(∣Y∣≤10)=P(−10≤Y≤10)=Φ(10120)−Φ(−10120)=2Φ(10120)−1. P(|Y| \leq 10) = P(-10 \leq Y \leq 10) = \Phi\left(\frac{10}{120}\right) - \Phi\left(\frac{-10}{120}\right) = 2\Phi\left(\frac{10}{120}\right) - 1. P(∣Y∣≤10)=P(−10≤Y≤10)=Φ(12010)−Φ(120−10)=2Φ(12010)−1.由于 XXX 和 YYY 独立,总的命中概率就为两者的乘积:
Phit=P(∣X∣≤50)×P(∣Y∣≤10). P_{\text{hit}} = P(|X| \leq 50) \times P(|Y| \leq 10). Phit=P(∣X∣≤50)×P(∣Y∣≤10). -
引爆深度的考虑:
深弹的引爆深度需要位于 [125,150][125, 150][125,150] m(以确保深弹在潜艇上表面下方爆炸),从而影响有效命中率。深度的设定对引爆深度概率的计算是确定的。在深度方面,假设我们选择引爆深度 h=145h = 145h=145 m,这是基于微调的经验值(此处可以进一步探讨准确的深度选择)。
最大命中概率
将所有条件结合,深弹的最大命中概率可以表示为:
Pmax(x0,y0,h)=Phit⋅P(Z∈[125,150])
P_{\text{max}}(x_0, y_0, h) = P_{\text{hit}} \cdot P(Z \in [125, 150])
Pmax(x0,y0,h)=Phit⋅P(Z∈[125,150])
根据深度 ZZZ 的分布:
P(Z∈[125,150])=Φ(150−h0σz)−Φ(125−h0σz),
P(Z \in [125, 150]) = \Phi\left(\frac{150 - h_0}{\sigma_z}\right) - \Phi\left(\frac{125 - h_0}{\sigma_z}\right),
P(Z∈[125,150])=Φ(σz150−h0)−Φ(σz125−h0),
其中 σz\sigma_zσz 是深度的标准差。
最优投弹方案:
通过调整投弹落点 (x0,y0)(x_0, y_0)(x0,y0),对 PmaxP_{\text{max}}Pmax 进行优化,即找到最佳的 (x0,y0)(x_0, y_0)(x0,y0) 使得命中概率最大。最优方案可能需要数值优化方法来调整投弹落点。
参数计算示例
假设我们选定深度
在解决问题 1 之前,我们需要明确一些变量和建模的假设:
-
变量定义:
- 潜艇中央位置的投影坐标为 (X,Y)(X,Y)(X,Y),其中 X∼N(0,σ2)X \sim N(0, \sigma^2)X∼N(0,σ2) 和 Y∼N(0,σ2)Y \sim N(0, \sigma^2)Y∼N(0,σ2),此处 σ=120m\sigma = 120 mσ=120m。
- 深度 Z=150mZ = 150 mZ=150m,没有定位误差。
- 潜艇的几何特征:长度 L=100mL = 100 mL=100m,宽度 W=20mW = 20 mW=20m,高度 H=25mH = 25 mH=25m。
- 深弹的杀伤半径为 R=20mR = 20 mR=20m。
- 定深引信的引爆深度为 hdeth_{det}hdet。
-
潜艇有效区域:
潜艇横截面积在水平面上的投影为矩形,其范围在 [−L/2,L/2][-L/2, L/2][−L/2,L/2] 和 [−W/2,W/2][-W/2, W/2][−W/2,W/2]。即潜艇在水平面上有效范围为:
Rsub={(x,y):−50≤x≤50,−10≤y≤10} R_{sub} = \left\{(x,y): -50 \leq x \leq 50, -10 \leq y \leq 10\right\} Rsub={(x,y):−50≤x≤50,−10≤y≤10} -
投弹命中条件:
如题中所述,深弹命中潜艇的条件有以下三种情况:- (1) 深弹落点 (x,y)(x,y)(x,y) 在潜艇范围内,且 zzz 的引爆深度低于潜艇的顶面基准,即 hdet≤150+25=175h_{det} \leq 150 + 25 = 175hdet≤150+25=175。
- (2) 深弹落点 (x,y)(x,y)(x,y) 在潜艇范围内,且引爆深度高于潜艇的顶面且处于杀伤范围内,即 hdet≥175h_{det} \geq 175hdet≥175 且 x2+y2≤R=20\sqrt{x^2 + y^2} \leq R = 20x2+y2≤R=20。
- (3) 深弹落点超出潜艇范围,但引爆深度在潜艇的杀伤范围内,即 x2+y2≤R=20\sqrt{x^2 + y^2} \leq R = 20x2+y2≤R=20。
-
命中概率计算:
设定投弹落点为 (x0,y0)(x_0, y_0)(x0,y0),基于高斯分布我们可以得出:- 有效命中条件的概率:
Phit=P(Hit∣(x,y))⋅P((x,y)∈Rsub) P_{hit} = P(Hit | (x,y)) \cdot P((x,y) \in R_{sub}) Phit=P(Hit∣(x,y))⋅P((x,y)∈Rsub)
而 (x,y)(x,y)(x,y) 分布为 N(0,σ2)N(0, \sigma^{2})N(0,σ2),我们可以得出它们在目标区域 RsubR_{sub}Rsub 上的命中概率。
- 有效命中条件的概率:
-
命中概率表达式:
基于上述条件,命中概率为:- 当引爆深度符合条件 (1) 和 (2) 时,命中概率可以写成:
P(x,y)=12πσ2⋅P(x∈[−50,50])⋅P(y∈[−10,10]) P(x,y) = \frac{1}{2\pi \sigma^2} \cdot P(x \in [-50, 50]) \cdot P(y \in [-10, 10]) P(x,y)=2πσ21⋅P(x∈[−50,50])⋅P(y∈[−10,10])
通过从标准正态分布的值反推,在有效长和宽的边界上估算,得出:
P(x∈[−50,50])=Φ(50σ)−Φ(−50σ) P(x \in [-50, 50]) = \Phi\left(\frac{50}{\sigma}\right) - \Phi\left(\frac{-50}{\sigma}\right) P(x∈[−50,50])=Φ(σ50)−Φ(σ−50)
P(y∈[−10,10])=Φ(10σ)−Φ(−10σ) P(y \in [-10, 10]) = \Phi\left(\frac{10}{\sigma}\right) - \Phi\left(\frac{-10}{\sigma}\right) P(y∈[−10,10])=Φ(σ10)−Φ(σ−10)其中 Φ\PhiΦ 为累积分布函数。
- 当引爆深度符合条件 (1) 和 (2) 时,命中概率可以写成:
-
最大命中概率方案:
为了最大化 PhitP_{hit}Phit,定深引信的最优引爆深度应当为 hdet=175h_{det} = 175hdet=175,此时命中概率将达到最大值。
最终,命中概率的最大化公式为:
Pmax=12πσ2(Φ(50σ)−Φ(−50σ))(Φ(10σ)−Φ(−10σ))
P_{max} = \frac{1}{2\pi \sigma^2} \left(\Phi\left(\frac{50}{\sigma}\right) - \Phi\left(\frac{-50}{\sigma}\right)\right) \left(\Phi\left(\frac{10}{\sigma}\right) - \Phi\left(\frac{-10}{\sigma}\right)\right)
Pmax=2πσ21(Φ(σ50)−Φ(σ−50))(Φ(σ10)−Φ(σ−10))
请根据具体算例计算上述概率,并进行适当数值分析。
为了解决问题1,我们需要建立一个数学模型来计算潜艇被深弹命中的概率。以下是该问题的解法步骤:
-
模型建立:
- 概率密度函数形式的优势在于,我们可以计算潜艇中心到深弹落点的距离。
- 设潜艇的坐标为 (X, Y, Z) ,其中 X, Y 分别服从正态分布 N(0, 120^2),Z的深度是150m。
- 我们需要判定潜弹落在潜艇的横截面范围内,并考虑深度范围。
-
命中条件:
- 深弹的落点 (Xb, Yb, Zb) 需满足以下条件:
- ∣Xb∣≤50|Xb| \leq 50∣Xb∣≤50(由于潜艇长100m)
- ∣Yb∣≤10|Yb| \leq 10∣Yb∣≤10(由于潜艇宽20m)
- Zb < 150 (触发引信在潜艇上方)
- 深弹的落点 (Xb, Yb, Zb) 需满足以下条件:
-
概率计算:
- 根据正态分布计算X和Y在上述范围内的概率,然后结合深度因素Z的情况。
以下是对应的 Python 代码,用于实现上述模型:
import numpy as np
from scipy.stats import norm
def calculate_hit_probability(sigma, z_loc, kill_radius):
# 定义潜艇的尺寸
length = 100 / 2 # 半长,50m
width = 20 / 2 # 半宽,10m
# 计算水平落点在潜艇范围内的概率
p_x = norm.cdf(length, 0, sigma) - norm.cdf(-length, 0, sigma)
p_y = norm.cdf(width, 0, sigma) - norm.cdf(-width, 0, sigma)
# 计算触发引信(在深度上方)的到达概率
# 由于没有误差,Zb < z_loc 直接认为概率为1
p_z = 1 # 由于深度定位没有误差
# 越过z的条件,必须是深弹落点需要在有效杀伤范围内
p_kill = np.pi * (kill_radius**2) / (length * width) # 在潜艇上方的概率
# 计算命中概率
hit_probability = p_x * p_y * p_z * p_kill
return hit_probability
# 参数
sigma = 120 # 潜艇水平定位标准差
z_loc = 150 # 潜艇中心实际深度
kill_radius = 20 # 深弹杀伤半径
result = calculate_hit_probability(sigma, z_loc, kill_radius)
print("最大命中概率为:", result)
这段代码通过正态分布的累积分布函数计算落点落在潜艇范围内的概率,并结合命中条件给出最终的命中概率。
问题二
问题 2:仍投射一枚深弹,潜艇中心位置各方向的定位均有误差。请给出投弹命中概率的表达式。针对以下参数,设计定深引信引爆深度,使得投弹命中概率最大:潜艇中心位置的深度定位值为 150 m,标准差 𝜎𝑧 = 40 m,潜艇中心位置实际深度的最小值为 120 m,其他参数同问题 1。
为了解决问题2,我们需要确定投弹命中概率的表达式。假设我们已知潜艇的主要参数和定位误差,设潜艇中心位置深度的真实值为 HHH,且其针对深度的定位标准差为 σz\sigma_zσz。我们设定深引信的引爆深度为 heh_ehe。
模型假设与符号定义:
- 潜艇中心位置深度的真实值:H=150 mH = 150 \, \text{m}H=150m
- 潜艇深度的标准差:σz=40 m\sigma_z = 40 \, \text{m}σz=40m
- 潜艇深度的最小值:l=120 ml = 120 \, \text{m}l=120m
- 潜艇的长和宽:L=100 mL = 100 \, \text{m}L=100m,W=20 mW = 20 \, \text{m}W=20m
- 深弹的杀伤半径:Rs=20 mR_s = 20 \, \text{m}Rs=20m
首先,我们定义投弹落点 (X,Y,Z)(X, Y, Z)(X,Y,Z) 的可能情况。由于水平定位误差与垂直定位误差是相互独立的,我们可以分开考虑。
1. 水平定位误差
对于潜艇的水平坐标 (X,Y)(X, Y)(X,Y),假设 X∼N(0,σ2)X \sim N(0, \sigma^2)X∼N(0,σ2),Y∼N(0,σ2)Y \sim N(0, \sigma^2)Y∼N(0,σ2),其中 σ=120 m\sigma = 120 \, \text{m}σ=120m。因此,潜艇的投影范围是 [−L/2,L/2]×[−W/2,W/2][-L/2, L/2] \times [-W/2, W/2][−L/2,L/2]×[−W/2,W/2]。
2. 深度定位误差
首先,潜艇的深度定位值 ZZZ 服从单边截尾正态分布。其密度函数为:
fh0,σz,l(z)={1σz⋅(1−Φ(l−150σz))⋅ϕ(z−150σz),if z>l0,otherwise f_{h_0,\sigma_z,l}(z) = \begin{cases} \frac{1}{\sigma_z \cdot (1 - \Phi(\frac{l - 150}{\sigma_z}))} \cdot \phi(\frac{z - 150}{\sigma_z}), & \text{if } z > l \\ 0, & \text{otherwise} \end{cases} fh0,σz,l(z)={σz⋅(1−Φ(σzl−150))1⋅ϕ(σzz−150),0,if z>lotherwise
其中,ϕ(x)\phi(x)ϕ(x) 是标准正态分布的概率密度函数,Φ(x)\Phi(x)Φ(x) 是标准正态分布的累积分布函数。
3. 投弹命中条件
根据题意,深弹命中潜艇的条件可以分为三种情况:
- Shit1S_{hit1}Shit1:航弹落点在潜艇的平面尺度范围内,且引爆深度在潜艇上表面下方。
- Shit2S_{hit2}Shit2:航弹落点在潜艇的平面尺度范围内,且引爆深度在潜艇上表面上方,同时潜艇在杀伤范围内。
- Shit3S_{hit3}Shit3:航弹落点在潜艇平面尺度范围外,引爆深度在潜艇实际深度范围内。
我们首先分别计算三个命中条件下的概率。
(1) 对于条件 Shit1S_{hit1}Shit1:
该条件下,深弹落点 (X,Y)(X, Y)(X,Y) 的分布为
P(Shit1)=P(∣X∣≤L/2,∣Y∣≤W/2,Z<150)=P(∣X∣≤L/2)P(∣Y∣≤W/2)P(Z<150)
P(S_{hit1}) = P(|X| \leq L/2, |Y| \leq W/2, Z < 150) = P(|X| \leq L/2) P(|Y| \leq W/2) P(Z < 150)
P(Shit1)=P(∣X∣≤L/2,∣Y∣≤W/2,Z<150)=P(∣X∣≤L/2)P(∣Y∣≤W/2)P(Z<150)
其中 P(Z<150)P(Z < 150)P(Z<150) 可以通过计算
P(Z<150)=Φ(150−150σz)=0.5 P(Z < 150) = \Phi\left(\frac{150 - 150}{\sigma_z}\right) = 0.5 P(Z<150)=Φ(σz150−150)=0.5
(2) 对于条件 Shit2S_{hit2}Shit2:
该条件下,引爆深度 heh_ehe 在 [150,150+Rs][150, 150+R_s][150,150+Rs] 之间,同时潜艇在杀伤半径内。
P(Shit2)=P(∣X∣≤L/2)P(∣Y∣≤W/2)P(he−Rs<Z<he)=P(he−Rs<Z<he) P(S_{hit2}) = P(|X| \leq L/2) P(|Y| \leq W/2) P(h_e - R_s < Z < h_e) = P(h_e - R_s < Z < h_e) P(Shit2)=P(∣X∣≤L/2)P(∣Y∣≤W/2)P(he−Rs<Z<he)=P(he−Rs<Z<he)
(3) 对于条件 Shit3S_{hit3}Shit3:
该条件下,深弹落点 (X,Y)(X, Y)(X,Y) 不在潜艇边界外,但引爆深度仍在 [150,+∞)[150, +\infty)[150,+∞) 之间。计算方法类似。
针对问题 2,我们需要推导深弹击中潜艇的命中概率表达式,并考虑潜艇各方向定位误差的情况。
1. 命中条件
根据题目,深弹命中潜艇需要满足以下条件:
- 深弹的落点在潜艇的平面范围内,并且深弹的引爆深度符合潜艇的实际深度。
潜艇的尺寸为长 100 m,宽 20 m,高 25 m,因此其中心位置的平面范围为:
- 水平坐标范围:[−50,50]×[−10,10][-50, 50] \times [-10, 10][−50,50]×[−10,10]
而潜艇实际深度的范围为 [120,+∞)[120, +\infty)[120,+∞)。
2. 定义随机变量
根据题意,潜艇的水平坐标 (X,Y)(X, Y)(X,Y) 和深度 ZZZ 存在误差:
- 水平坐标:X∼N(0,σ2)X \sim N(0, \sigma^2)X∼N(0,σ2), Y∼N(0,σ2)Y \sim N(0, \sigma^2)Y∼N(0,σ2)
- 深度:Z∼N(h0,σz2)Z \sim N(h_0, \sigma_z^2)Z∼N(h0,σz2),并且 ZZZ 被截尾在 [l,+∞)[l, +\infty)[l,+∞) 处,其中 h0=150h_0 = 150h0=150 m,σz=40\sigma_z = 40σz=40 m,l=120l = 120l=120 m。
3. 准备命中概率表达式
对于投弹落点 (x,y)(x, y)(x,y) 和引爆深度 ddd,命中条件为:
- ∣X∣≤50|X| \leq 50∣X∣≤50 m 且 ∣Y∣≤10|Y| \leq 10∣Y∣≤10 m
- 深度条件:d∈[Z,Z+25]d \in [Z, Z + 25]d∈[Z,Z+25]
- 因为潜艇的下表面为 ZZZ,上表面为 Z+25Z + 25Z+25。
我们可以计算这两个条件的几率。
4. 计算命中概率
第一部分:水平坐标命中概率
- 水平坐标 (X,Y)(X, Y)(X,Y) 命中概率为:
P(∣X∣≤50,∣Y∣≤10)=P(∣X∣≤50)⋅P(∣Y∣≤10) P(|X| \leq 50, |Y| \leq 10) = P(|X| \leq 50) \cdot P(|Y| \leq 10) P(∣X∣≤50,∣Y∣≤10)=P(∣X∣≤50)⋅P(∣Y∣≤10)
由于 XXX 和 YYY 服从独立的正态分布,可以通过计算正态累积分布函数得到:
P(∣X∣≤50)=2Φ(50σ)−1 P(|X| \leq 50) = 2 \Phi\left(\frac{50}{\sigma}\right) - 1 P(∣X∣≤50)=2Φ(σ50)−1
P(∣Y∣≤10)=2Φ(10σ)−1 P(|Y| \leq 10) = 2 \Phi\left(\frac{10}{\sigma}\right) - 1 P(∣Y∣≤10)=2Φ(σ10)−1
因此,水平坐标命中概率为:
PXY=(2Φ(50σ)−1)(2Φ(10σ)−1) P_{XY} = \left(2 \Phi\left(\frac{50}{\sigma}\right) - 1\right) \left(2 \Phi\left(\frac{10}{\sigma}\right) - 1\right) PXY=(2Φ(σ50)−1)(2Φ(σ10)−1)
第二部分:深度命中概率
深度命中概率需要考虑引爆深度 ddd 以及潜艇实际深度 ZZZ:
我们要求 Z≤d≤Z+25Z \leq d \leq Z + 25Z≤d≤Z+25 中 ddd 的最优选择使得命中概率最大,因此:
P(Z≤d≤Z+25)=P(Z≤d)−P(Z≥d+25) P(Z \leq d \leq Z + 25) = P(Z \leq d) - P(Z \geq d + 25) P(Z≤d≤Z+25)=P(Z≤d)−P(Z≥d+25)
利用正态分布可以得到:
P(Z≤d)=Φ(d−h0σz) P(Z \leq d) = \Phi\left(\frac{d - h_0}{\sigma_z}\right) P(Z≤d)=Φ(σzd−h0)
P(Z≥d+25)=1−Φ(d+25−h0σz) P(Z \geq d + 25) = 1 - \Phi\left(\frac{d + 25 - h_0}{\sigma_z}\right) P(Z≥d+25)=1−Φ(σzd+25−h0)
因此,深度命中概率为:
PZ=Φ(d−h0σz)−(1−Φ(d+25−h0σz)) P_{Z} = \Phi\left(\frac{d - h_0}{\sigma_z}\right) - \left(1 - \Phi\left(\frac{d + 25 - h_0}{\sigma_z}\right)\right) PZ=Φ(σzd−h0)−(1−Φ(σzd+25−h0))
5. 结合命中概率
综合水平坐标和深度的命中概率,最终得出投弹的命中概率表达式为:
Phit(d)=PXY⋅PZ P_{\text{hit}}(d) = P_{XY} \cdot P_{Z} Phit(d)=PXY⋅PZ
在最优引爆深度 ddd 的选择上,可以通过数值分析方法找到使得命中概率 Phit(d)P_{\text{hit}}(d)Phit(d) 最大的深度。
妙解
在问题 2 中,潜艇中心位置的三个坐标(XXX,YYY,ZZZ)均存在误差,且其分布情况如下:
- 水平坐标 XXX 和 YYY 均服从正态分布 N(0,σ2)N(0, \sigma^2)N(0,σ2),其中 σ=120 m\sigma = 120 \, mσ=120m。
- 深度坐标 ZZZ 服从单边截尾正态分布 N(h0,σz2,l)N(h_0, \sigma_z^2, l)N(h0,σz2,l),其中 h0=150 mh_0 = 150 \, mh0=150m, σz=40 m\sigma_z = 40 \, mσz=40m, 和 l=120 ml = 120 \, ml=120m。
为了计算投弹的命中概率,我们需要分析深弹的落点以及它是否能够命中潜艇。
假设深弹的落点为 (Xf,Yf)(X_f, Y_f)(Xf,Yf),我们有:
- 深弹的杀伤半径 R=20 mR = 20 \, mR=20m。
- 潜艇的尺寸为长 L=100 mL = 100 \, mL=100m,宽 W=20 mW = 20 \, mW=20m。
我们计算命中的条件:
情形一:触发引信引爆
- 深弹落点 (Xf,Yf)(X_f, Y_f)(Xf,Yf) 在潜艇的平面范围内,即满足:
∣Xf∣≤L2且∣Yf∣≤W2 |X_f| \leq \frac{L}{2} \quad \text{且} \quad |Y_f| \leq \frac{W}{2} ∣Xf∣≤2L且∣Yf∣≤2W - 引爆深度 ZfZ_fZf 需要在潜艇上表面下方,即 Zf<Z+H2Z_f < Z + \frac{H}{2}Zf<Z+2H,其中 H=25 mH = 25 \, mH=25m 为潜艇高度。因此使用触发引信引爆的条件为:
Zf<Z+12.5 Z_f < Z + 12.5 Zf<Z+12.5
情形二:定深引信引爆
- 深弹落点在潜艇的范围内,即同样满足上面的条件。
- 此时 ZfZ_fZf 需要在潜艇上表面上方,并且潜艇在深弹的杀伤范围内,即满足:
Zf>Z−H2且∣Xf∣2+∣Yf∣2≤R2 Z_f > Z - \frac{H}{2} \quad \text{且} \quad |X_f|^2 + |Y_f|^2 \leq R^2 Zf>Z−2H且∣Xf∣2+∣Yf∣2≤R2
情形三:越界引信引爆
- 深弹落点不在潜艇的范围内满足:
∣Xf∣>L2或∣Yf∣>W2 |X_f| > \frac{L}{2} \quad \text{或} \quad |Y_f| > \frac{W}{2} ∣Xf∣>2L或∣Yf∣>2W - 引爆深度为定值且需满足潜艇在杀伤范围内:
∣Xf∣2+∣Yf∣2≤R2 |X_f|^2 + |Y_f|^2 \leq R^2 ∣Xf∣2+∣Yf∣2≤R2
接下来,统计学地,对于每一种情形我们需要计算命中概率。
投弹命中概率
根据分布,我们可以表示命中概率为 PhitP_{hit}Phit:
设 Phit,1P_{hit,1}Phit,1 为情形一的命中概率,Phit,2P_{hit,2}Phit,2 为情形二的命中概率,Phit,3P_{hit,3}Phit,3 为情形三的命中概率:
Phit=Phit,1+Phit,2+Phit,3 P_{hit} = P_{hit,1} + P_{hit,2} + P_{hit,3} Phit=Phit,1+Phit,2+Phit,3
根据以上条件,我们可以通过概率密度函数计算概率:
-
对于Phit,1P_{hit,1}Phit,1 和 Phit,2P_{hit,2}Phit,2,需要结合水平坐标和深度的分布进行积分计算,即:
Phit,1=∫−L2L2∫−W2W2P(Zf<Z+12.5) dYf dXf P_{hit,1} = \int_{-\frac{L}{2}}^{\frac{L}{2}} \int_{-\frac{W}{2}}^{\frac{W}{2}} P(Z_f < Z + 12.5) \, dY_f \, dX_f Phit,1=∫−2L2L∫−2W2WP(Zf<Z+12.5)dYfdXf
Phit,2=∫−L2L2∫−W2W2P(Zf>Z−12.5 ∣ ∣Xf∣2+∣Yf∣2≤R2) dYf dXf P_{hit,2} = \int_{-\frac{L}{2}}^{\frac{L}{2}} \int_{-\frac{W}{2}}^{\frac{W}{2}} P(Z_f > Z - 12.5 \, | \, |X_f|^2 + |Y_f|^2 \leq R^2) \, dY_f \, dX_f Phit,2=∫−2L2L∫−2W2WP(Zf>Z−12.5∣∣Xf∣2+∣Yf∣2≤R2)dYfdXf -
对于Phit,3P_{hit,3}Phit,3:
Phit,3=∫∣Xf∣>L2∪∣Yf∣>W2P(∣Xf∣2+∣Yf∣2≤R2) dYf dXf P_{hit,3} = \int_{|X_f| > \frac{L}{2} \cup |Y_f| > \frac{W}{2}} P(|X_f|^2 + |Y_f|^2 \leq R^2) \, dY_f \, dX_f Phit,3=∫∣Xf∣>2L∪∣Yf∣>2WP(∣Xf∣2+∣Yf∣2≤R2)dYfdXf
命中概率的计算
我们分别计算三种情形的命中概率,首先假设目标位置 (Xf,Yf,Zf)(X_f, Y_f, Z_f)(Xf,Yf,Zf) 服从高斯分布:
Xf∼N(0,σx2),Yf∼N(0,σy2),Zf∼N(Z,σz2) X_f \sim N(0, \sigma_x^2), \quad Y_f \sim N(0, \sigma_y^2), \quad Z_f \sim N(Z, \sigma_z^2) Xf∼N(0,σx2),Yf∼N(0,σy2),Zf∼N(Z,σz2)
这里,σx,σy,σz\sigma_x, \sigma_y, \sigma_zσx,σy,σz 分别是水平方向和深度方向的标准差。然后通过概率密度函数,使用数值积分来计算每个条件下的命中概率:
-
情形一 (触发引信引爆):
触发引信命中概率 Phit,1P_{hit,1}Phit,1 是深度 ZfZ_fZf 在潜艇上方一定范围内的概率:
Phit,1=∫−L2L2∫−W2W2Φ(Z+12.5−Zfσz) dYf dXf P_{hit,1} = \int_{-\frac{L}{2}}^{\frac{L}{2}} \int_{-\frac{W}{2}}^{\frac{W}{2}} \Phi\left( \frac{Z + 12.5 - Z_f}{\sigma_z} \right) \, dY_f \, dX_f Phit,1=∫−2L2L∫−2W2WΦ(σzZ+12.5−Zf)dYfdXf -
情形二 (定深引信引爆):
定深引信的命中概率 Phit,2P_{hit,2}Phit,2 需考虑 Zf>Z−12.5Z_f > Z - 12.5Zf>Z−12.5 且潜艇位于杀伤范围内:
Phit,2=∫−L2L2∫−W2W2Φ(Zf−(Z−12.5)σz)I(∣Xf∣2+∣Yf∣2≤R2) dYf dXf P_{hit,2} = \int_{-\frac{L}{2}}^{\frac{L}{2}} \int_{-\frac{W}{2}}^{\frac{W}{2}} \Phi\left( \frac{Z_f - (Z - 12.5)}{\sigma_z} \right) I\left( |X_f|^2 + |Y_f|^2 \leq R^2 \right) \, dY_f \, dX_f Phit,2=∫−2L2L∫−2W2WΦ(σzZf−(Z−12.5))I(∣Xf∣2+∣Yf∣2≤R2)dYfdXf -
情形三 (越界引信引爆):
越界引爆的概率 Phit,3P_{hit,3}Phit,3 表示潜艇不在范围内但依然受到打击的概率:
Phit,3=∫L2∞∫W2∞Φ(Zf−Zσz)I(∣Xf∣2+∣Yf∣2≤R2) dYf dXf P_{hit,3} = \int_{\frac{L}{2}}^{\infty} \int_{\frac{W}{2}}^{\infty} \Phi\left( \frac{Z_f - Z}{\sigma_z} \right) I\left( |X_f|^2 + |Y_f|^2 \leq R^2 \right) \, dY_f \, dX_f Phit,3=∫2L∞∫2W∞Φ(σzZf−Z)I(∣Xf∣2+∣Yf∣2≤R2)dYfdXf
总结
根据以上积分公式,我们可以计算三种情形下的命中概率,并最终得到总命中概率 PhitP_{hit}Phit。
import numpy as np
from scipy.stats import norm
# Constants
length_submarine = 100 # Length of the submarine (m)
width_submarine = 20 # Width of the submarine (m)
depth_submarine = 25 # Height of the submarine (m)
kill_radius = 20 # Kill radius of the bomb (m)
mean_depth = 150 # Mean depth (m)
std_dev_x = 120 # Standard deviation for X (m)
std_dev_y = 120 # Standard deviation for Y (m)
std_dev_z = 40 # Standard deviation for Z (m)
min_depth = 120 # Minimum actual depth (m)
def hit_probability(x, y, z_depth, kill_radius):
# Define the submarine's effective area
x_range = (0, width_submarine)
y_range = (0, length_submarine)
# Define possible explosion depths
z_explode = z_depth # the depth set by the user
# Check conditions for hit (touching the submarine)
if z_explode >= 0 and z_explode <= depth_submarine:
if (x_range[0] <= x <= x_range[1]) and (y_range[0] <= y <= y_range[1]):
return 1 # Trigger explosion directly above submarine
# Check underwater hit conditions with radius
if z_explode > depth_submarine:
if (x_range[0] <= x <= x_range[1]) and (y_range[0] <= y <= y_range[1]):
return 1 if (z_explode - depth_submarine) <= kill_radius else 0
elif z_explode < depth_submarine and (z_explode >= min_depth):
if ((x_range[0] <= x <= x_range[1]) and (y_range[0] <= y <= y_range[1])):
return 1 if (depth_submarine - z_explode) <= kill_radius else 0
# Checking the direct hit based on the distance from the edges of the submarine area
distance_to_submarine = np.sqrt(x**2 + y**2)
if (distance_to_submarine <= kill_radius):
return 1
return 0
def design_depth():
max_prob = 0
best_depth = 0
depth_range = np.arange(min_depth, 200, 0.1) # Explore depth from min_depth to some reasonable max depth
for z_explode in depth_range:
# Calculate the probability of falling at (0,0,z_explode)
prob_hit = 0
for x in np.linspace(-length_submarine/2, length_submarine/2, num=100):
for y in np.linspace(-width_submarine/2, width_submarine/2, num=100):
prob_hit += (hit_probability(x, y, z_explode, kill_radius) *
(1/(2 * np.pi * std_dev_x * std_dev_y) *
np.exp(-((x**2)/(2 * std_dev_x**2) + (y**2)/(2 * std_dev_y**2)))))
#见完整版
问题三
在给定条件下,一架反潜飞机可携带9枚航空深弹,所有深弹的定深引信引爆深度均相同,投弹落点在平面上呈阵列形状。针对问题2的参数(潜艇中心位置的深度定位值为150 m,深度标准差𝜎𝑧=40 m,潜艇中心位置实际深度的最小值为120 m,其他参数与问题1相同),设计投弹方案,包括以下内容:
- 定深引信引爆深度:选择一个合适的引爆深度以最大化命中概率。
- 投弹落点之间的平面间隔:确定深弹在水平面上落点的排列方式和间隔。
目标是最大化至少一枚深弹命中潜艇的概率。简而言之,该问题是关于多枚深弹协同投掷的概率设计与优化。
为了最大化至少一枚深弹命中潜艇的概率,我们可以进行如下建模和设计。
1. 问题设定与符号定义
根据问题描述,我们对相关参数进行定义:
- 潜艇的长、宽、高分别为 L=100 mL = 100\,mL=100m,W=20 mW = 20\,mW=20m,H=25 mH = 25\,mH=25m。
- 潜艇的深度定位值 h0=150 mh_0 = 150\,mh0=150m,深度标准差 σz=40 m\sigma_z = 40\,mσz=40m,深度最小值 l=120 ml = 120\,ml=120m。
- 深弹的杀伤半径 R=20 mR = 20\,mR=20m。
- 投掷的深弹数量 N=9N = 9N=9。
- 投弹落点的水平间隔为 ddd,在水平面上呈阵列形状。
2. 确定定深引信引爆深度
为了选择一个合适的引爆深度 hbh_bhb,首先考虑深度定位误差的影响,可以使用深度坐标的概率密度函数来进行分析。
深度 ZZZ 服从以下单边截尾正态分布:
fh0,σz,l(z)=1σz⋅ϕ(z−h0σz)⋅11−Φ(l−h0σz),(l<z<+∞) f_{h_0, \sigma_z, l}(z) = \frac{1}{\sigma_z} \cdot \phi\left(\frac{z - h_0}{\sigma_z}\right) \cdot \frac{1}{1 - \Phi\left(\frac{l - h_0}{\sigma_z}\right)}, \quad (l < z < +\infty) fh0,σz,l(z)=σz1⋅ϕ(σzz−h0)⋅1−Φ(σzl−h0)1,(l<z<+∞)
为了最大化命中概率,定深引信引爆深度应该设定在潜艇上表面以下一段距离 HHH,即 hb=h0−Hh_b = h_0 - Hhb=h0−H,而 HHH 的选择会影响到引爆深度与潜艇下表面以及深弹杀伤半径的关系。
3. 命中概率模型
命中条件如下:
- 如果深弹落点在潜艇的水平投影范围内,并且引爆深度在潜艇上表面的下方,则触发引信。
- 如果深弹落点在潜艇的水平投影范围内,并且引爆深度在潜艇上表面的上方且潜艇在深弹的杀伤范围内,则定深引信触发。
- 如果深弹落点在潜艇的水平投影范围外,则必须满足当引爆深度为 hbh_bhb 时潜艇在杀伤范围内。
考虑深弹阵列分布的特点,对于同一引爆深度hbh_bhb,每个深弹的落点在水平面上的相对位置可以通过一个子区域来进行分析。假设落点在一个二维平面上呈 3×33 \times 33×3 的阵列,即 ddd 为深弹间隔。
4. 计算单颗深弹命中概率
单颗深弹命中的概率 PhP_hPh 可以由以下几点组成:
- 计算潜艇在 hbh_bhb 位置的上表面和下表面与投掷深弹的关系
- 计算 ZZZ 在 hbh_bhb 和杀伤半径 RRR的交互影响
设定潜艇上表面深度为 htop=h0+Hh_{top} = h_0 + Hhtop=h0+H,下表面深度为 hbottom=h0−Hh_{bottom} = h_0 - Hhbottom=h0−H。
命中概率将会作为多个独立事件的组合来进行考虑。综合考虑后,命中概率可以用组合的形式表示,即至少有一颗深弹命中:
Phit=1−(1−Ph)N P_{hit} = 1 - (1 - P_h)^{N} Phit=1−(1−Ph)N
其中,PhP_hPh 表示单颗深弹的命中概率。
5. 最大化命中概率的参数选择
接下来,我们可以最大化此命中概率PhitP_{hit}Phit对HHH和ddd的函数。
我们可以通过数值模拟的方法选取合适的 HHH 和 ddd,以在实际的环境参数下验证并确定最优位置与间隔。
6. 数值计算与模拟
通过计算并模拟不同的引爆深度与间隔,我们可以绘制出图像表现 PhitP_{hit}Phit,并通过计算确定最优的数组参数,从而实现最大化至少一枚深弹命中潜艇的概率。
因此,这个问题的关键是选择定义的引爆深度hbh_bhb 和投弹落点的间隔ddd,这使得设计在实际环境下实现预期效果。利用
为了设计投弹方案以提高深弹的命中概率,我们可以采用以下步骤来分析并求解第三个问题。
问题分析
假设投放9枚深弹,所有深弹的定深引信引爆深度相同,并且投弹落点在水平面上呈阵列分布。我们已经有潜艇的相关参数,具体分析如下:
- 深桶的尺寸:潜艇的长、宽、高分别为100 m、20 m和25 m。
- 潜艇的深度定位值:150 m。
- 深度标准差:40 m。
- 潜艇的实际深度最小值:120 m。
- 深弹的杀伤半径:20 m。
投弹设计
1. 定深引信引爆深度
为了最大化命中概率,定深引信引爆深度的选择至关重要。设定引爆深度为hdh_dhd,该深度需要尽量靠近潜艇的实际深度,考虑到潜艇实际深度的分布。潜艇实际深度ZZZ服从截尾正态分布:
- 期望深度:μz=150\mu_z = 150μz=150 m
- 标准差σz=40σ_z = 40σz=40 m
- 最小深度l=120l = 120l=120 m
潜艇实际深度的分布为N(μz,σz2)N(\mu_z, \sigma_z^2)N(μz,σz2),但是在深度小于120 m的情况下需要截尾,所以我们可以使用调整的规则来选择hdh_dhd。
根据以上分析,建议选择定深引信引爆深度为hd=140h_d = 140hd=140 m。选择此深度的原因主要基于以下几点:
- 在120<Z<150120 < Z < 150120<Z<150范围内,增加命中概率,兼顾到潜艇潜伏深度的可能性。
- 由于深度波动性较大,设定在140 m使得引爆深度与期望深度的偏差最小。
2. 投弹落点之间的平面间隔
投挡落点的平面分布设计同样重要。设定9个投弹落点呈 3×33 \times 33×3 的阵列布局,每个落点之间的平面间隔DDD需要合理设置,目的是确保至少一枚深弹进入潜艇的杀伤区。
为了判断落点间隔DDD,考虑如下参数:
- 潜艇的宽度:20 m
- 杀伤半径:20 m
根据潜艇的宽度以及深弹的杀伤半径,推荐的深弹落点之间的间隔可以考虑为 DDD:
D=20 m−r D = 20 \text{ m} - r D=20 m−r
这里rrr是对潜艇宽度的一个安全余量,假设r=5r=5r=5 m,因此:
D=20−5=15 m D = 20 - 5 = 15 \text{ m} D=20−5=15 m
最终的落点阵列之间的间隔可以设置为D=15D = 15D=15 m。这样的设计可以保证即便潜艇在某一方向移动,某一落点仍能覆盖潜艇的整个宽度。
最终设计方案
综上所述,为了使至少一枚深弹命中潜艇,我们可以设计如下方案:
- 定深引信引爆深度:hd=140 mh_d = 140 \text{ m}hd=140 m
- 投弹落点之间的平面间隔:D=15 mD = 15 \text{ m}D=15 m
这种设计能够有效地提高命中潜艇的概率,并且在潜艇的可能变动中,仍持有一定的打击能力。
为了解决第三个问题,我们需要首先设定定深引信引爆深度和投弹落点之间的平面间隔。我们的目标是最大化至少一枚深弹命中潜艇的概率。
1. 定深引信引爆深度的选择
我们已知潜艇中心位置的深度定位值为h0=150h_0 = 150h0=150 m,深度标准差为σz=40\sigma_z = 40σz=40 m,潜艇中心位置实际深度的最小值为l=120l = 120l=120 m。根据问题描述,潜艇的上下表面高度分别为:
- 上表面:htop=h0+252=150+12.5=162.5h_{top} = h_0 + \frac{25}{2} = 150 + 12.5 = 162.5htop=h0+225=150+12.5=162.5 m
- 下表面:hbottom=h0−252=150−12.5=137.5h_{bottom} = h_0 - \frac{25}{2} = 150 - 12.5 = 137.5hbottom=h0−225=150−12.5=137.5 m
我们要选择一个引爆深度hdeth_{det}hdet。根据引爆条件,为了使得命中概率最大,我们可以选为潜艇的下表面深度,例如机动引信引爆深度hdet=hbottom=137.5h_{det} = h_{bottom} = 137.5hdet=hbottom=137.5 m。这样,触发引信可以触发在下表面以下的任意深度,在此深度之上能够覆盖到潜艇的可命中空间。
2. 投弹落点之间的平面间隔的设计
我们考虑在水平面上呈阵列排列9枚深弹。为了简化问题,我们假定投弹落点以一个3×33\times33×3的方阵布置。令每个落点之间的间隔为ddd m。假设深弹的杀伤半径R=20R = 20R=20 m,潜艇的平面投影为长100100100 m,宽202020 m。
为了确保深弹能覆盖到潜艇的整个区域,我们设置(i,j)(i, j)(i,j)考虑:
Xi=(−k+i⋅d)for i=0,1,2 (三种落点)Yj=(−k+j⋅d)for j=0,1,2 (三种落点) \begin{align*} X_i & = (-k + i \cdot d) \quad \text{for } i = 0, 1, 2 \text{ (三种落点)} \\ Y_j & = (-k + j \cdot d) \quad \text{for } j = 0, 1, 2 \text{ (三种落点)} \end{align*} XiYj=(−k+i⋅d)for i=0,1,2 (三种落点)=(−k+j⋅d)for j=0,1,2 (三种落点)
为确保至少一枚深弹能覆盖潜艇,边缘条件表述如下:
∣X∣≤50和∣Y∣≤10(潜艇平面范围)
|X| \leq 50 \quad \text{和} \quad |Y| \leq 10 \quad \text{(潜艇平面范围)}
∣X∣≤50和∣Y∣≤10(潜艇平面范围)
每个深弹的命中概率可以用下列公式表示:
Phit=P(深弹落点在潜艇外∩命中)+P(深弹落点在潜艇内∩触发引信)+P(深弹落点在潜艇外∩定深引信) P_{hit} = P(\text{深弹落点在潜艇外} \cap \text{命中}) + P(\text{深弹落点在潜艇内} \cap \text{触发引信}) + P(\text{深弹落点在潜艇外} \cap \text{定深引信}) Phit=P(深弹落点在潜艇外∩命中)+P(深弹落点在潜艇内∩触发引信)+P(深弹落点在潜艇外∩定深引信)
3. 最大化深弹累计命中概率
由于我们需要最大化至少一枚深弹命中潜艇的概率,即:
Pat least one hit=1−P(no hits)=1−(1−Phit)N P_{\text{at least one hit}} = 1 - P(\text{no hits}) = 1 - (1 - P_{hit})^N Pat least one hit=1−P(no hits)=1−(1−Phit)N
其中N=9N = 9N=9, 为投掷的深弹数量。
将上述命中概率结合到具体的统计分布中,关于每个深弹落点的XXX和YYY坐标应使用标准正态分布的CDF Φ(x)\Phi(x)Φ(x) 和PDF ϕ(x)\phi(x)ϕ(x)来计算,最终得出每个深弹的命中概率。在具体选取参数ddd时,可以通过仿真方法找到最优解,从而实现对9枚深弹落点的最佳布置。
结合数值仿真和分析方法进行迭代调整,使得最终的阵列间隔ddd和引爆深度hdeth_{det}hdet能够实现最大化命中概率的设计方案。
以下是针对第三个问题的Python代码,旨在设计投弹方案,以增强杀伤效果并最大化至少一枚深弹命中潜艇的概率。代码中包括选定引爆深度和计算平面落点之间的间隔,模拟深弹命中概率。
import numpy as np
import scipy.stats as stats
# 基本参数
submarine_length = 100 # 潜艇长度 (m)
submarine_width = 20 # 潜艇宽度 (m)
submarine_height = 25 # 潜艇高度 (m)
submarine_center_depth = 150 # 潜艇中心深度 (m)
sigma_z = 40 # 深度标准差 (m)
min_depth = 120 # 最小深度 (m)
kill_radius = 20 # 杀伤半径 (m)
num_bombs = 9 # 投放深弹数量
spacing = np.linspace(-30, 30, 3) # 深弹落点之间的间隔, 可以调整
# 根据潜艇的实际位置和深度计算命中概率
def hit_probability(x_target, y_target, depth_trigger, spacing):
# 水平坐标的定位误差
x_loc = np.random.normal(0, 120, 100000) # 状态分布
y_loc = np.random.normal(0, 120, 100000) # 状态分布
# 深度定位误差,考虑截尾正态分布
z_loc = np.random.normal(submarine_center_depth, sigma_z, 100000)
z_loc = np.clip(z_loc, min_depth, None) # 截尾
# 计算命中情况
hits = 0
for x in range(num_bombs):
for y in range(num_bombs):
x_bomb = x * spacing[1] + spacing[0] # 基于间隔配置的落点
y_bomb = y * spacing[2] + spacing[0]
for z in z_loc:
if abs(x_bomb - x_target) <= submarine_length / 2 and \
abs(y_bomb - y_target) <= submarine_width / 2:
if depth_trigger <= z: # 引爆在潜艇上方
distance = np.sqrt((x_bomb - x_target) ** 2 + (y_bomb - y_target) ** 2)
if distance <= kill_radius:
hits += 1
return hits / (100000 * (num_bombs ** 2))
# 寻找最优投弹深度与间隔
best_probability = 0
best_depth = None
best_spacing = None
#见完整版
代码说明:
- 引爆深度和间隔配置:可以根据需要调整
spacing
的范围和数量。此代码示例使用简单的间隔。 - 目标函数:
hit_probability
函数根据给定的投弹落点和引爆深度,模拟深弹命中潜艇的概率,考虑了随机误差。 - 最优解寻求:通过遍历引爆深度和间隔,寻找最大的命中概率,最终结果通过打印输出。
更多内容具体可以看看我的下方的名片!里面包含有国赛一手资料与分析!
另外在赛中,我们也会陪大家一起解析国赛的一些方向
关注 CS数模 团队,数模不迷路~