选择一种语言来编写技术工程数学(我可以使用Java吗?)

时间:2010-01-27 10:07:15

标签: java math matlab programming-languages

我必须为工程公司编写原型应用程序。大多数工作都在计算各种工程属性(我在这里谈的是管道和真实的东西,而不是软件工程)。

然而,还必须有一个GUI:

  • 参数输入
  • 显示结果
  • 一些基本的图表

  • 目前的计算工作不涉及复杂的数学元素(目前没有矩阵),只是日志,平方根,相对简单的公式。稍后我将不得不做一些:

  • 曲线拟合
  • 数值近似

  • 我想知道Java是否已被用于真实世界的工程应用程序?

    是否有可用于此类的库?

    或者我最好在MatLab中编写,然后通过Java连接到代码?

    也对其他语言开放(虽然我们是一家Java商店)。

    9 个答案:

    答案 0 :(得分:14)

    我对Matlab和Java都有一些科学/工程类型代码的经验。是的,Java用于实际的科学和工程代码,是的,有可用的库。你当然可以用你想做的任何事情,所以我不确定你是否可以根据你当前的要求明智地区分这两者。我会问自己以下问题:

    1. 我在编写高级数学运算方面有多好?函数最小化,微分方程求解器,矩阵代数等操作。如果答案是不是那么倾向于Matlab,它将提供所有这些开箱即用的功能(尽管您可能需要额外的工具箱)。如果您选择Java,请确保您对浮点运算非常熟悉并处理使用它时出现的各种错误。
    2. 我想用Java编写所有内容,Matlab中的所有内容,还是我都乐于使用它们并在Matlab引擎上与Java GUI进行搏斗?我认为你可以做得更好(在模糊的意义上)使用Java的GUI比使用Matlab更好,但是Matlab的GUI设备对于大多数用户来说已经足够好了,因此将Matlab与Java集成的额外复杂性不值得解决。但是,许多Matlab用户不是软件工程师。
    3. 原型工作需要什么样的开发速度?如果你在Java和Matlab中同样熟练,那么我猜你可以在Matlab中更快地完成它,因为已经提供了数字内容,你可以专注于GUI。但如果你是熟练的Java程序员,那么你可能会决定坚持使用你所知道的东西。
    4. 如果原型成功,我将如何开发和部署生产应用程序?如果Matlab不适合您的部署想法,那么学习它并忘记它可能没有收获。
    5. 最后,既然你要求其他语言建议:忘记Java,忘记Matlab,忘记Python,忘记R,使用Mathematica,它更有趣,更强大。

    答案 1 :(得分:5)

    这听起来像是Matlab的工作:你没有给出任何不使用它的理由。有一些代码用于评估Java中的Matlab表达式:http://www.cs.virginia.edu/~whitehouse/matlab/JavaMatlab.html

    答案 2 :(得分:4)

    Python有几个不错的GUI工具包以及NumPy,并且编写起来既简单又有趣。

    答案 3 :(得分:4)

    我认为Java是一个不错的选择,即使它不被认为是快速应用程序开发的典型语言。

    优点:

    • 用于标准库(Swing)中桌面应用程序的多功能GUI工具包,
    • (相对)跨平台,
    • 很棒的图书馆,例如来自Apache;一个很棒的数学库可以colt;对于图表和图表,您可能需要jfreechart ..

    缺点:

    • “不那么快”的原型制作能力

    进一步阅读:

    答案 4 :(得分:4)

    我做了一些工作,我必须在Java中重新实现Matlab代码,所以它当然是可能的。由于Matlab能够直接在矩阵/数组等上运行,因此与Matlab原始代码相比,Java代码最终会变得非常冗长。

    您可能希望查看一些数学库,以了解它们是否支持您正在寻找的功能:

    答案 5 :(得分:1)

    这主要取决于在您的环境中将mathlab或其他数学引擎包含在您的产品中的容易程度。如果这很容易,我建议使用mathlab,但如果没有,例如如果您遇到许可问题或部署问题,那么您最好只使用普通的Java代码。

    答案 6 :(得分:0)

    您可能还想考虑R language

    答案 7 :(得分:0)

    我会搜索编写用于管道计算的软件。这个问题已经完成。 (正如您所指出的那样,计算并不困难。)至少我建议您了解可用的内容,成本是多少,以及收支平衡点的开发成本。

    商业产品将比你所写的任何东西都有一个巨大的优势:它将拥有一个更大的用户社区,一直在敲打它并发现比你的原型更长的时间。这也是值得的。

    您的机会成本是多少?您还可以通过开发时间做些什么来增加收入?

    答案 8 :(得分:0)

    不要忘记numpy或scipy。两者都允许您从Python调用快速矩阵库。