【问题标题】:How do I make a mathematical function f(x) for any generic f? [duplicate]如何为任何通用 f 制作数学函数 f(x)? [复制]
【发布时间】:2013-10-10 16:25:09
【问题描述】:

我尝试通过谷歌和这里搜索它,但我没有找到我的意思的问题(搜索引擎不理解我指的是功能的上下文)。

基本上我想做以下事情

double f(String function, double a){
    return function.Function(a);
}

如果字符串函数的形式是“x^2+2”,它可能会以某种方式转换为“x.pow(2) + 2”,然后 x 被 a 替换,结果返回函数。

是否有任何 Java 类或方法可以实现我所说的(或简单的方法)?或者来自其他来源的任何代码,可以执行我所说的操作或变体。

我不必编写我所说的代码,我只需要 f(x) 来解决作为输入传递的任何函数字符串的根查找问题。我以为Java在某个地方会有这样的方法,但我找不到。

【问题讨论】:

  • 你需要为数学表达式编写解析器
  • 这不是 Java 核心的一部分。您需要一个能够解析您的字符串并对其进行评估的库。搜索“parser”或“equation evaluator”等术语。
  • 看看这个library project

标签: java function math


【解决方案1】:

因此,在 Java 中,您有一个基本问题,因为您不能直接将字符串转换为数学表达式。您的选择如下:

  • 搜索可以将特定格式的字符串转换为数学表达式的库。
  • 自己解析字符串。字符串解析很困难且容易出错,而围绕此的 Java 会很困难。
  • 使用 Scala,它允许您直接组合函数以传递到您的函数中,而不是尝试进行从人类可读字符串到机器可解释函数的昂贵转换。请注意,Scala 可以与 Java 互操作,但有一点学习曲线。其他函数式语言也可以处理此问题,但可能缺乏互操作性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-01
    • 1970-01-01
    相关资源
    最近更新 更多