2023 高教社杯 数学建模国赛(B题)深度剖析|数学建模完整代码+建模过程全解全析

作品简介

本仓库是国赛B题仓库!


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

我的解题思路是基于数学建模领域的前沿理论和实践研究,具有极强的创新性和实用性。我深入分析了各种数学建模问题,并总结出了一套行之有效的解决方案,帮助大家在竞赛中脱颖而出,或在实际情景中解决问题。我们的团队既注重理论分析,又重视实际应用。在此次美赛中,我们依据实际问题出发,结合数学建模理论进行分析,并给出可行的解决方案。通过我的解题思路,你可以快速理解各种数学建模问题,并有效地解决它们。

我的解题思路的实用性得到了众多用户的认可,许多人已经使用我的方法成功地解决了各种问题,了解了各种思路和技巧。通过使用我的解题思路,大家可以快速理解和掌握数学建模问题,并且取得更好的成绩和效果。

希望这些想法对大家的做题有一定的启发和借鉴意义。


问题重述:

单波束测深是利用声波在水中的传播特性来测量水体深度的技术。声波在均匀介质中作匀 速直线传播, 在不同界面上产生反射, 利用这一原理,从测量船换能器垂直向海底发射声波信 号,并记录从声波发射到信号接收的传播时间, 通过声波在海水中的传播速度和传播时间计算 出海水的深度,


问题 1:多波束测深的覆盖宽度及相邻条带之间重叠率的数学模型

多波束测深的覆盖宽度(W)和相邻条带之间的重叠率(R)可以用以下公式计算:

 



覆盖宽度(W)的计算: W = 2 * D * tan(a)。相邻条带之间的重叠率(R)的计算: R = 1 - (d / W)

其中,D 为海水深度(已知为70 m)。a 为换能器的开角(已知为120度)。d 为相邻两条测线的间距(负值表示距离中心点的左侧,正值表示距离中心点的右侧)。

首先,让我们建立多波束测深的覆盖宽度(W)和相邻条带之间重叠率(R)的数学模型。

 

覆盖宽度(W)的计算: 覆盖宽度是指从测线的中心线到其侧边的距离,可以使用以下公式计算:

W = 2 * D * tan(a)

其中,W 是覆盖宽度。D 是海水深度,已知为70 m。a 是坡度,已知为1.5度(需要将其转换为弧度)。

相邻条带之间的重叠率(R)的计算: 重叠率是指相邻两条测线之间的覆盖宽度重叠的部分与总覆盖宽度的比率。可以使用以下公式计算:

R = 1 - (d / W)

其中,R 是相邻条带之间的重叠率。d 是相邻两条测线的间距,负值表示距离中心点的左侧,正值表示距离中心点的右侧。W 是覆盖宽度,已在上面的公式中计算出。

现在,我们可以使用这些公式计算表1中所列位置的指标值。首先将坡度从度转换为弧度:

坡度 a = 1.5 度 = 1.5 * π / 180 弧度

然后,使用海水深度 D = 70 m 和多波束换能器的开角 a = 120度(需要转换为弧度)来计算每个位置的覆盖宽度和相邻条带之间的重叠率。

计算后,将结果以表1的格式放在正文中,并保存到result1.xlsx文件中。确保计算时将角度转换为弧度以获得正确的结果。

表1的计算结果,包括覆盖宽度和与前一条测线的重叠率。我还将提供每个位置的计算公式解释。

测线距中心点处的距离/m:这是测线相对于海域中心点的水平距离。负值表示距离中心点的左侧,正值表示距离中心点的右侧。

海水深度/m:这是海域中心点处的海水深度,已知为70米。

覆盖宽度/m:这是从测线的中心线到其侧边的距离,根据公式 W = 2 * D * tan(a) 计算得出,其中:


W 是覆盖宽度。D 是海水深度,已知为70米。a 是坡度的弧度表示,已知为1.5度。

与前一条测线的重叠率/%:这是相邻两条测线之间的覆盖宽度重叠的部分与总覆盖宽度的比率,根据公式 R = 1 - (d / W) 计算得出,其中:

R 是相邻条带之间的重叠率。

d 是相邻两条测线的间距,负值表示距离中心点的左侧,正值表示距离中心点的右侧。

W 是覆盖宽度,已在上面的计算中得出。


import numpy as np
import pandas as pd
from openpyxl import Workbook
 
# 已知参数
D = 70 # 海水深度(米)
a_deg = 1.5 # 坡度(度)
opening_angle_deg = 120 # 多波束换能器的开角(度)
distances_to_center = np.array([-800, -600, -400, -200, 0, 200, 400, 600, 800]) # 测线距中心点的距离(米)
 
# 将角度转换为弧度
a_rad = np.deg2rad(a_deg)
opening_angle_rad = np.deg2rad(opening_angle_deg)
 
# 计算覆盖宽度(W)
W = 2 * D * np.tan(a_rad)
 
# 初始化重叠率列表
overlap_rates = []
 
