第四次培训:讲解2019年国赛A题第一问

2019年国赛A题链接

一、对A题数据进行拟合

这个题主要是学习了polyfit拟合函数以及画图的一些方法。

p = polyfit(xdata, ydata, 2);
y = polyval(p, xdata);
figure;
plot(xdata, ydata, 'b');
hold on;
plot(xdata, y, 'r');
legend('原始数据', '2阶多项式拟合');
xlabel('压强P(Mpa)');
ylabel('弹性模量E(Mpa)');
  • polyfit(x, y, n):对数据x、y进行n阶多项式拟合,返回拟合的参数
  • polyval(p, x):利用拟合的参数计算拟合的y值
  • figure:创建一个新的窗口
  • plot(x, y, []):画出x, y的函数图像。[]中可以设置一些画图的样式,比如'r*'表示用红色(red)的*画出图像
  • legend(str1, str2, ...):根据画图的顺序,在图上标出什么样式的图像表示哪条线
  • xlabel、ylabel:设置x轴、y轴的名字

所画图像如下:
第四次培训:讲解2019年国赛A题第一问_第1张图片

二、自己建模,求出第一问的t0值

这一问怎么说呢。。。看了3天别人的论文才自己把程序编出来T_T。总的来说,建模求解的过程如下:

  1. 根据 Δ P Δ ρ = E ρ \frac {\Delta P}{\Delta \rho}= \frac {E}{\rho} ΔρΔP=ρE,可以通过迭代的方式求出 P − ρ P -\rho Pρ的关系
  2. 根据题目所给的A处、B处然后的速率,将油管中燃油的变化量表示出来
  3. 将该微分式改为差分迭代式,而差分形式可以通过计算机迭代计算出任意时刻管中的压力
  4. 在此基础上,对开启阀门时间进行搜索,使得在较长一段时间内(若干个周期100ms),管中压力稳定在100MPa左右

三、小结

1. 数据处理

在遇到在某个方程中,有某个变量前一个状态和后一个状态的差量的时候,可以不进行推导,考虑利用迭代的方式计算出所需变量的离散值,然后进行拟合。

2. 模型变型

当建立的模型中有积分,可以考虑积分离散化,并自己设定区间间隔。当建模的模型中有微分时,实际上也可以看成差量,然后利用迭代计算离散值。

3. 搜索策略

当搜索区间较大时(比如这个题的搜索区间是[0.1, 1],区间间隔为0.001),直接搜索比较慢,可以考虑如下策略:

  • 现在[0.1, 1]中以0.1为步长进行搜索,得到一个范围[x1, x2]
  • 然后在[x1, x2]中以0.01为步长进行搜索,得到一个范围[x3, x4]
  • 然后…
  • 当搜索的范围到达所需精度的时候,就可以停止了
4. 最优方案的建模

这几天看了好几天该题的论文,他们的建模方式基本上都是:

  • 建立一个目标函数,这个目标函数可以描述油管中压力稳定在100MPa的程度
  • 然后找出若干约束条件,比如一些迭代式,迭代式的初值,迭代式中所需要的一些函数等等
  • 最后通过计算机的搜索,找出使目标函数最小的最优解

你可能感兴趣的:(数学建模)