数学建模B多波束测线问题B
数学建模多波束测线问题
1.问题重述:
单波束测深是一种利用声波在水中传播的技术来测量水深的方法。它通过测量从船上发送声波到声波返回所用的时间来计算水深。然而,由于它是在单一点上连续测量的,因此数据在航迹上非常密集,但在测线之间没有数据。
多波束测深系统是在单波束测深的基础上发展起来的,它能够同时发送多个声波束,覆盖更广的区域。这意味着在海底平坦的区域,它可以测量出以测量船航线为轴线、具有一定宽度的水深区域。为了确保数据的准确性,相邻的测量区域之间需要有一定的重叠。
然而,海底地形的变化复杂,这使得如何设置测线间距成为一个挑战。如果采用平均水深来设置测线间距,可能导致在水深较浅的地方漏测,而如果采用最浅水深来设置间距,可能导致在水深较深的地方出现过多的重叠,浪费数据和时间。因此,需要建立数学模型来确定最佳的测线间距,以便在不同水深条件下实现高效而准确的测量。
2.拟定解决的问题:
问题 1: 在单波束测深中,通过发射声波并测量其传播时间来测量水体深度。数据点在测量船轨迹上密集分布,但在轨迹之间没有数据点。问题要求建立多波束测深的覆盖宽度及相邻条带之间重叠率的数学模型。
问题 2: 考虑了一个矩形的待测海域,其中海底的坡度影响着多波束测深的覆盖宽度。问题要求建立多波束测深覆盖宽度的数学模型。
问题 3: 在一个矩形海域内,需要设计一组测线,以最短的长度覆盖整个海域,同时满足相邻条带之间的重叠率要求。
问题 4: 提供了一组单波束测深数据,目标是设计一组多波束测深的测量布线。要求测线总长度尽可能短,同时覆盖整个待测海域并控制相邻条带之间的重叠率。
3.建模思路及代码、结果
3.1问题一
考虑到多波束测深的关键参数,即开角、坡度和海水深度,我们使用先前建立的数学模型来计算表1中所示位置的指标值。这些指标值包括覆盖宽度W和相邻条带之间的重叠率。为了方便参考和记录,我们将结果以表格形式嵌入到正文中,并同时保存在result1.xlsx文件中。这些计算对于确定最佳的多波束测深参数以及实现高质量的测量数据至关重要。
在建立问题1的数学模型时,我们需要考虑几个关键因素。首先,覆盖宽度W与换能器开角θ和水深D之间的关系是一个关键因素。其次,考虑到海底坡度α,我们需要确定坡度如何影响覆盖宽度W和相邻条带之间的重叠率n。
从几何学的角度来看,覆盖宽度W可以表示为:

这里,W是覆盖宽度,D是水深,θ是换能器的开角。这个公式表明,W与D和θ成正比,水深越深,开角越大,覆盖宽度就越宽。
然后,我们考虑坡度α对重叠率n的影响。重叠率n可以表示为:

其中,d是相邻两条测线的间距。这个公式表明,当d小于W时,重叠率n为负数,表示存在漏测。
为了满足便利性和数据完整性的要求,我们需要确保n保持在10%到20%之间。因此,我们可以调整参数D、θ和α,以便在不同的海底地形条件下,实现所需的重叠率范围。
考虑到声波从水面发射并在海底反射后返回,覆盖宽度W可以表示为:

其中,W是覆盖宽度,D是水深,0是换能器的开角。这个公式描述了声波传播的路径,从而确定了覆盖宽度W。水深越深或开角0越大,覆盖宽度W就越宽,因为声波需要更长的时间才能从水底反射回来,覆盖的海底区域就越广。这个公式在多波束测深中非常重要,因为它帮助确定了每次测量可以覆盖的地理区域
当考虑到海底的坡度α时,实际的覆盖宽度会受到坡度的影响。坡度会导致实际的水深有所变化,从而影响覆盖宽度。因此,当考虑坡度时,水深D应调整为D’,其中:

这个公式将原始水深D校正为实际水深D’,考虑了海底坡度的影响。坡度α越大,校正后的水深D就越大,覆盖宽度W也会受到影响。所以在多波束测深中,要考虑海底坡度对覆盖宽度的影响,以便更准确地计算覆盖区域。
因此,考虑坡度的覆盖宽度模型可以表示为:

其中,W’是考虑坡度后的实际覆盖宽度,D’是校正后的实际水深,θ是多波束换能器的开角。这个模型考虑了海底坡度对覆盖宽度的影响,可以用来计算多波束测深系统在不同条件下的覆盖宽度。
根据题目描述,重叠率n可以表示为:

其中,n表示相邻条带之间的重叠率,d是相邻两条测线的间距,W’是考虑坡度后的实际覆盖宽度。
首先,我们需要计算不同距离下的海水深度D。这可以使用以下公式来计算:

