如何求解点之间的腕骨曲线曲线

作者图像

经过刘刘

2015年10月20日

两点之间的最短路线不一定是直线。如果按最短的路线,我们的意思是要花费最少的时间从A点到B点,并且两个点处于不同的海拔,则由于重力,最短的路线是Brachistochrone曲线。在这篇博客文章中,我们演示了如何使用内置的数学表达式和COMSOL多物理学中的优化模块来求解Brachistochrone曲线。

查找臂杆菌曲线

想象一下,让大理石向下滚动弯曲的坡道,例如在溜冰公园中看到的坡道,并测量大理石从点A点滚动到点B的时间。我们的目标是重新设计这两个点之间的坡道形状,因此,大理石之间的旅行时间最短。为简单起见,我们考虑了忽略摩擦并且大理石无限小(点质量)的理想情况。

曲线的示意图。

Brachistochrone曲线是一条理想化的曲线,可提供最快的下降。实际上,对这种情况有一个分析解决方案,或者在某些派生工作中,我们可以使用COMSOL多物理学的PDE功能来解决该问题。但是,由于我是“坚信最少动作原则”,这是一种说“懒惰的物理学家”的方式,因此我们将使用优化模块。

设置comsol多物理模型

假设我们问题的点A位于原点(x,y)=(0,0),则腕骨的分析解是此形式的参数曲线:

(1)

\ begin {align*}
x(t)&=&r(t-sin(t))\\
y(t)&=&r(-1+cos(t))
\ end {align*}

在哪里参数r是常数和参数t是参数曲线的运行参数,并且与taTB沿着曲线。通常,当我们解决此问题时,我们将获得点B的位置并解决rt

在这里,我们将从腕足激素的分析解决方案开始rt这为我们提供了点B的位置。我们将展示如何使用COMSOL多物理和优化模块中的优化功能近似此分析解决方案。

我们将从空白模型开始。实际上,我们不会在模型构建器中添加任何“组件”。不需要几何,物理或网格。这是“没有模型的模型”的有趣示例。

首先,我们定义一组全局参数。我们设置常数参数r到1和价值TB对于B点1.2 \ pi。(请记住,A是起源,如此隐式ta = 0。)B点的位置(XB,YB)然后可以使用等式计算。(1),如下面的屏幕截图所示。

定义全局参数集。

接下来,我们使用插值函数来近似腕骨曲线曲线。我们定义X- 几个插值点的位置为x1〜x4并给予y- 位置(Y1〜Y4)最初的猜测,使得插值点始于点A和点B之间的一条直线。

该插值函数可以如下屏幕截图所示。

设置插值功能。

您可以单击创建图按钮生成插值功能的图。为了清楚起见,请删除两个外推图。接下来,将分析解决方案的线图添加到同一绘图组中,以与稍后的数值解决方案进行比较。

要创建参数曲线的图,请首先在全局定义节点下创建虚拟分析函数,将参数的上限设置为TB(在“绘图参数”部分下)。该分析功能的唯一目的是提供t0和0和TB为了我们绘制参数曲线。点击创建图并拖拉结果线图1在......之外1D情节组2然后进入1D情节组1(其名称将自动更改为线图2)。为了y- 轴数据,输入与等式相对应的表达式。(1)r*(-1+cos(root.x))。同样,对于X- 轴数据,输入r*(root.x-sin(root.x))

请注意,comsol多物理变量root.x这里对应于t等式中的参数。(1)

点击阴谋按钮。现在,我们有了分析解(绿色曲线)和初始猜测(蓝色曲线和黑点)的图。

分析解决方案的图。

计算旅行时间

为了计算大理石从A点滚动到B点的旅行时间,我们使用以下假设:运动是无摩擦的,因此势能中的所有损耗都会变成动能,这与速度的平方成正比。因此,如果曲线由公式表示y = f(x),然后瞬时速度与高度损耗的平方根成正比:v \ propto \ sqrt {0-f(x)}(回想一下,我们假设A点A的原始高度为0)。对于无限运动DX在里面X- 方向,大理石沿曲线行驶的路径长度为ds = dx \ sqrt {1+f'(x)^2}。行进长度所需的时间仅仅是长度除以速度d \ tau = ds/v。因此,我们在任何给定曲线的总旅行时间中获得了表达式y = f(x)

t = \ int {d \ tau} = \ int {ds/v} \ propto \ int_0^{xb} {\ sqrt {\ sqrt {{1+f'(x)^2} \ over {0-f(x)}} DX}

我们现在要做的就是让comsol软件找到最小化该表达式的曲线。

您可能已经注意到我们使用“与成比例的”符号(\ propto)在旅行时间的表达中,因为我们忽略了大理石的质量和公式中的重力加速度常数。由于这些数字结合起来仅限于恒定因素扩展旅行时间,因此它们不会影响最小化问题的曲线外观。换句话说,腕骨曲线曲线与大理石的重量无关。

由于我们使用插值功能int1近似曲线F(x),我们可以定义一个全局变量t在旅行时间使用上述公式:集成(SQRT((1+(D(int1(x),x))^2)/max(0-int1(x),eps)),x,0,xb)。额外的表达max(...,EPS)在分母中,可以防止划分为零的情况,如下所示。

屏幕截图说明了旅行时间的计算。

优化求解器

现在,我们准备要求该软件最大程度地减少我们的旅行时间。创建一个空的研究,然后右键单击以在其下添加优化节点。我们可以将坐标搜索,Nelder-Mead,BobyQA或Cobyla优化求解器用于此“无模型”优化问题。科比拉原来是最快的。

在“设置”窗口中,在“部分目标函数”下,输入t对于表达式,默认情况下将最小化。然后,在“部分控制变量和参数”下,使用添加按钮(“加”标志图标)添加参数Y1 -Y4。初始值字段自动填充全局参数表中的相应值。在求解部分时,在输出下,检查阴谋复选框。这些设置显示在下面的屏幕截图中。

comsol多物理学中的优化设置。

点击计算观察优化求解器将插值曲线上下移动,直到达到最小的旅行时间为止。即使使用非常粗的线性插值曲线仅使用四个插值点,下图中的结果也显示出与分析溶液的显着一致性。高阶插值和更多的插值点将进一步改善解决方案。

表示优化结果的图。

结论

几年前,我的导师William verterling来自Zink Imaging在午餐时与我们中的一些人聊天,介绍了我们如何使用comsol多物理学来解决任何问题,因为它提供了数学工具来处理科学和技术中遇到的各种方程式。这个想法最终演变成了他的主题演讲。巴别库图书馆”在2012年波士乐动滚球app下载顿Comsol会议上。我们使用了一个“没有模型的模型”的示例来通过利用该软件的内置数学表达式和优化功能来解决Brachistochrone曲线问题。我希望这次演示能够激发对Comsol多物理学的更具创造性的用法,以应对更多的技术挑战。

类别


评论(3)

发表评论
乐动体育app
加载...
詹姆斯·弗雷斯(James Freels)
詹姆斯·弗雷斯(James Freels)
2015年10月21日

我第一次看到这个问题,当时在“变异微积分”或有时称为“变异的微积分”(COV)时,我可以准确地解决此问题。我记得COV的是,实际上很少有问题可以通过这种方式解决,但是它确实提供了一种数学基础,可以从中继续进行近似解决方案。确实,可以声称,构成Comsol使用的有限元方法的基础的Garlerkin弱公式可以在COV的框架内被视为。因此,非常有趣的是,您还使用了COMSOL优化模块来通过离散方法解决Brachistochrone问题。再一次,这证明了Comsol中可用的真正力量。顺便说一句,该COV课程的讲师是机械工程学教授,他还教了自然的对流传热。

刘刘
刘刘
2015年10月22日

亲爱的詹姆斯,
是的,这篇文章的目的是证明COMSOL提供了“解决任何问题”的工具,并且优化模块为用户可用的工具箱增加了更多的武器库。感谢您分享您对此的个人观点。我们真的很感激!
真挚地,
基恩

El-Jallal说
El-Jallal说
2016年4月26日

嗨,李刘,大嗨,每个人,

我尝试使用弱形式来计算复杂的K光子带图(请参阅纸质波纹管)。我到达定义弱形式和所有参数,但是我的问题是如何定义定期功能h的浮点边界条件。结果我发现的是错误的,我不知道哪里错了。
纸:https://www.osapublishing.org/oe/abstract.cfm?uri=oe-19-20-19027

对于周期性的条件,这就是我所做的:

*在定义中 - >线性挤出1:我将名称(linext1)放置,然后选择一个脸(垂直于x)以及所有源和目标垂直。

*我重复相同 - > Linear挤出2:linext2。我选择一张脸(垂直于y)以及所有源和目的地的脸。

*我重复相同 - > Linear挤出3:linext3。我选择一张脸(垂直于z)以及所有源和目的地的脸。

开始,
*在定义中 - >变量:选择第一张面,我定义:extrcpl_source_pconstr1x = hx,extrcpl_source_pconstr1y = hy,extrcpl_source_pconcons_pconstr1z = hz,

*我转到现在是目的地的另一个变量:定义 - >变量:选择我定义的第一张面孔:pconstr1x = linext1(extrcpl_source_pconstont1x)。

我重复了两个方向的重复(两个变量,一个first facttrcpl_source_pconstons1x = hx…而另一个pconstr1x = linext1(extrcpl_source_pconstons1x)…)。

结尾。

这是定义我的周期函数h的浮点边界条件的权利。

如果有人有一个主意,我将不胜感激。
十分感谢。
诚挚地。
说。

探索comsol乐动体育赛事播报博客