电池建模的最佳语言?

时间:2015-06-15 10:41:26

标签: python matlab physics modeling battery

我有兴趣了解是否就使用一种语言或环境构建基于物理的电池计算模型达成了一致意见?

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

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

我倾向于尽可能免费(如啤酒和语音)环境,但我认识到某些专有环境可能具有有用的内置工具箱。此外,我希望环境允许代码轻松并行化,以便它可以跨多个核心运行。

1 个答案:

答案 0 :(得分:4)

这是一个广泛的问题,但我将分享到目前为止我所经历的一切。也许它有一些用处。请记住,这是我个人的选择。

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

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