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

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

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

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

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

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

假设初始状态下,在光纤上任意一个位置x处,其曲率为k(x),则根据题目中提供的数据,有:2024年第十六届“华中杯”(C题)大学生数学建模挑战赛| 曲率,多目标优化| 数学建模完整代码+建模过程全解全析 其中c为常数,λ为受力后测量的波长,λ0为初始状态下测量的波长。根据表1中的数据,可以得到:2024年第十六届“华中杯”(C题)大学生数学建模挑战赛| 曲率,多目标优化| 数学建模完整代码+建模过程全解全析 代入上式,可得:2024年第十六届“华中杯”(C题)大学生数学建模挑战赛| 曲率,多目标优化| 数学建模完整代码+建模过程全解全析 即:2024年第十六届“华中杯”(C题)大学生数学建模挑战赛| 曲率,多目标优化| 数学建模完整代码+建模过程全解全析 对于表中的每个测试点,可以计算出相应的曲率。

根据表2中的数据,可以构建数学模型:2024年第十六届“华中杯”(C题)大学生数学建模挑战赛| 曲率,多目标优化| 数学建模完整代码+建模过程全解全析 其中c为常数。假设初始点坐标为原点,初始的水平光纤方向为x轴,垂直方向为y轴,光纤在平面内受力后在初始位置的切线与水平方向的夹角为45o,则可得平面曲线方程为:

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

其中,2024年第十六届“华中杯”(C题)大学生数学建模挑战赛| 曲率,多目标优化| 数学建模完整代码+建模过程全解全析为曲率函数,2024年第十六届“华中杯”(C题)大学生数学建模挑战赛| 曲率,多目标优化| 数学建模完整代码+建模过程全解全析为常数。将上面所求出的2024年第十六届“华中杯”(C题)大学生数学建模挑战赛| 曲率,多目标优化| 数学建模完整代码+建模过程全解全析代入上式,可得平面曲线方程为:

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

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

问题3的解答:根据平面曲线方程2024年第十六届“华中杯”(C题)大学生数学建模挑战赛| 曲率,多目标优化| 数学建模完整代码+建模过程全解全析,可以计算出在等间距弧长下,x的变化范围为:

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

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

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

根据题目中给出的公式2024年第十六届“华中杯”(C题)大学生数学建模挑战赛| 曲率,多目标优化| 数学建模完整代码+建模过程全解全析,可得到如下数学模型:
设FBGi点的初始状态波长为2024年第十六届“华中杯”(C题)大学生数学建模挑战赛| 曲率,多目标优化| 数学建模完整代码+建模过程全解全析,受力后波长为2024年第十六届“华中杯”(C题)大学生数学建模挑战赛| 曲率,多目标优化| 数学建模完整代码+建模过程全解全析,根据题目给出的数据,我们有:
λ1=1529.0nm,λ2=1540.0nm,λ1’=1529.809nm,λ2’=1541.090nm
则FBG1点的曲率k1为:
2024年第十六届“华中杯”(C题)大学生数学建模挑战赛| 曲率,多目标优化| 数学建模完整代码+建模过程全解全析
FBG2点的曲率k2为:
2024年第十六届“华中杯”(C题)大学生数学建模挑战赛| 曲率,多目标优化| 数学建模完整代码+建模过程全解全析
同理,可以求得FBG3-FBG6点的曲率:
2024年第十六届“华中杯”(C题)大学生数学建模挑战赛| 曲率,多目标优化| 数学建模完整代码+建模过程全解全析
根据题目中给出的初始点坐标、光纤方向和受力后切线与水平方向的夹角,可得到平面曲线方程为:
2024年第十六届“华中杯”(C题)大学生数学建模挑战赛| 曲率,多目标优化| 数学建模完整代码+建模过程全解全析
利用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计算出平面曲线在等间距弧长采样点处的曲率,如下图所示:

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

