2024年华中杯数学建模C题基于光纤传感器的平面曲线重建算法建模解题全过程文档及程序
2024年华中杯数学建模
C题 基于光纤传感器的平面曲线重建算法建模
原题再现
光纤传感技术是伴随着光纤及光通信技术发展起来的一种新型传感器技术。它是以光波为传感信号、光纤为传输载体来感知外界环境中的信号,其基本原理是当外界环境参数发生变化时,会引起光纤传感器中光波参量(如波长、相位、强度等)的变化,即外界信号变化会对光信号产生调制。光纤传感器具有质地轻、体积小、弯曲性能好,抗电磁干扰能力强,灵敏度高,易于安装使用等优点。光纤传感技术最重要的是实时获得结构实时应变信息,再通过解调出来的应变参数来重构得到结构的形变或位移。光纤传感器已在许多领域有实际应用,比如能够对结肠部位进行形状重建等。通过光纤传感器解调系统解调出来的应变信息,间接求出曲率等信息,并基于离散曲率信息对曲线进行重构。

为了便于波长测量,在生产光纤时,已在等间距位置布设好传感器,本次传感器间距为0.6米。在测量时,先在光纤水平状态(即初始状态如图1所示)测量各个传感器位置处信号的波长,然后在受到外力后(如图2所示)测量各个传感器位置处信号的波长。波长λ与曲线曲率k之间的关系近似为k=c(λ-λ0)/λ0,其中λ0是水平光纤在初始状态下测量的波长,λ是光纤在受到外力后测量的波长,c为某个常数,这里假设为4200。本次实验分别测量了两组不同初始状态下受力前后的波长值,具体数据见表1,并请解决如下问题。

问题1.请根据表1给出的波长测量数据,构建数学模型,估算平面光栅各个传感点(FBG1-FBG6)的曲率。进一步,假设初始点坐标为原点,初始的水平光纤方向为x轴,垂直方向为y轴,光纤在平面内受力后在初始位置的切线与水平方向的夹角为45o,请建立模型估算下列表格中横坐标x轴相应位置处的曲率。