其中,D是距离测量船中心点处的海水深度,D_c是海域中心点处的海水深度(在题目中为70 m),y是距离测量船中心点的水平距离,α是坡度(在题目中为1.5°)。
这个公式考虑了坡度对海水深度的影响,因此可以用来计算不同距离下的深度D。
接下来,我们可以使用这些不同距离下的海水深度D来计算覆盖宽度W。覆盖宽度W的计算可以使用以下公式:

其中,W是覆盖宽度,D是距离测量船中心点处的海水深度,θ是多波束换能器的开角(在题目中为120°)。
这个公式考虑了海水深度和开角对覆盖宽度的影响,因此可以用来计算不同距离下的覆盖宽度W。
3.2问题二
多波束测深的覆盖宽度W可以用以下数学模型来表示:

W 表示覆盖宽度。
D’ 是根据坡度α修正后的水深.

θ 是多波束换能器的开角,根据题目描述为120°。
部分代码
% Given parameters
theta = 120; % opening angle in degrees
alpha = 1.5; % slope in degrees
center_depth = 120; % depth at the center in meters
distances = [0, 0.3, 0.6, 0.9, 1.2, 1.5, 1.8, 2.1] * 1852; % distances from the center in meters
angles = [0, 45, 90, 135, 180, 225, 270, 315]; % angles in degrees% Function to calculate depth based on the center depth and distance from the center
calculate_depth = @(center_depth, alpha, distance) center_depth - tan(deg2rad(alpha)) * distance;% Function to calculate coverage width based on depth and opening angle
calculate_width = @(depth, theta) 2 * depth * tan(deg2rad(theta / 2));% Calculate depths and coverage widths for all combinations of distances and angles
depths = calculate_depth(center_depth, alpha, distances);
widths = (calculate_width(depths, theta)') * cos(deg2rad(angles));% Replace negative values with 0
widths(widths < 0) = 0;widths
3.3问题三
3.4问题四
4.更多细节和代码(欢迎私信)
详细代码资料:https://github.com/HuaandQi/Mathematical-modeling.git
相关文章:
数学建模B多波束测线问题B
数学建模多波束测线问题 1.问题重述: 单波束测深是一种利用声波在水中传播的技术来测量水深的方法。它通过测量从船上发送声波到声波返回所用的时间来计算水深。然而,由于它是在单一点上连续测量的,因此数据在航迹上非常密集,但…...
Pytest 框架执行用例流程浅谈
背景: 根据以下简单的代码示例,我们将从源码的角度分析其中的关键加载执行步骤,对pytest整体流程架构有个初步学习。 代码示例: import pytest def test_add(): assert 1 1 2 def test_sub(): assert 2 - 1 1 通过 pytes…...
C#__资源访问冲突和死锁问题
/// 线程的资源访问冲突:多个线程同时申请一个资源,造成读写错乱。 /// 解决方案:上锁,lock{执行的程序段}:同一时刻,只允许一个线程访问该程序段。 /// 死锁问题: /// 程序中的锁过多…...
机器学习——Logistic Regression
0、前言: Logistic回归是解决分类问题的一种重要的机器学习算法模型 1、基本原理: Logistic Regression 首先是针对二分类任务提出的一种分类方法如果将概率看成一个数值属性,则二元分类问题的概率预测就可以转化为一个回归问题。这种思路最…...
创建husky规范前端项目
创建husky规范前端项目 .husky文件是一个配置文件,用于配置Git钩子。Git钩子是在Git操作时触发的脚本,可以用于自动化一些任务,比如代码格式化、代码检查、测试等。.husky文件可以指定在Git的不同操作(如commit、push等ÿ…...
深浅拷贝与赋值
数据类型 数据类型 在JavaScript中,数据类型有两大类。一类是基本数据类型,一类是引用数据类型。 基本数据类型有六种:number、string、boolean、null、undefined、symbol。 基本数据类型存放在栈中。存放在栈中的数据具有数据大小确定&a…...
bert ranking pairwise demo
下面是用bert 训练pairwise rank 的 demo import torch from torch.utils.data import DataLoader, Dataset from transformers import BertModel, BertTokenizer from sklearn.metrics import pairwise_distances_argmin_minclass PairwiseRankingDataset(Dataset):def __ini…...
GPT引领前沿与应用突破之GPT4科研实践技术与AI绘图
GPT对于每个科研人员已经成为不可或缺的辅助工具,不同的研究领域和项目具有不同的需求。例如在科研编程、绘图领域:1、编程建议和示例代码: 无论你使用的编程语言是Python、R、MATLAB还是其他语言,都可以为你提供相关的代码示例。2、数据可视…...
SpringBoot整合Swagger3
前言 swagger是啥,是干什么的,有什么用,我想在这里我就不用介绍了,下面直接代码演示。 添加依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0…...
detectron2 install path
>>> import detectron2 >>> detectron2_path detectron2.__file__ >>> print(detectron2.__file__)...
如何将DHTMLX Suite集成到Scheduler Lightbox中?让项目管理更可控!
在构建JavaScript调度器时,通常需要为最终用户提供一个他们喜欢的方式来计划事件,这是Web开发人员喜欢认可DHTMLX Scheduler的重要原因,它在这方面提供了完全的操作自由,它带有lightbox弹出窗口,允许通过各种控件动态更…...
什么是JVM常用调优策略?分别有哪些?
目录 一、JVM调优 二、堆内存大小调整 三、垃圾回收器调优 四、线程池调优 一、JVM调优 Java虚拟机(JVM)的调优主要是为了提高应用程序的性能,包括提高应用程序的响应速度和吞吐量。以下是一些常用的JVM调优策略: 堆内存大小…...
《向量数据库指南》——向量数据库Milvus Cloud 2.3的可运维性:从理论到实践
一、引言 在数据科学的大家庭中,向量数据库扮演着重要角色。它们通过独特的向量运算机制,为复杂的机器学习任务提供了高效的数据处理能力。然而,如何让这些数据库在生产环境中稳定运行,成为了运维团队的重要挑战。本文将深入探讨向量数据库的可运维性,并分享一些有趣的案…...
select多选回显问题 (取巧~)
要实现的效果: 实际上select选择框,我想要的是数组对象,但是后端返回来的是个字符串。 以下是解决方法: 以上是一种简单的解决方法~ 也可以自己处理数据或者让后端直接改成想要的格式。...
光伏并网双向计量表ADL400
安科瑞 华楠 ADL400 导轨式多功能电能表,是主要针对电力系统,工矿企业,公用设施的电能统计、 管理需求而设计的一款智能仪表,产品具有精度高、体积小、安装方便等优点。集成常见电 力参数测量及电能计量及考核管理,…...
十三、MySQL(DQL)语句执行顺序
1、DQL语句执行顺序: (1)from来决定表 # where来指定查询的条件 (2)group by指定分组 # having指定分组之后的条件 (3)select查询要返回哪些字段 (4)order by根据字段内容&#…...
【高德地图】根据经纬度多边形的绘制(可绘制区域以及任意图形)
官方示例 https://lbs.amap.com/demo/jsapi-v2/example/overlayers/polygon-draw <!doctype html> <html> <head><meta charset"utf-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name&quo…...
C++ std::pair and std::list \ std::array
std::pair<第一个数据类型, 第二个数据类型> 变量名 例如: std::pair<int, string> myPair; myPair.first;拿到第一个int变量 myPair.second拿到第二个string变量 std::pair需要引入库#include "utility" std::make_pair() 功能制作一个…...
C++的类型转换
前言 我们都知道C是兼容C语言的在C语言中存在两种方式的类型转换,分别是隐式类型转换和显示类型转换(强制类型转换),但是C觉得C语言的这套东西是够好,所以在兼容C语言的基础上又搞了一套自己的关于类型转换的东西。 目…...
【Selenium2+python】自动化unittest生成测试报告
前言 批量执行完用例后,生成的测试报告是文本形式的,不够直观,为了更好的展示测试报告,最好是生成HTML格式的。 unittest里面是不能生成html格式报告的,需要导入一个第三方的模块:HTMLTestRunner 一、导…...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...
UE5 学习系列(三)创建和移动物体
这篇博客是该系列的第三篇,是在之前两篇博客的基础上展开,主要介绍如何在操作界面中创建和拖动物体,这篇博客跟随的视频链接如下: B 站视频:s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...
视频字幕质量评估的大规模细粒度基准
大家读完觉得有帮助记得关注和点赞!!! 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用,因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型(VLMs)在字幕生成方面…...
Python如何给视频添加音频和字幕
在Python中,给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加,包括必要的代码示例和详细解释。 环境准备 在开始之前,需要安装以下Python库:…...
根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:
根据万维钢精英日课6的内容,使用AI(2025)可以参考以下方法: 四个洞见 模型已经比人聪明:以ChatGPT o3为代表的AI非常强大,能运用高级理论解释道理、引用最新学术论文,生成对顶尖科学家都有用的…...
MySQL用户和授权
开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务: test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...
USB Over IP专用硬件的5个特点
USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中,从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备(如专用硬件设备),从而消除了直接物理连接的需要。USB over IP的…...
网站指纹识别
网站指纹识别 网站的最基本组成:服务器(操作系统)、中间件(web容器)、脚本语言、数据厍 为什么要了解这些?举个例子:发现了一个文件读取漏洞,我们需要读/etc/passwd,如…...
基于Java+MySQL实现(GUI)客户管理系统
客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息,对客户进行统一管理,可以把所有客户信息录入系统,进行维护和统计功能。可通过文件的方式保存相关录入数据,对…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...
