0

好吧,我在字符串中有一个数学表达式

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)

即,应用分配属性,但没有计算值。

谁能帮我?

4

1 回答 1

0

如果您希望将数学表达式转换为另一种形式,我建议先将其更改为后缀/前缀表达式(< 链接还告诉您如何转换回“中缀”),然后尝试使用它(您可以对待您的函数(例如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

所以,一般来说,你除了连接加法和减法字符串之外什么都不做。
但:

  1. 当您乘以时,您在每个或之后A 添加一个"A*" 字符串'+''-'

  2. 当您除以B 之后,您将一个"/B" 字符串添加到最后并且在每个'+'or之前'-'

我相信这应该涵盖所有简单的表达方式。当表达式广泛扩展时,您可能(或可能不需要)需要更多的情况,还没有完全考虑清楚。我会很感激反馈。

于 2013-04-10T00:41:59.333 回答