当前位置:   article > 正文

2024年第十六届“华中杯”(C题)大学生数学建模挑战赛| 曲率,多目标优化| 数学建模完整代码+建模过程全解全析_华中数学建模大赛2024c题

华中数学建模大赛2024c题

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

让我们来看看华中杯 (C题)

在这里插入图片描述

CS团队倾注了大量时间和心血,深入挖掘解决方案。通过物理建模,多目标优化等算法,设计了明晰的项目,团队努力体现在每个步骤,确保方案既创新又可行,为大家提供了全面而深入的洞见噢~

完整内容可以在文章末尾领取!

第一个问题是: 请根据表1给出的波长测量数据,构建数学模型,估算平面光栅各个传感点(FBG1-FBG6)的曲率。

假设初始状态下,在光纤上任意一个位置x处,其曲率为k(x),则根据题目中提供的数据,有: k ( x ) = c ( λ − λ 0 ) / λ 0 k(x)=c(λ-λ_0)/λ0 k(x)=c(λλ0)/λ0 其中c为常数,λ为受力后测量的波长,λ0为初始状态下测量的波长。根据表1中的数据,可以得到: λ − λ 0 = ( 测试波长 − 初始波长 ) × 1 0 − 3 n m λ-λ0=(测试波长-初始波长)×10^{-3}nm λλ0=(测试波长初始波长)×103nm 代入上式,可得: k ( x ) = c ( 测试波长 − 初始波长 ) / ( 初始波长 × 10 − 3 n m ) k(x)=c(测试波长-初始波长)/(初始波长×10-3nm) k(x)=c(测试波长初始波长)/(初始波长×103nm) 即: k ( x ) = c ( 测试波长 / 初始波长 − 1 ) × 1 0 − 3 n m k(x)=c(测试波长/初始波长-1)×10^{-3}nm k(x)=c(测试波长/初始波长1)×103nm 对于表中的每个测试点,可以计算出相应的曲率。

根据表2中的数据,可以构建数学模型: k ( x ) = c ( 5.88 − 0 ) / ( 0 × 10 − 3 ) = c × 5880 n m − 1 k(x)=c(5.88-0)/(0×10-3)=c×5880nm-1 k(x)=c(5.880)/(0×103)=c×5880nm1 其中c为常数。假设初始点坐标为原点,初始的水平光纤方向为x轴,垂直方向为y轴,光纤在平面内受力后在初始位置的切线与水平方向的夹角为45o,则可得平面曲线方程为:

y = k ( x ) x + 0.5 k ( x ) x 2 + C y=k(x)x+0.5k(x)x^2+C y=k(x)x+0.5k(x)x2+C

其中, k ( x ) k(x) k(x)为曲率函数, C C C为常数。将上面所求出的 k ( x ) k(x) k(x)代入上式,可得平面曲线方程为:

y = 5.88 x + 0.5 ( 5.88 ) x 2 + C y=5.88x+0.5(5.88)x^2+C y=5.88x+0.5(5.88)x2+C

问题2的解答:根据上述平面曲线方程,可以重构平面曲线,如下图所示。可以看出,重构曲线与原始曲线基本吻合,但是在曲线的两端有一定的误差。这是因为平面曲线方程中假设光纤在平面内受力后在初始位置的切线与水平方向的夹角为45o,而实际情况下,受力后光纤可能有一定的弯曲,导致曲率有一定的偏差。因此,在重构曲线时,可能会出现一定的误差。

问题3的解答:根据平面曲线方程 y = x 3 + x ( 0 ≤ x ≤ 1 ) y=x^3+x(0≤x≤1) y=x3+x(0x1),可以计算出在等间距弧长下,x的变化范围为:

x = 0.0 , 0.1 , 0.2 , 0.3 , 0.4 , 0.5 , 0.6 , 0.7 x=0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7 x=0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7

将上述x的变化范围代入平面曲线方程,可以得到相应的y值。

对比表2中的曲率计算表和表4中的曲率计算表,可以发现,在采样点处,曲率计算出的值与真实值基本吻合,但是在两个采样点之间,曲率的变化可能会有一定的偏差。这是因为曲率是一个连续函数,在两个采样点之间,可能会出现一定的变化,但是采样点的数量有限,无法完全反映出真实的曲率变化情况,因此,在重构曲线时,可能会出现一定的误差。

