解析数学2D函数模式

时间:2013-03-29 13:46:44

标签: java parsing

我一直在考虑计算输入定义的函数的定积分的程序。

可接受的输入将是" +, - ,*,^"运营商和" Sin,Cos,Tg,Ctg,Log"三角函数,例如:

  

2 * X ^ 2 + X ^(日志(5 +的sin(x)+1)* X ^ 5)/(Tg的(对数(X)))

唯一困难的是解析输入字符串;这种方法有望作为产品:

public static double customFunc(double x,...)
{
     return <client input>;
}
在我的例子中

public static double customFunc(double x,...)
{
     return 2*x^2+x^(log(5+Sin(x)+1)*x^5)/(Tg(Log(x)));
}

所以,我完全不知道应该怎么做......你有什么提示,样品,想法或解决方案吗?

2 个答案:

答案 0 :(得分:1)

如果你想创建自己的解析器,我真的推荐ANTLR。它是一个很好的解析工具,特别是如果你想拥有自己的逻辑。还有一套非常有用的教程视频here

答案 1 :(得分:0)

我想我可以给你一些想法。

您必须解析函数字符串,并将运算符分开。

您可以使用Map将运算符映射到Java函数。

+ to +
Sin to Math.sin(x)
etc.

然后,您将构建将在StringBuilder中进行计算的Java行。

不知何故,您将执行您创建的Java行。这是我不知道该怎么做的部分。