首先,根据题目中给出的近似关系式2024年第十六届“华中杯”(C题)大学生数学建模挑战赛| 曲率,多目标优化| 数学建模完整代码+建模过程全解全析,我们可以得到FBG1-FBG6对应的曲率分别为:2024年第十六届“华中杯”(C题)大学生数学建模挑战赛| 曲率,多目标优化| 数学建模完整代码+建模过程全解全析。其中,λ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各点的坐标分别为2024年第十六届“华中杯”(C题)大学生数学建模挑战赛| 曲率,多目标优化| 数学建模完整代码+建模过程全解全析

那么,FBG1-FBG6各点的曲率分别为:2024年第十六届“华中杯”(C题)大学生数学建模挑战赛| 曲率,多目标优化| 数学建模完整代码+建模过程全解全析。其中,λ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])

输出结果为:

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

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

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

对于测试1:

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

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

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

对于测试2:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

第三个问题是请根据平面曲线方程2024年第十六届“华中杯”(C题)大学生数学建模挑战赛| 曲率,多目标优化| 数学建模完整代码+建模过程全解全析,以适当的等间距弧长采样,计算这些采样点的曲率。然后以采样的曲率为基础,构建数学模型,重构平面曲线,并分析重构曲线与原始曲线出现误差的原因。

首先,根据平面曲线方程2024年第十六届“华中杯”(C题)大学生数学建模挑战赛| 曲率,多目标优化| 数学建模完整代码+建模过程全解全析,在[0,1]区间内,可以求得曲线的斜率为2024年第十六届“华中杯”(C题)大学生数学建模挑战赛| 曲率,多目标优化| 数学建模完整代码+建模过程全解全析。根据曲率的定义,可以得到曲线在任意一点的曲率为2024年第十六届“华中杯”(C题)大学生数学建模挑战赛| 曲率,多目标优化| 数学建模完整代码+建模过程全解全析,代入2024年第十六届“华中杯”(C题)大学生数学建模挑战赛| 曲率,多目标优化| 数学建模完整代码+建模过程全解全析,可以得到曲线在任意一点的曲率为2024年第十六届“华中杯”(C题)大学生数学建模挑战赛| 曲率,多目标优化| 数学建模完整代码+建模过程全解全析

其次,以等间距弧长采样,则采样点的弧长为2024年第十六届“华中杯”(C题)大学生数学建模挑战赛| 曲率,多目标优化| 数学建模完整代码+建模过程全解全析,其中Δx为等间距采样的步长,Δy为曲线在该点的斜率乘以Δx。根据曲率的定义,可以得到采样点的曲率为2024年第十六届“华中杯”(C题)大学生数学建模挑战赛| 曲率,多目标优化| 数学建模完整代码+建模过程全解全析

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

问题3.请根据平面曲线方程2024年第十六届“华中杯”(C题)大学生数学建模挑战赛| 曲率,多目标优化| 数学建模完整代码+建模过程全解全析,以适当的等间距弧长采样,计算这些采样点的曲率。然后以采样的曲率为基础,构建数学模型,重构平面曲线,并分析重构曲线与原始曲线出现误差的原因。

解:根据微积分知识,曲率2024年第十六届“华中杯”(C题)大学生数学建模挑战赛| 曲率,多目标优化| 数学建模完整代码+建模过程全解全析可以表示为曲线的弧长2024年第十六届“华中杯”(C题)大学生数学建模挑战赛| 曲率,多目标优化| 数学建模完整代码+建模过程全解全析和曲线函数2024年第十六届“华中杯”(C题)大学生数学建模挑战赛| 曲率,多目标优化| 数学建模完整代码+建模过程全解全析的导数2024年第十六届“华中杯”(C题)大学生数学建模挑战赛| 曲率,多目标优化| 数学建模完整代码+建模过程全解全析的函数,即2024年第十六届“华中杯”(C题)大学生数学建模挑战赛| 曲率,多目标优化| 数学建模完整代码+建模过程全解全析。由于我们采用等间距弧长采样,因此2024年第十六届“华中杯”(C题)大学生数学建模挑战赛| 曲率,多目标优化| 数学建模完整代码+建模过程全解全析2024年第十六届“华中杯”(C题)大学生数学建模挑战赛| 曲率,多目标优化| 数学建模完整代码+建模过程全解全析是等价的,可以将曲率表示为2024年第十六届“华中杯”(C题)大学生数学建模挑战赛| 曲率,多目标优化| 数学建模完整代码+建模过程全解全析

