如何评价 2017 数学建模国赛?
的有关信息介绍如下:
我们组选的是A题,我负责算法的设计与实现,不知道自己做的对不对。交流下对这个问题的想法。
首先很明确可以看出图上两条主要的投影哪一条属于椭圆,一条属于圆。可以首先用粗略的方法将椭圆和圆的投影分开:
注意右侧的图是圆的投影,圆投影的宽度和投影的角度是没有关系的,注意到右图的右侧两个图形的投影是没有交集的,所以是精确的分割。所以我们可以通过右图的右侧估计出圆的直径。
当然可以选择用非零区域的间隔来估计,但是这一结果是极其不精确的,存在着误差。我们使用的方式拟合投影曲线:
考虑到比例系数,投影曲线应该形如
实际投影曲线 ,我们通过最小化平方残差
最小化的办法是使用冲量优化的梯度下降算法:
起到了阻尼的作用,而冲量在每次得到的下降方向相同的时候可以使下降速度逐渐累加,加速下降过程;在每次得到的下降方向不同的时候可以避免在函数性质不好的地方来回震荡。
平方残差的对数与迭代次数关系图
最终我们根据68组不同的数据分别得到了R和 ,方差分别为 和 ,达到了精度要求。
我们最终取平均值R = 14.4533, = 0.4905。
这样可以得到每个探测器之间的距离为:0.2768。
椭圆投影处理:
当椭圆长轴相对射线相对夹角为 时,根据旋转公式,最终可以得到
为了射线和椭圆存在交点,我们可以看到根号中的式子必须是正数,可以得到
这样投影的宽度应该是:
这样通过得到的实际投影宽度w可以给出椭圆的偏角 ,但是由于这时无法得到精确的实际宽度并且函数形式非常复杂,这里我们通过如下方法给出一个偏角的大概估计:
画出wide的图像:
在图像中由宽度读出对应的角度值,可以得到偏角的大体估计。
为了更精确的计算出角度值,同样的使用冲量优化的梯度下降算法,拟合这一公式中的 。
(左侧为估计形状,右侧为实际投影形状),两者高度一致。
通过重建椭圆的投影图像,现在可以精确的区分椭圆投影和圆投影,包括在两者重合的地方。我们通过之前的计算同样得到了两个中心点的投影轨迹相对于偏角的变化图像:
显然这是一条三角曲线,拟合之,
同样使用加冲量的梯度下降法得到椭圆的参数为:A(40.4325),phi(-2.1659),Bias(256.5);圆的参数为:A(197.3870),phi(-1.6859),Bias(256.5)
Bias相同说明了旋转中心投影恰好在屏幕的中心。
振幅恰好是中心到旋转点的距离,至此我们得到了椭圆的中心和圆的中心距旋转中心的距离分别为:11.1899和54.6277。有圆和椭圆中心的距离为45,根据简单的三角计算可得旋转中心的位置是(-9.2663,6.2728),旋转中心相对两几何体中心的偏角为0.4800。
而射线与x正方向的夹角和thetaA恰好互余,可求出射线的角度。
第2、3问我们使用的是Matlab内置的iradon函数进行计算,注意到第一问的结果的精度直接影响重建图片的精度。