问题2.请根据表1波长测量数据和问题1求出的曲率,构建数学模型,分别重构平面曲线,并分析曲线的特点。
问题3.请根据平面曲线方程y=x^3+x(0≤x≤1),以适当的等间距弧长采样,计算这些采样点的曲率。然后以采样的曲率为基础,构建数学模型,重构平面曲线,并分析重构曲线与原始曲线出现误差的原因。
整体求解过程概述(摘要)
随着光纤通信技术在人们日常生活中的进一步普及,光纤传感技术作为一种新型的传感器技术也正逐渐发展起来。光纤传感器主要依靠光波作为传输信号、光纤作为传输载体来感知外部环境信号。由于光纤传感器具有质地轻、体积小、易弯曲、灵敏度高、抗电磁能力强的优点,其在医学领域上已经得到了较为广泛的运用。因此通过传感器返回数据,获得结构实时应变信息,再通过解调出来的应变参数来重构得到结构的形变或位移对于光纤传感器的广泛运用至关重要。
本文主要研究了依据曲率进行平面曲线重构的问题。根据Frenet框架在二维条件下的简化模型,利用欧拉法、龙格-库塔法等算法实现了在已知离散点曲率的条件下完成了曲线的重构,并分析了模型在多方面上的误差。
针对问题一光纤上各点曲率的估算,本文首先论证了在给定条件下曲率与反射波长间的线性关系,并根据题目所给关系式,通过传感器读数估计曲线上特定传感点曲率依次为2.219、2.217、2.233、2.230、2.236、2.222;2.986、2.978、2.973、2.981、2.984、2.975,然后分析得到了样条插值法的优越性,借助三次样条插值法重新构建了光纤曲线,再通过该重构曲线求解特定横坐标下曲线的估计曲率值,如文中图1所示。
针对问题二根据离散点处的曲率进行曲线的重构,本文首先介绍了在三维曲线重构中广泛应用的Frenet框架,并推导出其退化至二维的一些基础算法。再利用其衍生得到的小步长欧拉法构造重构曲线。借助局部放大分析曲线类圆的特点,并绘制重构曲线的曲率图像验证该曲线类似螺旋线的走势,且保持总长相等的物理性质。得出曲线特点后本文又借助多项式拟合法再次进行曲线拟合,并将两种算法得到的曲线及曲率放在同一坐标系中对比,并无太大差异,从而证实了模型的可靠性。
针对问题三对已知三次多项式的曲率采样与曲线重构,本文首先给出了等间距弧长采样的优点和实现过程。对已知三次曲线进行采样得到图7之后又分别采取前向欧拉法、四阶龙格-库塔法以及有限差分法完成了平面曲线的重构,并从不同类型误差的角度综合分析了这三种不同算法重构曲线的效果。以此为启发本文又探究了模拟退火法在本题目中的应用及其拟合结果,其与目标曲线高度重合的结果验证了该算法的优越性。
模型假设:
(1) 本文假设波长λ和曲线曲率κ在题目考查范围内始终满足线性关系式(1),且关系式(1)中的c视作常数4200。
(2) 本文假设在对获得的离散的传感点曲率进行曲线拟合时,目标曲线应始终保持较高的平滑度,从而可以使用三次样条差分法进行基本的曲线拟合。
(3) 本文假设光纤上的传感器在水平状态和受到外力作用时都能保持稳定的等间距,且始终能保持返回该位置的波长值。
(4) 本文假设在对取样点曲率进行三次样条插值时,函数可在采样点之间用三次多项式近似表示。
问题分析:
问题一:这一问根据题目给出波长λ和曲线曲率κ之间的近似关系κ = c(λ−λ0)/λ0可将表1中各个传感器测得的波长数据转化为平面光栅各传感点的曲线曲率。针对第二小问,在给定起始点位置、方向及切线方向的情况下,本文将依据第一小问得到的各传感点曲线斜率,通过三次样条曲率插值法拟合曲线,并根据此拟合曲线估算出题目要求特定横坐标x轴相应位置曲率。
问题二:这一问需要综合考虑题目所给的各传感点波长以及第一问求得的传感点曲线曲率,构建数学模型获得光栅的平面重构曲线。本文将使用欧拉法对第一问获得的离散点曲率进行曲线重构,借助Matlab将测试1和测试2的两组拟合曲线展示在图表中,并从平滑度、趋势度、拟合度等多方面分析曲线特点。
问题三:这一问需首先对已知曲线y=x³+x进行适当的等间距弧长采样,获取多个离散曲率数据后,再基于这些数据,通过龙格-库塔法或其他算法重构一条拟合曲线。借助Matlab 工具将拟合曲线与给定曲线展示在一张图表上,观察重构曲线产生的误差并分析其产生的原因.
模型的建立与求解整体论文缩略图