根据题目给出的曲线函数2024年第十六届“华中杯”(C题)大学生数学建模挑战赛| 曲率,多目标优化| 数学建模完整代码+建模过程全解全析,可以求出导数为2024年第十六届“华中杯”(C题)大学生数学建模挑战赛| 曲率,多目标优化| 数学建模完整代码+建模过程全解全析。因此,根据上述公式,我们可以得到采样点的曲率2024年第十六届“华中杯”(C题)大学生数学建模挑战赛| 曲率,多目标优化| 数学建模完整代码+建模过程全解全析

接下来,我们可以根据上述公式,以采样点的曲率2024年第十六届“华中杯”(C题)大学生数学建模挑战赛| 曲率,多目标优化| 数学建模完整代码+建模过程全解全析为基础,构建数学模型,重构平面曲线。具体的重构方法可以是根据采样点的曲率2024年第十六届“华中杯”(C题)大学生数学建模挑战赛| 曲率,多目标优化| 数学建模完整代码+建模过程全解全析,反推出曲线函数2024年第十六届“华中杯”(C题)大学生数学建模挑战赛| 曲率,多目标优化| 数学建模完整代码+建模过程全解全析,然后再通过积分求出曲线函数2024年第十六届“华中杯”(C题)大学生数学建模挑战赛| 曲率,多目标优化| 数学建模完整代码+建模过程全解全析。最后,根据2024年第十六届“华中杯”(C题)大学生数学建模挑战赛| 曲率,多目标优化| 数学建模完整代码+建模过程全解全析可以得到平面曲线。

重构曲线与原始曲线出现误差的原因可能有两个方面。第一方面是采样点的曲率2024年第十六届“华中杯”(C题)大学生数学建模挑战赛| 曲率,多目标优化| 数学建模完整代码+建模过程全解全析的精确度问题,因为采样点的曲率是通过计算得到的,可能存在一定的误差。第二方面是根据采样点的曲率2024年第十六届“华中杯”(C题)大学生数学建模挑战赛| 曲率,多目标优化| 数学建模完整代码+建模过程全解全析反推出曲线函数2024年第十六届“华中杯”(C题)大学生数学建模挑战赛| 曲率,多目标优化| 数学建模完整代码+建模过程全解全析时,需要进行积分操作,可能存在一定的积分误差。因此,重构曲线与原始曲线出现的误差可能是由于采样点的曲率和积分误差的叠加导致的。

平面曲线方程可得曲率公式:2024年第十六届“华中杯”(C题)大学生数学建模挑战赛| 曲率,多目标优化| 数学建模完整代码+建模过程全解全析。以适当的等间距弧长采样,假设间距为h,则有采样点的横坐标为2024年第十六届“华中杯”(C题)大学生数学建模挑战赛| 曲率,多目标优化| 数学建模完整代码+建模过程全解全析。根据前面得到的曲率公式,可得采样点的曲率为:2024年第十六届“华中杯”(C题)大学生数学建模挑战赛| 曲率,多目标优化| 数学建模完整代码+建模过程全解全析。以这些采样点为基础,构建数学模型,重构平面曲线为:2024年第十六届“华中杯”(C题)大学生数学建模挑战赛| 曲率,多目标优化| 数学建模完整代码+建模过程全解全析。从上面可以看出,重构曲线与原始曲线出现误差的原因主要是因为采样点的间距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)

上述代码的运行结果为:

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

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

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

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

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

版权声明:本文为博主作者:CS数模原创文章,版权归属原作者,如果侵权,请联系我们删除!

原文链接:https://blog.csdn.net/qq_25834913/article/details/137942175

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
青葱年少的头像青葱年少普通用户
上一篇 2024年4月22日
下一篇 2024年4月22日

相关推荐