-1

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

可接受的输入是“+,-,*,^”运算符和“Sin,Cos,Tg,Ctg,Log”三角函数的组合,例如:

2*x^2+x^(log(5+Sin(x)+1)*x^5)/(Tg(Log(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)));
}

所以,我完全不知道我该怎么办......你有任何提示,样本,想法或解决方案吗?

4

2 回答 2

1

如果你想创建自己的解析器,我真的推荐ANTLR。这是一个很棒的解析工具,特别是如果你想有自己的逻辑围绕它。这里还有一组非常有用的教程视频。

于 2013-03-29T14:00:00.730 回答
0

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

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

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

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

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

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

于 2013-03-29T13:59:52.200 回答