数学建模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 一、导…...
CSS 嵌套语法最佳实践:从入门到精通的完整指南
CSS 嵌套语法最佳实践:从入门到精通的完整指南 CSS 是流动的韵律,JS 是叙事的节奏。而 CSS 嵌套,是让这份韵律更加优雅、结构更加清晰的魔法。 一、CSS 嵌套:现代样式表的革命 CSS 嵌套(Nesting)是 CSS 原…...
VideoAgentTrek-ScreenFilter低光照与高对比度场景处理效果突破
VideoAgentTrek-ScreenFilter低光照与高对比度场景处理效果突破 不知道你有没有过这样的经历:在昏暗的房间里看手机,屏幕上的内容因为反光变得一片模糊;或者看一个明暗对比特别强烈的视频,亮的地方刺眼,暗的地方又黑得…...
双冗余链路实现(2/2期)
目录 拓扑: 基础需求: 出口路由器(双路): 静态路由: 防火墙配置: 全区域互通透传: 静态路由: 冗余备份: 核心交换机: 静态路由ÿ…...
【单片机实战】中断服务程序编写精要:从现场保护到中断返回
1. 中断服务程序的核心作用与基本结构 第一次接触单片机中断时,我盯着开发板上的按键发愣——明明没有循环检测IO口状态,按下按键却能立即触发LED亮灭。这种"随叫随到"的响应机制,就是中断服务程序(ISR)的魔…...
3分钟零基础入门:GPU加速MediaPipe TouchDesigner插件完整指南
3分钟零基础入门:GPU加速MediaPipe TouchDesigner插件完整指南 【免费下载链接】mediapipe-touchdesigner GPU Accelerated MediaPipe Plugin for TouchDesigner 项目地址: https://gitcode.com/gh_mirrors/me/mediapipe-touchdesigner 你是否曾想过在TouchD…...
all-MiniLM-L6-v2入门必读:轻量级Embedding模型选型、部署与评估全流程
all-MiniLM-L6-v2入门必读:轻量级Embedding模型选型、部署与评估全流程 想找一个又快又小的文本嵌入模型,但又担心效果不好?很多开发者在做语义搜索、文本分类或者智能问答时,都会遇到这个难题。大模型效果好但太慢,小…...
智能缓存加速:重新定义扩散模型推理效率
智能缓存加速:重新定义扩散模型推理效率 【免费下载链接】ComfyUI-TeaCache 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-TeaCache 在AI创作领域,等待成为最大的创作阻力。当你使用扩散模型生成图像或视频时,是否曾因漫长的…...
CosyVoice-300M Lite实战案例:在线教育语音课件生成系统
CosyVoice-300M Lite实战案例:在线教育语音课件生成系统 1. 为什么在线教育需要专属语音合成系统? 你有没有遇到过这样的场景:一位初中物理老师想为“浮力原理”这节课制作配套音频讲解,但反复试了三款主流TTS工具——要么普通话…...
Claude Code 命令行参数实践指南
前言 很多人第一次打开 Claude Code,只会输入 claude,然后开始聊天。这当然可以,但就像开车只会踩油门一样——你根本没用上方向盘和变速箱。 命令行参数(CLI Flags)就是那些被忽视的"方向盘"。掌握它们&a…...
零基础玩转BEYOND REALITY Z-Image:手把手教你搭建高精度文生图引擎
零基础玩转BEYOND REALITY Z-Image:手把手教你搭建高精度文生图引擎 1. 引言:为什么选择BEYOND REALITY Z-Image 在当今AI图像生成领域,BEYOND REALITY Z-Image以其卓越的写实表现力脱颖而出。这款基于Z-Image-Turbo底座和BEYOND REALITY S…...
