嗯,我在字符串中有一个数学表达式
String myExpression = "2-3*(cos(x)+sen(x)-exp(-x))*(sen(2x)+1/(cos(x)))";我想知道如何获得表达式(在字符串中):
2-3*cos(x)*sen(2x)-3*cos(x)/cos(x)-3*sen(x)*sen(2x)-3*sen(x)/cos(x)+3*exp(-x)*sen(2x)+3*exp(-x)/cos(x)即,应用分布属性,但不计算值。
有谁可以帮我?
发布于 2013-04-10 08:41:59
如果你想把一个数学表达式转换成另一种形式,我建议先把它转换成一个 (< link也告诉你如何转换回‘中缀’),然后试着玩弄它(你可以把你的函数(例如.sin(x))作为常量)。希望你可以自己去做,有很多资源可以找到参考资料。
Link to a simple Infix/Postfix Calculator,所以如果你以前没有尝试过,你可以试一试。
接下来,您将转换回infix,但这一次将分配乘法和除法
例如:
*
/ \
A +
/ \
B /
/ \
C D
Infix: A*(B+C/D)
Postfix: ABCD/+*
ABCD/+*
C and D division first (distribute) >>> C/D
B and C/D addition(addition,nothing to distribute) >>> B+C/D
A and B + C/D multiplication (distribute) >>> A*B+A*C/D因此,一般来说,您除了连接加法和减法字符串之外什么也不做。
但是:
除以'-'
'-'.
乘法,则在每个"A*"或'+'之后添加一个B字符串,然后在每个"/B"或'+'之前添加一个'+'字符串
我相信这应该涵盖所有简单的表达式。当表达式广泛地分支时,您可能(也可能不)需要更多的情况,因为它还没有完全考虑清楚。我很感谢大家的反馈。
https://stackoverflow.com/questions/15913563
复制相似问题