使用Mathematica构建奥林匹克赛车场的主要功能
“描述轨道的某些方程式在解析上无法求解,在数值上求解较慢。为了避免这种潜在的障碍,我充分利用了Mathematica的插值函数功能来创建快速计算、可逆的插值函数, (在我的允许范围内)在数值上与其建模的功能相同。”
多维符号数组
Mathematica通过多维数据结构指定了大约20,000个独特钢管的每一块,这些数据结构给出了钢管的形状以及在3D中的位置和方向。 此数据结构中的某些条目是数字条目,而某些则是符号条目。 例如,管的直径是预先数字已知的,但是管的数量、位置或其他尺寸(包括用于三重斜切切口的角度)都不是已知的。 这些未知数是象征性指定的。
然后将我们的场地考虑因素(整体形状和大小)、骑车舒适性考虑因素以及机械制造设计思想纳入考虑范围,以将零件的位置约束并链接到整体模型中。 在很大程度上,这是通过将解析几何中的符号操作应用于基本零件来完成的。本质上,我使用符号坐标变换和其他代数技术来切割、提升、旋转和平移75吨钢。 我可以说,根据个人经验,用坐标变换来抬起24英尺的钢梁要比用手抬起容易得多。
非线性方程求解
轨道的混合符号/数字模型产生了一个由数千个非线性方程组成的系统,这对于人类来说是不可能的,更不用说求解了。 但是,在Mathematica中,我从来没有被迫将问题分解为单独的符号和数字问题。 我可以将问题陈述和约束保留为自然形式,并让机器根据需要进行代数运算。
当在项目过程中必须更改各种约束时,我使用符号方程式的方法变得至关重要。 由于我的Mathematica代码不包含符号约束的先验数值缩减,因此我能够快速、轻松地重作问题并再次解决。
嵌入式图形
我使用过的Mathematica的另一个功能是可以将动态计算的图形与模型一起嵌入的功能。 在轨道模型的各个关键位置,我添加了注释和图形来监视轨道的各种参数(例如,长度、角度、曲线甚至某些3D渲染),以确保质量。 如果我改变输入约束的方式导致整体设计以一种奇怪的、意想不到的方式变化,那么我就可以通过扫描分散在笔记本中的中间结果的图形来快速查明行为的原因。
插值函数
描述轨道的某些方程式在解析上无法求解,而在数值上求解较慢。 为了避免这种潜在的障碍,我充分利用了Mathematica的插值函数功能来创建快速计算的、可逆的插值函数,这些函数在数值上与他们建模的函数相同(在我的公差范围内)。 例如,作为赛车场曲线基础的菲涅耳积分的计算成本很高。 可以将它们转换为可逆的、相对便宜的插值函数,如下所示:
CurveX=
Interpolation@
Table[{b,NIntegrate[Sin[a t^2 /2], {t,0,b}]}, {b,-L,L,dl}];
通过适当选择dl,此插值函数CurveX [t]可以快速、准确地替换实际的菲涅耳积分。 仅Mathematica的这一功能就将整体计算时间减少了几个数量级,而没有牺牲任何明显的精度。 人们常常抱怨,当您的问题减少到符号或数字上难以解决的形式时,符号数学引擎会使您感到烦躁不安。 我发现使用Mathematica时,这些工具始终存在,把我从我为自己制造的困境中解救出来。
灵活的输出格式
Mathematica进行计算的最终结果是轨道上每一块独特钢块的完整数值说明。 Mathematica的灵活输出格式化功能用于生成多维3D列表形式的输出。 这些列表直接输入到CAD应用程序中,以方便地生成机械制造图。
我要强调的是,与今天通常进行机械设计的方式不同,CAD应用程序并未以任何方式用于布置轨道表面或执行任何尺寸计算。 它的使用仅限于最终质量检查,添加了正式的绘图边框、标注、标签和标题栏,并生成了最终的正式绘图仪渲染图。 从某种意义上说,Mathematica是自动CAD操作员。 它将我的高级工程设计转换为一套特定而完整的、逐个部分的蓝图,这通常是由人类设计师完成的工作。