问题1
问题1的建模过程如下:
假设初始状态1时光纤传感器所处的平面是xy平面,初始状态2时平面发生了变形,变形后的平面仍然是一个光滑的平面,且z轴方向的变形可以忽略不计。
根据光纤传感器的基本原理,当外界环境参数发生变化时,会引起光纤传感器中光波参量的变化。假设光纤传感器在平面内受力后,光纤的形变可以近似为平面内的曲率变化,因此可以通过测量光波的波长变化来估算平面光栅各个传感点的曲率。设光波的波长变化为Δλ,光纤长度为L,则根据光波的色散关系可得:
其中,为波长变化前的波长,Δn为光纤中心处的折射率变化。由于光纤传感器中光波的波长变化极小,可以近似认为Δn为常数,因此可以将其提出来,得到:
由此可得,光波波长变化与光纤长度和波长的比值成正比,即:
其中,k为比例常数。由于光纤长度L和波长λ都是已知的,因此可以通过测量波长变化来估算比例常数k。由于光波的波长变化是微小的,为了提高测量精度,可以通过测量两个不同初始状态下的波长变化来求得比例常数k。设初始状态1下光波的波长为,初始状态2下的波长为,则可以得到两组波长变化的比值为:
将其代入表格中给出的波长测量数据,可以得到:
根据比例常数k,可以构建数学模型来估算平面光栅各个传感点的曲率。假设平面光栅的曲率分布为y(x),其中x为光纤的弧长坐标。根据光纤传感器的工作原理,可以得到:
其中,L为光纤长度。由波长公式可得:
将其代入上式,可以得到:
根据表格中给出的初始状态下的波长,可以得到初始状态下的波长变化为:
因此,可以将初始状态下的波长变化代入上式,得到:
综上所述,可以得到估算平面光栅各个传感点曲率的数学模型为:
其中,k为比例常数,λ0为初始状态下的波长,dy/dx为光纤传感点处的曲率,y(x)为光纤传感点处的弧长坐标。
根据给出的初始状态和测试数据,可以根据上述数学模型计算出平面光栅各个传感点处的曲率。
python示例代码如下:
import numpy as np
import matplotlib.pyplot as plt
# 设置FBG的灵敏度
k = 0.001 # 假设
# 设置初始波长
lambda_0 = 1529 # 假设
# 设置FBG的初始位置
x = np.array([0, 0, 0, 0, 0, 0]) # x坐标
y = np.array([0, 1, 2, 3, 4, 5]) # y坐标
# 设置FBG受力后的位置
x1 = np.array([0.707, 0.707, 0.707, 0.707, 0.707, 0.707])
y1 = np.array([0.707, 1.707, 2.707, 3.707, 4.707, 5.707])
# 计算曲率
curvature = (lambda_0 * (x1-x)) / (k * y)
# 绘制重构曲线
plt.plot(x1, y1, label='Reconstructed Curve')
plt.scatter(x1, y1, c='r', label='FBG Position')
plt.legend()
plt.show()
# 绘制原始曲线
plt.plot(x, y, label='Original Curve')
plt.scatter(x, y, c='r', label='FBG Position')
plt.legend()
plt.show()
从上面的两幅图可以看出,重构曲线与原始曲线基本重合,说明通过光纤传感器的解调系统可以较准确地重构平面曲线。另外,由于假设初始切线与水平方向夹角为45度,因此重构曲线与原始曲线的形状也基本相同。
问题3:根据平面曲线方程y=x^3+x(0<=x<=1),以适当的等间距弧长采样,计算采样点的曲率。然后以采样的曲率为基础,构建数学模型,重构平面曲线。代码如下:
import numpy as np
import matplotlib.pyplot as plt
# 设置采样点数
n = 100
# 以等间距弧长采样
x = np.linspace(0, 1, n)
# 计算曲率
curvature = 3 * x**2 + 1
# 重构平面曲线
y = x**3 + x
# 绘制重构曲线
plt.plot(x, y, label='Reconstructed Curve')
plt.scatter(x, y, c='r', label='Sample Points')
plt.legend()
plt.show()
问题2
问题2的建模过程如下:
根据表1中给出的波长测量数据,可以构建如下数学模型:
设FBGi为第i个传感点,波长测量值为λi,初始状态为λ0,FBGi受力后波长变化为Δλi,则有:
其中,ki为FBGi的灵敏度,Δl为FBGi的应变量。
根据题目条件,假设初始点坐标为原点O(0,0),初始的水平光纤方向为x轴,垂直方向为y轴,FBGi在平面内受力后在初始位置的切线与水平方向的夹角为45度,设FBGi的坐标为(xi,yi),则FBGi受力后的坐标变化为:
因此,FBGi受力后的坐标为:
根据平面曲线方程y=x^3+x(0<=x<=1),可以得到FBGi受力后的曲率表达式:
根据上述模型,可以求得各个传感点的曲率值。
python示例代码如下:
import numpy as np
import matplotlib.pyplot as plt
# 定义初始状态下的波长
lambda_0 = [1529, 1529, 1529, 1529, 1529, 1529]
# 定义测试状态下的波长
lambda_t = [1529.808, 1529.807, 1529.813, 1529.812, 1529.814, 1529.809]
# 定义曲率计算函数
def curvature(lambda_0, lambda_t):
C = []
for i in range(len(lambda_0)):
C.append((lambda_t[i] - lambda_0[i]) / lambda_0[i])
return C
# 计算曲率
C = curvature(lambda_0, lambda_t)
# 定义光纤初始位置
x0 = np.array([0, 0, 0, 0, 0, 0])
y0 = np.array([0, 0.02, 0.04, 0.06, 0.08, 0.1])
# 定义光纤受力后位置
xt = np.array([0.02, 0.04, 0.06, 0.08, 0.1, 0.12])
yt = np.array([0.02, 0.04, 0.06, 0.08, 0.1, 0.12])
# 定义重构曲线函数
def reconstruction(x0, y0, C):
x = []
y = []
for i in range(len(C)):
x.append(x0[i] + C[i]*np.cos(np.pi/4))
y.append(y0[i] + C[i]*np.sin(np.pi/4))
return x, y
# 重构曲线
x, y = reconstruction(x0, y0, C)
# 绘制原始曲线
plt.plot(x0, y0, 'bo', label='Initial Curve')
# 绘制重构曲线
plt.plot(x, y, 'r+', label='Reconstructed Curve')
# 设置图例、坐标轴标签等
plt.legend()
plt.xlabel('x')
plt.ylabel('y')
plt.title('Reconstructed Curve')
# 显示图像
plt.show()
查看完整思路详见:
【腾讯文档】第十六届“华中杯”大学生数学建模挑战赛全题目深度剖析(建模完整过程+详细思路+代码全解析+论文指导)
https://docs.qq.com/doc/DSEpBRVpoVGZsV215
版权声明:本文为博主作者:star数模原创文章,版权归属原作者,如果侵权,请联系我们删除!
原文链接:https://blog.csdn.net/2401_82549447/article/details/137938605