【问题标题】:Best language for battery modelling? [closed]电池建模的最佳语言? [关闭]
【发布时间】:2015-08-30 19:51:50
【问题描述】:

我有兴趣了解在使用一种语言或环境来构建基于物理的电池计算模型方面是否存在普遍共识?

建模通常涉及以数学方式表示电化学、机械和热现象、求解偏微分方程以及输出二维和三维不同变量的图。

到目前为止,我已经看到各种学术研究小组使用 MATLAB,但从这里的其他问题,我可以看到 Fortran 和 Python 已被建议用于相对通用的物理建模。 (见这里:https://goo.gl/3ACddi

我更喜欢免费(如啤酒和演讲)环境,但我承认某些专有环境可能具有有用的内置工具箱。此外,我希望环境允许代码轻松并行化,以便它可以跨多个内核运行。

【问题讨论】:

  • 这不是一个好问题,因为它太宽泛了。请阅读stackoverflow.com/help/how-to-ask
  • 这是基于意见的,因为它实际上取决于您的模型。 (线性/非线性)以及如何实现模型(ode with solver / as code)

标签: python matlab physics modeling battery


【解决方案1】:

这是一个宽泛的问题,但我会分享一下我迄今为止的经历。也许它有点用处。请记住,这都是我个人的选择。

MATLAB:广泛用于学术环境。一个原因是,Mathworks 遵循一种明智的商业策略,与零售奖相比,教育许可证非常便宜,因此许多学生和教授习惯了 MATLAB,即使那里可能有更好的东西。 MATLAB 的优点是非常容易编码。运行代码的第一个原型通常需要很短的时间。这是以牺牲性能为代价的(与 C/C++ 和 Python 相比,它们通常比 MATLAB 快一点)。缺点之一是 Matlab 不打算与 C/C++ 等竞争。您甚至在 matlab 中都没有命名空间。因此,在 matlab 中编写框架比在 C/C++ 中编写框架更令人厌烦(如果不是不可能的话)和低效。例如,如果您在工作区中创建了一个名为 max 的函数,它完全不执行任何操作,那么只要您的工作区位于工作区中,您就无法调用 Matlab 内置的 max 函数。

C++:我正在学习工程学,这里 C++ 是物理模拟方面最受青睐的选择。与其他语言相比,它真的很快。由于程序员负责内存管理,因此他或她可以通过编写高效且特定于案例的代码来处理内存,从而获得最后 10% 的性能。还有大量的开源库,例如 Eigen,它是一个用于矩阵和向量计算的库。

C:有些人(你好,Linus)确信 C++ 不是一门好语言,更喜欢纯 C,因为它更快一些,而且库“膨胀”(C++ 来自STD、Boost 等)更小。更多反对 C++ 的论点是它诱使程序员为每一件小事创建类,并出于懒惰而使用多态性。这两件事都会对性能产生负面影响,但是否值得拒绝使用 C++ 则由您决定。作为旁注:完整的 Linux 内核是用 C 编写的,而不是 C++,而且许多工具(如 GIT)也是用纯 C 编写的。

Python:另一种适合快速原型设计的语言,因为您不需要进行大量编译,并且语法经过优化,易于使用且直观。调试器不是必需的,因为您可以简单地使用解释器来检查不同的变量及其值,就像在 matlab 中一样。但与 Matlab 不同,Python 还允许您使用方法和 C++ 之类的所有内容创建对象。 (我知道 Matlab 最近添加了类,但我拒绝说它等同于 C++/Python)。 Python 也被广泛用于学术目的。有用于机器学习、人工智能和一切的开源库。还有一些库允许您使用不带近似值的分数。 IE。 1/6 存储为两个数字,分子和分母,而不是 double。在开源社区中,人们正在努力将 Matlab 的许多功能复制到 Python 中,这就是为什么您会发现许多开源爱好者都在使用它的原因。

您会看到,有些语言非常适合快速原型制作,这意味着您想要获得概念验证的场景。 MATLAB 很有用,因为您无需编译任何内容,并且可以快速可视化结果。 Python 在快速原型设计方面也值得注意。但是,一旦您需要在实际硬件上部署代码或想要销售具有用户界面和所有功能的成品,您可能会选择 C/C++ 或 Python,而不是 Matlab。

【讨论】:

    猜你喜欢
    • 2011-04-28
    • 2014-07-21
    • 2012-04-16
    • 2011-04-17
    • 2018-09-16
    • 2018-06-21
    • 2010-09-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多