好吧,我在字符串中有一个数学表达式
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)
即,应用分配属性,但没有计算值。
谁能帮我?
好吧,我在字符串中有一个数学表达式
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)
即,应用分配属性,但没有计算值。
谁能帮我?
如果您希望将数学表达式转换为另一种形式,我建议先将其更改为后缀/前缀表达式(< 链接还告诉您如何转换回“中缀”),然后尝试使用它(您可以对待您的函数(例如sin(x)
)作为常量)。希望你可以自己做,有很多资源可以找到参考。
链接到一个简单的中缀/后缀计算器 ,如果您以前没有尝试过,可以尝试一下。
接下来,您转换回中缀,但这次分配乘法和除法
例如。
*
/ \
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
添加一个"A*"
字符串'+'
'-'
当您除以B
之后,您将一个"/B"
字符串添加到最后并且在每个'+'
or之前'-'
。
我相信这应该涵盖所有简单的表达方式。当表达式广泛扩展时,您可能(或可能不需要)需要更多的情况,还没有完全考虑清楚。我会很感激反馈。