全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可
部分程序代码:
%q1.根据传感器读数返回曲率值
%插值法求解特定点的曲率值
c = 4200;%定义常数c%测试1的数据
lambda_0_test1=[1529, 1529,1529,1529,1529, 1529];lambda_test1=[1529.808, 1529.807,1529.813,1529.812,1529.814,1529.809];%测试2的数据
lambda_0_test2=[1540, 1540,1540,1540,1540, 1540];lambda_test2=[1541.095, 1541.092,1541.090,1541.093,1541.094,1541.091];%传感器位置
positions =[0, 0.6,1.2, 1.8,2.4,3.0]; %传感器位置
%计算测试1的曲率
kappa_test1= c * (lambda_test1-lambda_0_test1)./ lambda_0_test1;%创建插值函数(测试1)
curvature_interpolation_test1=fit(positions', kappa_test1','cubicinterp');%计算测试2的曲率
kappa_test2= c * (lambda_test2-lambda_0_test2)./ lambda_0_test2;%创建插值函数(测试2)
curvature_interpolation_test2=fit(positions', kappa_test2','cubicinterp');%指定横坐标位置
x_positions= [0.3, 0.4,0.5,0.6,0.7];%在这些位置估算曲率(测试1和测试2)
estimated_curvatures_test1=curvature_interpolation_test1(x_positions);estimated_curvatures_test2=curvature_interpolation_test2(x_positions);%输出估算的曲率(测试1)
disp('测试1的估算曲率值为:');for idx= 1:length(x_positions)fprintf('在x= %.1f米处的曲率:%.4f\n', x_positions(idx),estimated_curvatures_test1(idx));end%输出估算的曲率(测试2)
disp('测试2的估算曲率值为:');for idx= 1:length(x_positions)fprintf('在x= %.1f米处的曲率:%.4f\n', x_positions(idx),estimated_curvatures_test2(idx));end
%q2.1根据问题一求得结果重构完整曲线
c = 4200;%定义常数c和传感器数据
%测试1的数据
lambda_0_test1=[1529, 1529,1529,1529,1529, 1529];lambda_test1=[1529.808, 1529.807,1529.813,1529.812,1529.814,1529.809];positions =[0, 0.6,1.2, 1.8,2.4,3.0]; %传感器位置
%计算每个传感器点的曲率
kappa_test1= c * (lambda_test1-lambda_0_test1)./ lambda_0_test1;%测试2的数据
lambda_0_test2=[1540, 1540,1540,1540,1540, 1540];lambda_test2=[1541.095, 1541.092,1541.090,1541.093,1541.094,1541.091];%计算每个传感器点的曲率
kappa_test2= c * (lambda_test2-lambda_0_test2)./ lambda_0_test2;%设置步长
ds=0.01;%重构测试1和测试2的曲线
[x_points_test1,y_points_test1]=reconstruct_curve(positions,kappa_test1,ds,pi/4);[x_points_test2,y_points_test2]=reconstruct_curve(positions,kappa_test2,ds,pi/4);%绘制测试1和测试2的曲线
figure;plot(x_points_test1,y_points_test1,'LineWidth',2);holdon;plot(x_points_test2,y_points_test2,'r-','LineWidth',2);title('ReconstructedCurves forTest1andTest 2');xlabel('x');ylabel('y');legend('Test1','Test2');gridon;holdoff;%重构函数定义,增加初始角度参数
function [x_points, y_points]=reconstruct_curve(positions,kappa,ds,initial_angle)%预分配数组
total_steps = sum(round(diff(positions)/ ds));x_points=zeros(1, total_steps+1);y_points=zeros(1, total_steps+1);%初始条件,使用给定的初始角度
theta=initial_angle;%初始角度为pi/4,对应斜率为1x=0;y=0;index=1;%存储第一个点
x_points(index) = x;y_points(index) = y;fori =2:length(positions)steps= round((positions(i)-positions(i-1))/ ds);forj= 1:stepstheta=theta+kappa(i-1)*ds;x=x+cos(theta)*ds;y=y+sin(theta)*ds;index=index+1;x_points(index)= x;y_points(index)= y;endendend
全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可
相关文章:
2024年华中杯数学建模C题基于光纤传感器的平面曲线重建算法建模解题全过程文档及程序
2024年华中杯数学建模 C题 基于光纤传感器的平面曲线重建算法建模 原题再现 光纤传感技术是伴随着光纤及光通信技术发展起来的一种新型传感器技术。它是以光波为传感信号、光纤为传输载体来感知外界环境中的信号,其基本原理是当外界环境参数发生变化时,…...
使用 `typing_extensions.TypeAlias` 简化类型定义:初学者指南
使用 typing_extensions.TypeAlias 简化类型定义:初学者指南 什么是 TypeAlias?安装 typing_extensions示例代码:如何使用 TypeAlias示例 1:为简单类型定义别名示例 2:为复杂类型定义别名示例 3:结合 Union…...
如何快速批量把 PDF 转为 JPG 或其它常见图像格式?
在某些特定场景下,将 PDF 转换为 JPG 图片格式却具有不可忽视的优势。例如,当我们需要在不支持 PDF 查看的设备或软件中展示文档内容时,JPG 图片能够轻松被识别和打开;此外,对于一些网络分享或社交媒体发布的需求&…...
如何在组织中塑造和强化绩效文化?
在组织中塑造和强化绩效文化是一个系统性的工程。 一、明确绩效目标与期望 设定清晰目标 组织应根据自身战略规划,将长期目标分解为具体、可衡量、可实现、相关联、有时限(SMART)的短期和中期绩效目标。例如,一家连锁餐饮企业的…...
OllyDbg、CE简单介绍
基础知识: 想要破解软件,需要一些基础知识: 文件格式:Windows对应PE、Linux对应ELF、IOS对应Mash-0。文件格式是指操作系统规定的每个段(代码段、数据段、堆、栈)的大小、顺序等信息。 汇编语言࿱…...
Python函数——函数的返回值定义语法
一、引言 在Python中,函数的返回值是其核心功能之一,它使得函数能够将计算结果传递给调用者,进而推动程序的逻辑和功能实现。理解和掌握函数的返回值语法,不仅能够提高代码的模块化和可读性,还能使程序更加高效和灵活…...
【Pandas】pandas isna
Pandas2.2 General Top-level missing data 方法描述isna(obj)用于检测数据中的缺失值isnull(obj)用于检测数据中的缺失值notna(obj)用于检测数据中的非缺失值notnull(obj)用于检测数据中的非缺失值 pandas.isna() pandas.isna() 是 Pandas 库中的一个函数,用于…...
mysql 数据库表的大小
mysql 数据库表的大小 Mysql 查看数据库各个表占用空间 mysql如何查看数据库所有表大小 在MySQL中,要查看数据库所有表的大小,可以使用以下方法: 方法一:使用information_schema数据库 首先,通过命令行或图形界面…...
(6)JS-Clipper2之ClipperOffset
1. 描述 ClipperOffset类封装了对打开路径和关闭路径进行偏移(膨胀/收缩)的过程。 这个类取代了现在已弃用的OffsetPaths函数,该函数不太灵活。可以使用不同的偏移量(增量)多次调用Execute方法,而不必重新分配路径。现在可以在一次操作中对开放和封闭路…...
如何在Ubuntu中利用repo和git地址下载获取imx6ull的BSP
01-设置git的用户名和邮箱 git config --global user.name "suwenhao" git config --global user.email "2487872782qq.com"这里不设置的话后面在第5步的repo配置中还是会要求输入,而且以后进行相关操作都要输入,不妨现在就进行配置…...
Ruby On Rails 笔记5——常用验证下
3.Validation Options 3.1 :allow_nil 当验证值为nil时:allow_nil选项会跳过验证 class Coffee < ApplicationRecordvalidates :size, inclusion: { in: %w(small medium large),message: "%{value} is not a valid size" }, allow_nil: true end irb> Cof…...
JS听到了因果的回响
这是我学习JS的第11天了,,,我现在赶着周末学JS,然后还有二十多天就期末了呵呵呵。。。 图片切换模块 思路分析: 这是实现的代码,建议还是把不同的变量定义出来比较合适: //获取三个盒子// 小盒…...
【高中生讲机器学习】28. 集成学习之 Bagging 随机森林!
创建时间:2024-12-09 首发时间:2024-12-09 最后编辑时间:2024-12-09 作者:Geeker_LStar 嘿嘿,你好呀!我又来啦~~ 前面我们讲完了集成学习之 Boooooosting,这篇我们来看看集成学习的另一个分支…...
硬件设计 | Altium Designer软件PCB规则设置
基于Altium Designer(24.9.1)版本 嘉立创PCB工艺加工能力范围说明-嘉立创PCB打样专业工厂-线路板打样 规则参考-嘉立创 注意事项 1.每次设置完规则参数都要点击应用保存 2.每次创建PCB,都要设置好参数 3.可以设置默认规则,将…...
【Elasticsearch】实现用户行为分析
🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,…...
python字符串处理基础操作总结
1.去掉空格或者特殊符号 input_str.strip() #去掉所有空格 input_str.lstrip() #去掉左边空格 input_str.rstrip() #去掉右边空格 def print_hi():input_str 今天天气不错,风和日丽 out input_str.strip()print(input_str)print(out)if __name__ __main__:print…...
电子商务人工智能指南 6/6 - 人工智能生成的产品图像
介绍 81% 的零售业高管表示, AI 至少在其组织中发挥了中等至完全的作用。然而,78% 的受访零售业高管表示,很难跟上不断发展的 AI 格局。 近年来,电子商务团队加快了适应新客户偏好和创造卓越数字购物体验的需求。采用 AI 不再是一…...
【论文阅读】相似误差订正方法在风电短期风速预报中的应用研究
文章目录 概述:摘要1. 引言2. 相似误差订正算法(核心)3. 订正实验3.1 相似因子选取3.2 相似样本数试验3.3 时间窗时长实验 4. 订正结果分析4.1 评估指标对比4.2 风速曲线对比4.3 分风速段订正效果评估4.4 风速频率统计 5. 结论与讨论 概述&am…...
贪心算法 - 学习笔记 【C++】
2024-12-09 - 第 38 篇 贪心算法 - 学习笔记 作者(Author): 郑龙浩 / 仟濹(CSND账号名) 贪心算法 学习课程: https://www.bilibili.com/video/BV1f84y1i7mv/?spm_id_from333.337.search-card.all.click&vd_source2683707f584c21c57616cc6ce8454e2b 一、基本…...
精确的单向延迟测量:使用普通硬件和软件
论文标题:Precise One-way Delay Measurement with Common Hardware and Software(精确的单向延迟测量:使用普通硬件和软件) 作者信息:Maciej Muehleisen 和 Mazen Abdel Latif,来自Ericsson Research Eri…...
谷歌浏览器插件
项目中有时候会用到插件 sync-cookie-extension1.0.0:开发环境同步测试 cookie 至 localhost,便于本地请求服务携带 cookie 参考地址:https://juejin.cn/post/7139354571712757767 里面有源码下载下来,加在到扩展即可使用FeHelp…...
Linux链表操作全解析
Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...
线程同步:确保多线程程序的安全与高效!
全文目录: 开篇语前序前言第一部分:线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分:synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分ÿ…...
抖音增长新引擎:品融电商,一站式全案代运营领跑者
抖音增长新引擎:品融电商,一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中,品牌如何破浪前行?自建团队成本高、效果难控;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...
聊一聊接口测试的意义有哪些?
目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开,首…...
基于Java+MySQL实现(GUI)客户管理系统
客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息,对客户进行统一管理,可以把所有客户信息录入系统,进行维护和统计功能。可通过文件的方式保存相关录入数据,对…...
从面试角度回答Android中ContentProvider启动原理
Android中ContentProvider原理的面试角度解析,分为已启动和未启动两种场景: 一、ContentProvider已启动的情况 1. 核心流程 触发条件:当其他组件(如Activity、Service)通过ContentR…...
ThreadLocal 源码
ThreadLocal 源码 此类提供线程局部变量。这些变量不同于它们的普通对应物,因为每个访问一个线程局部变量的线程(通过其 get 或 set 方法)都有自己独立初始化的变量副本。ThreadLocal 实例通常是类中的私有静态字段,这些类希望将…...
Python第七周作业
Python第七周作业 文章目录 Python第七周作业 1.使用open以只读模式打开文件data.txt,并逐行打印内容 2.使用pathlib模块获取当前脚本的绝对路径,并创建logs目录(若不存在) 3.递归遍历目录data,输出所有.csv文件的路径…...
C#最佳实践:为何优先使用as或is而非强制转换
C#最佳实践:为何优先使用as或is而非强制转换 在 C# 的编程世界里,类型转换是我们经常会遇到的操作。就像在现实生活中,我们可能需要把不同形状的物品重新整理归类一样,在代码里,我们也常常需要将一个数据类型转换为另…...