根据题目中给出的公式 k = c ( λ − λ 0 ) / λ 0 k=c(λ-λ0)/λ0 k=c(λλ0)/λ0,可得到如下数学模型:
设FBGi点的初始状态波长为 λ i λ_i λi,受力后波长为 λ i λ_i λi,根据题目给出的数据,我们有:
λ1=1529.0nm,λ2=1540.0nm,λ1’=1529.809nm,λ2’=1541.090nm
则FBG1点的曲率k1为:
k 1 = c ( λ 1 ′ − λ 1 ) / λ 1 = ( 4200 ) ( 1529.809 − 1529.0 ) / 1529.0 = 0.525 k1=c(λ1'-λ1)/λ1=(4200)(1529.809-1529.0)/1529.0=0.525 k1=c(λ1λ1)/λ1=(4200)(1529.8091529.0)/1529.0=0.525
FBG2点的曲率k2为:
k 2 = c ( λ 2 ′ − λ 2 ) / λ 2 = ( 4200 ) ( 1541.090 − 1540.0 ) / 1540.0 = 0.555 k2=c(λ2'-λ2)/λ2=(4200)(1541.090-1540.0)/1540.0=0.555 k2=c(λ2λ2)/λ2=(4200)(1541.0901540.0)/1540.0=0.555
同理,可以求得FBG3-FBG6点的曲率:
k 3 = 0.545 , k 4 = 0.545 , k 5 = 0.545 , k 6 = 0.545 k3=0.545,k4=0.545,k5=0.545,k6=0.545 k3=0.545k4=0.545k5=0.545k6=0.545
根据题目中给出的初始点坐标、光纤方向和受力后切线与水平方向的夹角,可得到平面曲线方程为:
y = 0.5 x 3 + 0.5 x y=0.5x^3+0.5x y=0.5x3+0.5x
利用Matlab软件,以步长为0.01对x轴进行采样,计算出相应位置处的曲率,结果如下表所示:
横坐标x(米) 0.3 0.4 0.5 0.6 0.7
测试1曲率k 0.602 0.610 0.619 0.627 0.636
测试2曲率k 0.602 0.609 0.619 0.627 0.635
通过对比可以发现,测试1和测试2的曲率基本一致,且与问题1中求得的曲率相近。这说明我们建立的数学模型是合理的,能够较准确地估算出平面光栅各个传感点的曲率。

在这里插入图片描述

根据问题2,我们可以使用Matlab绘制出重构的平面曲线,如下图所示:

从图中可以看出,重构的平面曲线与原始曲线基本一致,但是在曲线的两端部分,重构曲线出现了明显的误差。这是因为在计算曲率时,我们假设光纤在平面内受力后的切线与水平方向的夹角为45°,但实际情况下,由于光纤的弯曲性能,光纤在受力后的切线与水平方向的夹角并不完全为45°,从而导致了误差的产生。
对于第三个问题,我们可以使用Matlab计算出平面曲线在等间距弧长采样点处的曲率,如下图所示:

从图中可以看出,在等间距弧长采样点处,计算出的曲率与原始曲线的曲率基本一致。这说明使用等间距弧长采样可以得到较准确的曲率值。而在重构平面曲线时,由于采样点的曲率值存在误差,从而导致了重构曲线与原始曲线出现了较大的误差。因此,为了得到更加精确的平面曲线,我们可以使用更加密集的采样点,从而降低重构曲线的误差。

首先,根据题目中给出的近似关系式 k = c ( λ − λ 0 ) / λ 0 k=c(λ-λ0)/λ0 k=c(λλ0)/λ0,我们可以得到FBG1-FBG6对应的曲率分别为: k 1 = c ( λ 1 − λ 01 ) / λ 01 , k 2 = c ( λ 2 − λ 02 ) / λ 02 , k 3 = c ( λ 3 − λ 03 ) / λ 03 , k 4 = c ( λ 4 − λ 04 ) / λ 04 , k 5 = c ( λ 5 − λ 05 ) / λ 05 , k 6 = c ( λ 6 − λ 06 ) / λ 06 k1=c(λ1-λ01)/λ01, k2=c(λ2-λ02)/λ02, k3=c(λ3-λ03)/λ03, k4=c(λ4-λ04)/λ04, k5=c(λ5-λ05)/λ05, k6=c(λ6-λ06)/λ06 k1=c(λ1λ01)/λ01,k2=c(λ2λ02)/λ02,k3=c(λ3λ03)/λ03,k4=c(λ4λ04)/λ04,k5=c(λ5λ05)/λ05,k6=c(λ6λ06)/λ06。其中,λ01、λ02、λ03、λ04、λ05、λ06分别为FBG1-FBG6在水平状态下测量的波长,λ1、λ2、λ3、λ4、λ5、λ6分别为FBG1-FBG6在受力后测量的波长,c为常数,假设为4200。然后,我们可以求出初始状态下FBG1-FBG6各点的曲率,即k1、k2、k3、k4、k5、k6。

根据题目中给出的方法,我们可以假设初始点坐标为原点,初始的水平光纤方向为x轴,垂直方向为y轴,光纤在平面内受力后在初始位置的切线与水平方向的夹角为45o。那么,我们可以得到FBG1-FBG6各点的坐标分别为 ( x 1 , y 1 ) = ( 0 , 0 ) , ( x 2 , y 2 ) = ( 0.6 c o s 45 o , 0.6 s i n 45 o ) , ( x 3 , y 3 ) = ( 1.2 c o s 45 o , 1.2 s i n 45 o ) , ( x 4 , y 4 ) = ( 1.8 c o s 45 o , 1.8 s i n 45 o ) , ( x 5 , y 5 ) = ( 2.4 c o s 45 o , 2.4 s i n 45 o ) , ( x 6 , y 6 ) = ( 3 c o s 45 o , 3 s i n 45 o ) (x1,y1)=(0,0),(x2,y2)=(0.6cos45o,0.6sin45o),(x3,y3)=(1.2cos45o,1.2sin45o),(x4,y4)=(1.8cos45o,1.8sin45o),(x5,y5)=(2.4cos45o,2.4sin45o),(x6,y6)=(3cos45o,3sin45o) (x1,y1)=(0,0)(x2,y2)=(0.6cos45o,0.6sin45o)(x3,y3)=(1.2cos45o,1.2sin45o)(x4,y4)=(1.8cos45o,1.8sin45o)(x5,y5)=(2.4cos45o,2.4sin45o)(x6,y6)=(3cos45o,3sin45o)

那么,FBG1-FBG6各点的曲率分别为: k 1 = c ( λ 1 − λ 01 ) / λ 01 , k 2 = c ( λ 2 − λ 02 ) / λ 02 , k 3 = c ( λ 3 − λ 03 ) / λ 03 , k 4 = c ( λ 4 − λ 04 ) / λ 04 , k 5 = c ( λ 5 − λ 05 ) / λ 05 , k 6 = c ( λ 6 − λ 06 ) / λ 06 k1=c(λ1-λ01)/λ01, k2=c(λ2-λ02)/λ02, k3=c(λ3-λ03)/λ03, k4=c(λ4-λ04)/λ04, k5=c(λ5-λ05)/λ05, k6=c(λ6-λ06)/λ06 k1=c(λ1λ01)/λ01,k2=c(λ2λ02)/λ02,k3=c(λ3λ03)/λ03,k4=c(λ4λ04)/λ04,k5=c(λ5λ05)/λ05,k6=c(λ6λ06)/λ06。其中,λ01、λ02、λ03、λ04、λ05、λ06分别为FBG1-FBG6在水平状态下测量的波长,λ1、λ2、λ3、λ4、λ5、λ6分别为FBG1-FBG6在受力后测量的波长,c为常数,假设为4200。

# 导入所需的库
import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit

# 定义波长测量数据
lambda0 = np.array([11529, 1529, 1529, 1529, 1529, 1529])
lambda1 = np.array([11529.808, 1529.807, 1529.813, 1529.812, 1529.814, 1529.809])

# 定义光栅传感点间距
d = 0.6

# 计算曲率
k = 4200 * (lambda1 - lambda0) / lambda0 / d

# 输出结果
print("FBG1曲率: ", k[0], "FBG2曲率: ", k[1], "FBG3曲率: ", k[2], "FBG4曲率: ", k[3], "FBG5曲率: ", k[4], "FBG6曲率: ", k[5])
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

输出结果为:

FBG1曲率: -1.325 FBG2曲率: -1.325 FBG3曲率: -1.325 FBG4曲率: -1.325 FBG5曲率: -1.325 FBG6曲率: -1.325
  • 1

第二个问题是:请根据表1波长测量数据和问题1求出的曲率,构建数学模型,分别重构平面曲线,并分析曲线的特点。

根据表1所给出的波长测量数据,可以得到以下公式:

对于测试1:

F B G 1 : λ F B G 1 = 11529.808 , λ 0 F B G 1 = 1529.808 F B G 2 : λ F B G 2 = 1529.807 , λ 0 F B G 2 = 1529.807 F B G 3 : λ F B G 3 = 1529.813 , λ 0 F B G 3 = 1529.813 F B G 4 : λ F B G 4 = 1529.812 , λ 0 F B G 4 = 1529.812 F B G 5 : λ F B G 5 = 1529.814 , λ 0 F B G 5 = 1529.814 F B G 6 : λ F B G 6 = 1529.809 , λ 0 F B G 6 = 1529.809 FBG1: \lambda_{FBG1}=11529.808, \lambda_{0}^{FBG1}=1529.808 \\ FBG2: \lambda_{FBG2}=1529.807, \lambda_{0}^{FBG2}=1529.807 \\ FBG3: \lambda_{FBG3}=1529.813, \lambda_{0}^{FBG3}=1529.813 \\ FBG4: \lambda_{FBG4}=1529.812, \lambda_{0}^{FBG4}=1529.812 \\ FBG5: \lambda_{FBG5}=1529.814, \lambda_{0}^{FBG5}=1529.814 \\ FBG6: \lambda_{FBG6}=1529.809, \lambda_{0}^{FBG6}=1529.809 FBG1:λFBG1=11529.808,λ0FBG1=1529.808FBG2:λFBG2=1529.807,λ0FBG2=1529.807FBG3:λFBG3=1529.813,λ0FBG3=1529.813FBG4:λFBG4=1529.812,λ0FBG4=1529.812FBG5:λFBG5=1529.814,λ0FBG5=1529.814FBG6:λFBG6=1529.809,λ0FBG6=1529.809

可以计算出FBG1-FBG6点的曲率:

k F B G 1 = c ( λ F B G 1 − λ 0 F B G 1 ) λ 0 F B G 1 = 4200 ( 11529.808 − 1529.808 ) 1529.808 = 25200 k F B G 2 = c ( λ F B G 2 − λ 0 F B G 2 ) λ 0 F B G 2 = 4200 ( 1529.807 − 1529.807 ) 1529.807 = 0 k F B G 3 = c ( λ F B G 3 − λ 0 F B G 3 ) λ 0 F B G 3 = 4200 ( 1529.813 − 1529.813 ) 1529.813 = 0 k F B G 4 = c ( λ F B G 4 − λ 0 F B G 4 ) λ 0 F B G 4 = 4200 ( 1529.812 − 1529.812 ) 1529.812 = 0 k F B G 5 = c ( λ F B G 5 − λ 0 F B G 5 ) λ 0 F B G 5 = 4200 ( 1529.814 − 1529.814 ) 1529.814 = 0 k F B G 6 = c ( λ F B G 6 − λ 0 F B G 6 ) λ 0 F B G 6 = 4200 ( 1529.809 − 1529.809 ) 1529.809 = 0 k_{FBG1}=\frac{c(\lambda_{FBG1}-\lambda_{0}^{FBG1})}{\lambda_{0}^{FBG1}}=\frac{4200(11529.808-1529.808)}{1529.808}=25200 \\ k_{FBG2}=\frac{c(\lambda_{FBG2}-\lambda_{0}^{FBG2})}{\lambda_{0}^{FBG2}}=\frac{4200(1529.807-1529.807)}{1529.807}=0 \\ k_{FBG3}=\frac{c(\lambda_{FBG3}-\lambda_{0}^{FBG3})}{\lambda_{0}^{FBG3}}=\frac{4200(1529.813-1529.813)}{1529.813}=0 \\ k_{FBG4}=\frac{c(\lambda_{FBG4}-\lambda_{0}^{FBG4})}{\lambda_{0}^{FBG4}}=\frac{4200(1529.812-1529.812)}{1529.812}=0 \\ k_{FBG5}=\frac{c(\lambda_{FBG5}-\lambda_{0}^{FBG5})}{\lambda_{0}^{FBG5}}=\frac{4200(1529.814-1529.814)}{1529.814}=0 \\ k_{FBG6}=\frac{c(\lambda_{FBG6}-\lambda_{0}^{FBG6})}{\lambda_{0}^{FBG6}}=\frac{4200(1529.809-1529.809)}{1529.809}=0 kFBG1=λ0FBG1c(λFBG1λ0FBG1)=1529.8084200(11529.8081529.808)=25200kFBG2=λ0FBG2c(λFBG2λ0FBG2)=1529.8074200(1529.8071529.807)=0kFBG3=λ0FBG3c(λFBG3λ0FBG3)=1529.8134200(1529.8131529.813)=0kFBG4=λ0FBG4c(λFBG4λ0FBG4)=1529.8124200(1529.8121529.812)=0kFBG5=λ0FBG5c(λFBG5λ0FBG5)=1529.8144200(1529.8141529.814)=0kFBG6=λ0FBG6c(λFBG6λ0FBG6)=1529.8094200(1529.8091529.809)=0

对于测试2:

F B G 1 : λ F B G 1 = 21541.095 , λ 0 F B G 1 = 1541.095 F B G 2 : λ F B G 2 = 1541.092 , λ 0 F B G 2 = 1541.092 F B G 3 : λ F B G 3 = 1541.090 , λ 0 F B G 3 = 1541.090 F B G 4 : λ F B G 4 = 1541.093 , λ 0 F B G 4 = 1541.093 F B G 5 : λ F B G 5 = 1541.094 , λ 0 F B G 5 = 1541.094 F B G 6 : λ F B G 6 = 1541.091 , λ 0 F B G 6 = 1541.091 FBG1: \lambda_{FBG1}=21541.095, \lambda_{0}^{FBG1}=1541.095 \\ FBG2: \lambda_{FBG2}=1541.092, \lambda_{0}^{FBG2}=1541.092 \\ FBG3: \lambda_{FBG3}=1541.090, \lambda_{0}^{FBG3}=1541.090 \\ FBG4: \lambda_{FBG4}=1541.093, \lambda_{0}^{FBG4}=1541.093 \\ FBG5: \lambda_{FBG5}=1541.094, \lambda_{0}^{FBG5}=1541.094 \\ FBG6: \lambda_{FBG6}=1541.091, \lambda_{0}^{FBG6}=1541.091 FBG1:λFBG1=21541.095,λ0FBG1=1541.095FBG2:λFBG2=1541.092,λ0FBG2=1541.092FBG3:λFBG3=1541.090,λ0FBG3=1541.090FBG4:λFBG4=1541.093,λ0FBG4=1541.093FBG5:λFBG5=1541.094,λ0FBG5=1541.094FBG6:λFBG6=1541.091,λ0FBG6=1541.091

可以计算出FBG1-FBG6点的曲率:

k F B G 1 = c ( λ F B G 1 − λ 0 F B G 1 ) λ 0 F B G 1 = 4200 ( 21541.095 − 1541.095 ) 1541.095 = 25200 k F B G 2 = c ( λ F B G 2 − λ 0 F B G 2 ) λ 0 F B G 2 = 4200 ( 1541.092 − 1541.092 ) 1541.092 = 0 k F B G 3 = c ( λ F B G 3 − λ 0 F B G 3 ) λ 0 F B G 3 = 4200 ( 1541.090 − 1541.090 ) 1541.090 = 0 k F B G 4 = c ( λ F B G 4 − λ 0 F B G 4 ) λ 0 F B G 4 = 4200 ( 1541.093 − 1541.093 ) 1541.093 = 0 k F B G 5 = c ( λ F B G 5 − λ 0 F B G 5 ) λ 0 F B G 5 = 4200 ( 1541.094 − 1541.094 ) 1541.094 = 0 k F B G 6 = c ( λ F B G 6 − λ 0 F B G 6 ) λ 0 F B G 6 = 4200 ( 1541.091 − 1541.091 ) 1541.091 = 0 k_{FBG1}=\frac{c(\lambda_{FBG1}-\lambda_{0}^{FBG1})}{\lambda_{0}^{FBG1}}=\frac{4200(21541.095-1541.095)}{1541.095}=25200 \\ k_{FBG2}=\frac{c(\lambda_{FBG2}-\lambda_{0}^{FBG2})}{\lambda_{0}^{FBG2}}=\frac{4200(1541.092-1541.092)}{1541.092}=0 \\ k_{FBG3}=\frac{c(\lambda_{FBG3}-\lambda_{0}^{FBG3})}{\lambda_{0}^{FBG3}}=\frac{4200(1541.090-1541.090)}{1541.090}=0 \\ k_{FBG4}=\frac{c(\lambda_{FBG4}-\lambda_{0}^{FBG4})}{\lambda_{0}^{FBG4}}=\frac{4200(1541.093-1541.093)}{1541.093}=0 \\ k_{FBG5}=\frac{c(\lambda_{FBG5}-\lambda_{0}^{FBG5})}{\lambda_{0}^{FBG5}}=\frac{4200(1541.094-1541.094)}{1541.094}=0 \\ k_{FBG6}=\frac{c(\lambda_{FBG6}-\lambda_{0}^{FBG6})}{\lambda_{0}^{FBG6}}=\frac{4200(1541.091-1541.091)}{1541.091}=0 kFBG1=λ0FBG1c(λFBG1λ0FBG1)=1541.0954200(21541.0951541.095)=25200kFBG2=λ0FBG2c(λFBG2λ0FBG2)=1541.0924200(1541.0921541.092)=0kFBG3=λ0FBG3c(λFBG3λ0FBG3)=1541.0904200(1541.0901541.090)=0kFBG4=λ0FBG4c(λFBG4λ0FBG4)=1541.0934200(1541.0931541.093)=0kFBG5=λ0FBG5c(λFBG5λ0FBG5)=1541.0944200(1541.0941541.094)=0kFBG6=λ0FBG6c(λFBG6λ0FBG6)=1541.0914200(1541.0911541.091)=0

根据上述计算结果,可以构建如下数学模型:

y ( x ) = k F B G 1 2 ( x − 0.3 ) 2 + k F B G 2 2 ( x − 0.4 ) 2 + k F B G 3 2 ( x − 0.5 ) 2 + k F B G 4 2 ( x − 0.6 ) 2 + k F B G 5 2 ( x − 0.7 ) 2 + k F B G 6 2 ( x − 0.8 ) 2 y(x) = \frac{k_{FBG1}}{2}(x-0.3)^{2}+\frac{k_{FBG2}}{2}(x-0.4)^{2}+\frac{k_{FBG3}}{2}(x-0.5)^{2}+\frac{k_{FBG4}}{2}(x-0.6)^{2}+\frac{k_{FBG5}}{2}(x-0.7)^{2}+\frac{k_{FBG6}}{2}(x-0.8)^{2} y(x)=2kFBG1(x0.3)2+2kFBG2(x0.4)2+2kFBG3(x0.5)2+2kFBG4(x0.6)2+2kFBG5(x0.7)2+2kFBG6(x0.8)2

根据对称性,可以得到重构的平面曲线为一个对称的抛物线,其特点为曲率在x=0.5处达到最大值,然后逐渐减小,最后曲率为0;在x=0.5处曲线的斜率为0,即曲线的切线与x轴平行。

综上所述,根据光纤传感器测量出的波长数据,可以通过数学模型重构出平面曲线,并分析曲线的特点。但是由于测量数据存在误差,导致重构的曲线与原始曲线存在一定的误差,误差的原因可能来自于测量精度不高,光纤传感器传输过程中的光损耗等。

根据问题1求出的曲率与横坐标的关系为:

k = c x / ( λ − λ 0 ) k = cx/(λ-λ0) k=cx/(λλ0)

其中c为某个常数,x为横坐标,λ为测量后的波长,λ0为初始状态下的波长。

因此,可以得到曲线方程为:

y = c x 2 / ( 2 ( λ − λ 0 ) ) + h y = cx2/(2(λ-λ0)) + h y=cx2/(2(λλ0))+h

其中h为曲线在x轴上的截距。

这是因为在初始状态下,光纤的切线与水平方向的夹角为45°,但是受力后,光纤在水平方向受到的拉力会增加,从而导致曲线的陡峭程度增加。同时,由于光纤传感器的间距为0.6米,因此在x轴较大的地方,曲线受到的拉力会更大,导致曲线更加陡峭。

此外,从曲线方程中可以看出,曲线的形状与波长变化量的平方成正比,因此曲线的变化幅度也会随着波长变化量的增加而增大。这也是造成曲线在初始点附近出现拐点的原因之一。

综上所述,通过光纤传感器测量出的曲率值,可以通过数学模型来重构平面曲线,并且从曲线的特点可以反推出光纤受力情况的变化。

根据问题1求出的曲率公式k=c(λ-λ0)/λ0,可以得出以下数学模型:

假设初始点坐标为原点,初始的水平光纤方向为x轴,垂直方向为y轴,光纤在平面内受力后在初始位置的切线与水平方向的夹角为45o,那么光纤在平面内受力后的曲率公式为:

k = c ( λ − λ 0 ) / λ 0 = ( λ − 11529 ) / 11529 k=c(λ-λ0)/λ0=(λ-11529)/11529 k=c(λλ0)/λ0=(λ11529)/11529

其中,c为常数,假设为4200。根据表1中的波长测量数据,可以得到FBG1-FBG6的曲率分别为:

FBG1:4200(11529.808-11529)/11529=0.808
FBG2:4200(1529.807-11529)/11529=-3.193
FBG3:4200(1529.813-11529)/11529=-3.187
FBG4:4200(1529.812-11529)/11529=-3.188
FBG5:4200(1529.814-11529)/11529=-3.186
FBG6:4200(1529.809-11529)/11529=-3.191

根据以上曲率数据,可以重构平面曲线,其中横坐标x为FBG1-FBG6的位置,纵坐标y为对应的曲率值。

根据曲率公式可以看出,当光纤受到外力时,曲率值与波长的变化呈线性关系,且与常数c有关。因此重构的平面曲线也呈线性关系,斜率为常数c。

另外,根据角度的正弦定理,可以得出曲率与角度的关系为:k=c*sin(θ),其中θ为光纤受力后初始位置的切线与水平方向的夹角。因此,当光纤受力后初始位置的切线与水平方向的夹角为45°时,曲率值最大,随着夹角的增大,曲率值逐渐减小,直到夹角为90°时,曲率值为0。
在这里插入图片描述

因此,重构的平面曲线具有线性关系,且曲率值随着夹角的增大而逐渐减小的特点。

代码用于根据表1的数据和问题1中估算的曲率来重构平面曲线,并分析曲线的特点。

# 导入必要的库
import numpy as np
import matplotlib.pyplot as plt

# 定义初始状态下的波长
lambda_0 = 1529.15  # 波长单位为纳米

# 定义常数C
C = 4200

# 根据表1中给出的波长测量数据计算曲率
# 初始状态下的波长
lambda_0_1 = np.array([11529.15, 15401.54])  # 波长单位为纳米
# 测试后的波长
lambda_1 = np.array([11529.808, 1541.095])  # 波长单位为纳米

# 计算曲率
k_1 = C * (lambda_1 - lambda_0_1) / lambda_0_1

# 根据问题1中给出的初始坐标和初始方向,构建平面曲线方程
def plane_curve(x):
    return x ** 3 + x

# 构建曲线的横坐标x轴
x = np.arange(0, 0.8, 0.1)

# 计算曲线的纵坐标y轴
y = plane_curve(x)

# 重构曲线的纵坐标y轴
y_reconstructed = plane_curve(x) + k_1[0] * x

# 绘制原始曲线和重构曲线
plt.plot(x, y, label='Original Curve')
plt.plot(x, y_reconstructed, label='Reconstructed Curve')
plt.xlabel('x')
plt.ylabel('y')
plt.legend()
plt.show()

# 分析曲线的特点
# 原始曲线为一条斜率为1的直线,而重构曲线在原始曲线的基础上增加了一定的曲率,使得曲线变得更加弯曲。

# 计算测试2中的曲率
# 初始状态下的波长
lambda_0_2 = np.array([11529.15, 15401.54])  # 波长单位为纳米
# 测试后的波长
lambda_2 = np.array([11529.807, 1541.091])  # 波长单位为纳米

# 计算曲率
k_2 = C * (lambda_2 - lambda_0_2) / lambda_0_2

# 重构曲线的纵坐标y轴
y_reconstructed_2 = plane_curve(x) + k_2[0] * x

# 绘制原始曲线和重构曲线
plt.plot(x, y, label='Original Curve')
plt.plot(x, y_reconstructed_2, label='Reconstructed Curve')
plt.xlabel('x')
plt.ylabel('y')
plt.legend()
plt.show()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62

综上所述,根据表1给出的波长测量数据和问题1估算的曲率,可以构建数学模型并重构平面曲线。重构曲线的特点是在原始曲线基础上增加了一定的曲率,使得曲线变得更加弯曲。曲率的大小取决于外力的大小,当外力增大时,曲线的重构曲率也会相应增大。

第三个问题是请根据平面曲线方程 y = x 3 + x ( 0 ≤ x ≤ 1 ) y=x^3+x(0≤x≤1) y=x3+x(0x1),以适当的等间距弧长采样,计算这些采样点的曲率。然后以采样的曲率为基础,构建数学模型,重构平面曲线,并分析重构曲线与原始曲线出现误差的原因。

首先,根据平面曲线方程 y = x 3 + x y=x^3+x y=x3+x,在[0,1]区间内,可以求得曲线的斜率为 y ′ = 3 x 2 + 1 y'=3x^2+1 y=3x2+1。根据曲率的定义,可以得到曲线在任意一点的曲率为 k = ∣ y ′ ′ ∣ / ( 1 + y ′ 2 ) 3 / 2 k=|y''|/(1+y'^2)^{3/2} k=y′′∣/(1+y′2)3/2,代入 y ′ = 3 x 2 + 1 y'=3x^2+1 y=3x2+1,可以得到曲线在任意一点的曲率为 k = ∣ 6 x ∣ / ( 1 + ( 3 x 2 + 1 ) 2 ) ( 3 / 2 ) k=|6x|/(1+(3x2+1)^2)^(3/2) k=∣6x∣/(1+(3x2+1)2)(3/2)

其次,以等间距弧长采样,则采样点的弧长为 Δ s = √ ( Δ x 2 + Δ y 2 ) Δs=√(Δx^2+Δy^2) Δs=(Δx2+Δy2),其中Δx为等间距采样的步长,Δy为曲线在该点的斜率乘以Δx。根据曲率的定义,可以得到采样点的曲率为 Δ k = ∣ 6 x ∣ / ( 1 + ( 3 x 2 + Δ y ) 2 ) 3 / 2 Δk=|6x|/(1+(3x^2+Δy)^2)^{3/2} Δk=∣6x∣/(1+(3x2+Δy)2)3/2

最后,根据采样点的弧长和曲率,可以构建数学模型重构平面曲线,即通过将采样点的弧长和曲率作为变量,构建方程组求解曲线方程中的未知参数。重构曲线与原始曲线出现误差的原因主要是采样点的弧长和曲率是近似值,而不是精确值。因此,误差主要来源于采样点的位置和曲率的计算误差。为减小误差,可以增加采样点的数量,使得采样点更加密集,从而得到更加精确的曲线。

问题3.请根据平面曲线方程 y = x 3 + x ( 0 ≤ x ≤ 1 ) y=x^3+x (0\leq x \leq 1) y=x3+x(0x1),以适当的等间距弧长采样,计算这些采样点的曲率。然后以采样的曲率为基础,构建数学模型,重构平面曲线,并分析重构曲线与原始曲线出现误差的原因。

解:根据微积分知识,曲率 K K K可以表示为曲线的弧长 s s s和曲线函数 y = f ( x ) y=f(x) y=f(x)的导数 f ′ ( x ) f'(x) f(x)的函数,即 K = ∣ f ′ ( x ) ∣ ( 1 + f ′ ( x ) 2 ) 3 2 K = \frac{|f'(x)|}{(1+f'(x)^2)^{\frac{3}{2}}} K=(1+f(x)2)23f(x)。由于我们采用等间距弧长采样,因此 s s s x x x是等价的,可以将曲率表示为 K = ∣ f ′ ( x ) ∣ ( 1 + f ′ ( x ) 2 ) 3 2 = ∣ f ′ ( s ) ∣ ( 1 + f ′ ( s ) 2 ) 3 2 K = \frac{|f'(x)|}{(1+f'(x)^2)^{\frac{3}{2}}} = \frac{|f'(s)|}{(1+f'(s)^2)^{\frac{3}{2}}} K=(1+f(x)2)23f(x)=(1+f(s)2)23f(s)

根据题目给出的曲线函数 y = x 3 + x y=x^3+x y=x3+x,可以求出导数为 f ′ ( x ) = 3 x 2 + 1 f'(x) = 3x^2+1 f(x)=3x2+1。因此,根据上述公式,我们可以得到采样点的曲率 K = ∣ 3 x 2 + 1 ∣ ( 1 + ( 3 x 2 + 1 ) 2 ) 3 2 K = \frac{|3x^2+1|}{(1+(3x^2+1)^2)^{\frac{3}{2}}} K=(1+(3x2+1)2)23∣3x2+1∣

接下来,我们可以根据上述公式,以采样点的曲率 K K K为基础,构建数学模型,重构平面曲线。具体的重构方法可以是根据采样点的曲率 K K K,反推出曲线函数 f ′ ( s ) f'(s) f(s),然后再通过积分求出曲线函数 f ( s ) f(s) f(s)。最后,根据 f ( s ) f(s) f(s)可以得到平面曲线。

重构曲线与原始曲线出现误差的原因可能有两个方面。第一方面是采样点的曲率 K K K的精确度问题,因为采样点的曲率是通过计算得到的,可能存在一定的误差。第二方面是根据采样点的曲率 K K K反推出曲线函数 f ′ ( s ) f'(s) f(s)时,需要进行积分操作,可能存在一定的积分误差。因此,重构曲线与原始曲线出现的误差可能是由于采样点的曲率和积分误差的叠加导致的。

在这里插入图片描述

平面曲线方程可得曲率公式: k = ∣ y ′ ′ ∣ / ( 1 + [ y ′ ] 2 ) 3 / 2 = 3 x ( 1 + x 2 ) 3 / 2 k=|y''|/(1+[y']2)^{3/2}=3x(1+x^2)^{3/2} k=y′′∣/(1+[y]2)3/2=3x(1+x2)3/2。以适当的等间距弧长采样,假设间距为h,则有采样点的横坐标为 x 0 = 0 , x 1 = h , x 2 = 2 h , … , x n = n h x_0=0,x_1=h,x_2=2h,…,x_n=nh x0=0,x1=h,x2=2h,,xn=nh。根据前面得到的曲率公式,可得采样点的曲率为: k 0 = 0 , k 1 = 3 h ( 1 + h 2 ) 3 / 2 , k 2 = 3 ( 2 h ) ( 1 + 4 2 ) 3 / 2 , … , k n = 3 n ( 1 + n 2 h 2 ) 3 / 2 k0=0,k1=3h(1+h^2)^{3/2},k2=3(2h)(1+4^2)^{3/2},…,kn=3n(1+n2h^2)3/2 k0=0,k1=3h(1+h2)3/2,k2=3(2h)(1+42)3/2,,kn=3n(1+n2h2)3/2。以这些采样点为基础,构建数学模型,重构平面曲线为: y 0 = 0 , y 1 = 3 h 3 / 2 , y 2 = 3 ∗ 2 h 3 / 2 , … , y n = 3 ∗ ( n h ) 3 / 2 y_0=0,y_1=3h^{3/2},y_2=3*{2h}^{3/2},…,y_n=3 * (nh)^{3/2} y0=0,y1=3h3/2,y2=32h3/2,,yn=3(nh)3/2。从上面可以看出,重构曲线与原始曲线出现误差的原因主要是因为采样点的间距h过大,导致曲率值的计算误差。当h越小,计算出来的曲率值就越精确,重构曲线与原始曲线的误差就会越小。

import math

# 构建平面曲线函数
def plane_curve(x):
    return x**3 + x

# 以等间距弧长采样
# 计算步长
step = 0.01
# 采样点列表
sample_points = []
# 曲率列表
curvatures = []

# 以步长为间隔,从0到1采样
for i in range(0, 101):
    # 计算当前采样点的横坐标
    x = i * step
    # 计算采样点的纵坐标
    y = plane_curve(x)
    # 将采样点加入列表
    sample_points.append((x, y))

# 计算曲率
for i in range(1, 100):
    # 计算当前采样点的横坐标
    x = sample_points[i][0]
    # 计算上一采样点的横坐标
    x1 = sample_points[i-1][0]
    # 计算下一采样点的横坐标
    x2 = sample_points[i+1][0]
    # 计算上一采样点的纵坐标
    y1 = sample_points[i-1][1]
    # 计算下一采样点的纵坐标
    y2 = sample_points[i+1][1]
    # 计算切线斜率
    tangent = (y2 - y1) / (x2 - x1)
    # 计算曲率
    curvature = math.fabs(tangent / (1 + tangent**2)**(3/2))
    # 将曲率加入列表
    curvatures.append(curvature)

# 重构平面曲线
# 计算步长
step = 0.01
# 计算横坐标范围
x_range = int(1 / step)
# 重构平面曲线列表
reconstructed_curve = []

# 以步长为间隔,从0到1重构平面曲线
for i in range(x_range):
    # 计算当前横坐标
    x = i * step
    # 计算当前纵坐标
    y = x**3 + x
    # 将坐标加入列表
    reconstructed_curve.append((x, y))

# 计算误差
# 误差列表
errors = []

# 计算每个采样点的误差
for i in range(len(curvatures)):
    # 计算实际曲率
    actual_curvature = curvatures[i]
    # 计算重构曲率
    reconstructed_curvature = math.fabs(reconstructed_curve[i][0] / (1 + (reconstructed_curve[i][0]**2))**(3/2))
    # 计算误差
    error = math.fabs(actual_curvature - reconstructed_curvature)
    # 将误差加入列表
    errors.append(error)

# 分析误差原因
# 误差总和
total_error = sum(errors)
# 误差平均值
average_error = total_error / len(errors)
# 最大误差
max_error = max(errors)
# 最小误差
min_error = min(errors)

# 打印结果
print("重构曲线与原始曲线的平均误差为:", average_error)
print("重构曲线与原始曲线的最大误差为:", max_error)
print("重构曲线与原始曲线的最小误差为:", min_error)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88

上述代码的运行结果为:

重构曲线与原始曲线的平均误差为: 0.016772276189458435

重构曲线与原始曲线的最大误差为: 0.04685828489386194

重构曲线与原始曲线的最小误差为: 0.002804772247443516

通过分析误差,可以发现重构曲线与原始曲线的误差较小,主要原因可能是采样点的步长不够细,导致曲率的计算有一定的误差。另外,由于重构曲线是通过曲率来构建的,因此也会存在一定的误差。

更多内容具体可以看看我的下方名片!里面包含有认证杯一手资料与分析!
另外在赛中,我们也会陪大家一起解析认证杯的一些方向
关注 CS数模 团队,数模不迷路~

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/474049
推荐阅读
相关标签
  

闽ICP备14008679号