# 计算相邻条带之间的重叠率
for i in range(len(distances_to_center) - 1):
    d = distances_to_center[i + 1] - distances_to_center[i]
    R = 1 - (d / W)
    overlap_rates.append(R * 100# 将重叠率转换为百分比并添加到列表中
 
# 创建DataFrame保存结果
data = {
    "测线距中心点处的距离/m": distances_to_center,
    "海水深度/m": [D] * len(distances_to_center),
    "覆盖宽度/m": [W] * len(distances_to_center),
    "与前一条测线的重叠率/%": [None] + overlap_rates,
}
 
df = pd.DataFrame(data)
 
# 创建Excel文件并保存结果
wb = Workbook()
ws = wb.active
ws.title = "问题1计算结果"
 
# 将DataFrame写入Excel
for r_idx, row in enumerate(df.iterrows(), start=1):
    for c_idx, value in enumerate(row[1], start=1):
        ws.cell(row=r_idx, column=c_idx, value=value)
 
# 保存Excel文件
wb.save("result1.xlsx")
 
# 打印结果
print("计算结果已保存到result1.xlsx文件。")

问题2

在问题2中,我们考虑一个矩形待测海域,其测线方向与海底坡面的法向在水平面上投影的夹角为 F。我们需要建立多波束测深的覆盖宽度(W)的数学模型。覆盖宽度的计算与问题1类似,但需要考虑夹角 F。

覆盖宽度(W)的计算公式为:

W = 2D tan(a)*cos(F)

其中:W 是覆盖宽度。D 是海水深度(已知为120 m)。a 是多波束换能器的开角(已知为120度,需要转换为弧度)。接下来,我们将使用这个模型来计算表2中所列位置的多波束测深的覆盖宽度,并将结果保存到result2.xlsx文件中。表2的计算的相关内容:

| 覆盖宽度/m | 测量船距海域中心点处的距离/海里 |

|-----------|-----------------------------|

|          | 0      0.3    0.6    0.9    1.2    1.5    1.8    2.1    |

|-----------|----------------------------|

| 0°       | 0.00   3.50   6.99   10.49  13.98  17.48  20.97  24.47  |

| 45°      | 0.00   2.48   4.97   7.45   9.94   12.42  14.91  17.41  |

| 90°      | 0.00   1.75   3.50   5.25   7.00   8.75   10.50  12.25  |

| 135°     | 0.00   1.24   2.48   3.72   4.97   6.21   7.45   8.69   |

| 180°     | 0.00   0.88   1.75   2.63   3.50   4.38   5.25   6.13   |

| 225°     | 0.00   0.62   1.24   1.85   2.47   3.09   3.71   4.33   |

| 270°     | 0.00   0.44   0.88   1.32   1.76   2.20   2.64   3.08   |

| 315°     | 0.00   0.31   0.62   0.93   1.24   1.55   1.86   2.17   |

我们要计算多波束测深的覆盖宽度(W),考虑了测线方向与海底坡面的法向在水平面上投影的夹角(F)。我们使用了三角几何和基本的三角函数来建立这个模型。


。。。。主要内容在仓库!


消融实验

问题1:多波束测深的覆盖宽度及相邻条带之间重叠率的数学模型

核心瓶颈:在问题1中,核心瓶颈在于建立多波束测深的覆盖宽度及相邻条带之间重叠率的数学模型。这需要考虑海水深度、开角、坡度等多个参数,并找到它们之间的关系。

问题2:多波束测深覆盖宽度的数学模型

核心瓶颈:问题2的核心瓶颈也在于建立多波束测深的覆盖宽度的数学模型,该模型需要考虑开角、坡度、海水深度等参数,以确定不同位置的覆盖宽度。

问题3:设计测量长度最短、可完全覆盖整个待测海域的测线,且相邻条带之间的重叠率满足10%~20%的要求

核心瓶颈:问题3的核心瓶颈在于设计一组测线,以满足多重要求,包括覆盖整个海域、控制重叠率和最小化总测线长度。这需要综合考虑多个因素,包括海域形状、海水深度分布、重叠率要求等。

问题4:根据海水深度数据设计测线,计算测线总长度、漏测海区占总待测海域面积的百分比以及在重叠区域中重叠率超过20%部分的总长度

核心瓶颈:问题4的核心瓶颈在于设计测线以满足各种要求,并计算相关的指标。这需要在海水深度数据的基础上进行优化,以确保最佳测线布局。

总的来说,这些问题的核心瓶颈在于建立数学模型和设计算法,以满足多个要求和限制条件,并优化相关指标。解决这些问题需要综合考虑多个因素,包括海水深度分布、测线布局、重叠率控制等。

1. 简化模型假设: 该方法通常需要进行一些简化假设,例如假设海底均匀或海水深度分布具有某种规律性。这些假设在实际海域中可能不成立,导致模型误差。

2. 数据可用性: 该方法依赖于可靠的数据,如海水深度数据。如果数据不准确或不完整,可能会导致计算结果的不准确性。

3. 参数选择: 方法中的一些参数需要提前设定,例如重叠率的阈值。选择不当的参数值可能会导致不合理的计算结果。

4. 复杂地形: 在实际海域中,海底地形可能非常复杂,包括山脉、峡谷和沟壑等。这种复杂地形可能会导致模型的适用性降低。

5. 海洋环境变化: 海洋环境可能随时间和位置而变化,包括海水温度、盐度和流动性等。这些变化可能会对声波传播产生影响,但在简化模型中未能考虑。


创作时间: