在我的计算机编程课程介绍中,我被分配了一个项目。目标是为某些工程或物理/科学问题实施数值模型。该课程使用Java。
一个例子可能是足球的飞行。我正在寻找比仅仅模拟重力、空气阻力……和使用欧拉求解更有趣的东西。
我对数值优化很感兴趣,我查看了一些算法,但找不到任何可以应用它们的主题。
你能给我一些想法吗?
谢谢你。
在我的计算机编程课程介绍中,我被分配了一个项目。目标是为某些工程或物理/科学问题实施数值模型。该课程使用Java。
一个例子可能是足球的飞行。我正在寻找比仅仅模拟重力、空气阻力……和使用欧拉求解更有趣的东西。
我对数值优化很感兴趣,我查看了一些算法,但找不到任何可以应用它们的主题。
你能给我一些想法吗?
谢谢你。
有许多有趣的常微分方程 (ODE) 构成了有趣的模型案例。例如,Lotka 和 Volterra 的捕食者-猎物模型提供了有趣的案例,并且可以很容易地推广到模拟多个相互作用物种的动态。
同样,对多个物体的引力相互作用进行建模可以拍出漂亮的照片。
随意使用我在数学建模入门课程中获得的片段来获得灵感:http: //www.math.tamu.edu/~bangerth/teaching.html#2010-fall-442
扩展 Wolfgang 的答案,您可以找到 ODE 的另一个地方是化学。一个 0-D 模型,假设 Arrhenius 速率为将导致一组非线性 ODE。设置并运行求解器后,您可以轻松扩展它以包含更多物种和更多反应,直到您创建足够有趣的东西以满足您的目的。
但是有一个警告,根据系统的不同,系统最终可能会变得僵硬,因此需要一个隐式求解器。我将假设实现这样的求解器超出了您的课程范围,但是,如果您正在编造虚构的费率,您应该能够避免这种情况。如果允许并且您愿意,您可以从netlib下载 Java 的开源隐式库。注意:我没有亲自使用过这个库,只是阅读了自述文件,它看起来有据可查并且相当完整。
在您的问题中,您提到了优化,但这可能比 ODE 求解器稍微复杂一些。但是,如果您确实想走这条路,则可以研究诸如找到许多变量的标量函数的局部最小值()。同样,很难知道这对于您的技能水平来说是否太多或太微不足道。作为参考,我希望在工程师的第二个“编程”课程中,这可能是在第二年或第三年学习并在 matlab 中实现。
旅行商问题是一个很好的优化问题。这也是一个需要全局优化的NP-hard问题。为了解决这个问题,您必须尝试几种启发式优化算法,例如模拟退火和进化算法,这使您熟悉全局优化的思想。