数学建模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 一、导…...
AI Agent与Agentic AI:原理、应用、挑战与未来展望
文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...
【解密LSTM、GRU如何解决传统RNN梯度消失问题】
解密LSTM与GRU:如何让RNN变得更聪明? 在深度学习的世界里,循环神经网络(RNN)以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而,传统RNN存在的一个严重问题——梯度消失&#…...
【大模型RAG】Docker 一键部署 Milvus 完整攻略
本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...
linux 错误码总结
1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...
CSS设置元素的宽度根据其内容自动调整
width: fit-content 是 CSS 中的一个属性值,用于设置元素的宽度根据其内容自动调整,确保宽度刚好容纳内容而不会超出。 效果对比 默认情况(width: auto): 块级元素(如 <div>)会占满父容器…...
Netty从入门到进阶(二)
二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架,用于…...
[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.
ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #:…...
【深度学习新浪潮】什么是credit assignment problem?
Credit Assignment Problem(信用分配问题) 是机器学习,尤其是强化学习(RL)中的核心挑战之一,指的是如何将最终的奖励或惩罚准确地分配给导致该结果的各个中间动作或决策。在序列决策任务中,智能体执行一系列动作后获得一个最终奖励,但每个动作对最终结果的贡献程度往往…...
Unity VR/MR开发-VR开发与传统3D开发的差异
视频讲解链接:【XR马斯维】VR/MR开发与传统3D开发的差异【UnityVR/MR开发教程--入门】_哔哩哔哩_bilibili...
shell脚本质数判断
shell脚本质数判断 shell输入一个正整数,判断是否为质数(素数)shell求1-100内的质数shell求给定数组输出其中的质数 shell输入一个正整数,判断是否为质数(素数) 思路: 1:1 2:1 2 3:1 2 3 4:1 2 3 4 5:1 2 3 4 5-------> 3:2 4:2 3 5:2 3…...
