标签: mathematical-expressions

从数学表达式中提取操作数的正则表达式

没有关于SO的问题解决了我的特殊问题.我对正则表达的了解很少.我正在使用Regex Class在Java中构建表达式解析器.我想从表达式中提取操作数,参数,运算符,符号和函数名称,然后保存到ArrayList.目前我正在使用这种逻辑

String string = "2!+atan2(3+9,2+3)-2*PI+3/3-9-12%3*sin(9-9)+(2+6/2)" //This is just for testing purpose later on it will be provided by user
List<String> res = new ArrayList<>();
Pattern pattern = Pattern.compile((\\Q^\\E|\\Q/\\E|\\Q-\\E|\\Q-\\E|\\Q+\\E|\\Q*\\E|\\Q)\\E|\\Q)\\E|\\Q(\\E|\\Q(\\E|\\Q%\\E|\\Q!\\E)) //This string was build in a function where operator names were provided. Its mean that user can add custom operators and custom functions 
Matcher m = pattern.matcher(string);
int pos = 0;
while (m.find()) 
{
    if (pos != m.start()) 
    {
        res.add(string.substring(pos, m.start()))
    }
    res.add(m.group())
    pos = m.end();
}
if (pos != string.length()) …
Run Code Online (Sandbox Code Playgroud)

java regex parsing mathematical-expressions

6
推荐指数
1
解决办法
943
查看次数

使用Lua评估数学表达式

在我之前的问题中,我一直在寻找一种在C中使用复杂数学表达式的方法,大多数建议都需要实现某种类型的解析器.

然而,有一个答案,建议使用Lua来评估表达式.我对这种方法感兴趣,但我对Lua一无所知.

有一个有Lua经验的人可以解释一下吗?

具体来说,我想知道 哪个是Lua提供哪种API可以评估作为字符串传入的数学表达式?如果没有API来做这样的事情,可能有些人可以对链接的答案有所了解,因为这似乎是一个很好的方法:)

谢谢

我想要评估的表达式类型给出了一些用户输入,例如

y = x ^ 2 + 1/x - cos(x)

评估y的x值范围

lua mathematical-expressions

5
推荐指数
1
解决办法
6557
查看次数

FullSimply不等式,然后在Mathematica 7中重新排列它们

我在笔记本界面中使用Mathematica 7,我想重新排列不等式,以便我在一侧获得某个变量.例如.

FullSimplify[x^3+L+r>3x^3+2r]
Run Code Online (Sandbox Code Playgroud)

L > r + 2 x^3
Run Code Online (Sandbox Code Playgroud)

但是,我想:

r < L-2x^3
Run Code Online (Sandbox Code Playgroud)

无论如何我们可以指示FullSimplify以特定方式订购变量吗?我也在使用Mathematica进行演示,所以我安排变量的方式对我来说非常重要.

谢谢

SR

编辑:我尝试了Reduce,虽然这适用于这个例子,它不适用于我的实际表达式,我得到一个错误说,

 This system cannot be solved with the methods available to Reduce.
Run Code Online (Sandbox Code Playgroud)

编辑:这是实际的表达式:

{L - (m^2 ((-2 + e)^2 \[Delta] + (5 + 
     2 e (-7 + 4 e)) \[Tau]) \[Omega])/(36 (2 - 3 e + e^2)^2)} > {0}
Run Code Online (Sandbox Code Playgroud)

我希望以\[delta]< *something* 谢谢的形式显示!

wolfram-mathematica mathematical-expressions

5
推荐指数
1
解决办法
1281
查看次数

数学表达式(字符串)到Java中的数字

我试图找到像Java嵌入插件(JEP)这样可以评估数学公式(字符串)并给出答案的东西.

但它也应该计算一个变量,例如:(25 + 36 + x)*2 = 25应该给出:x = -11

有点像http://www.wolframalpha.com/,但它不应该是多功能的,它应该脱机工作.

开源是首选.

我需要它用于我的小计算器项目,http://sourceforge.net/projects/calex/.

java parsing formula evaluate mathematical-expressions

5
推荐指数
1
解决办法
6849
查看次数

为什么Excel将`= 10** - 2`翻译为`= 0.1`?

尝试粘贴=10**-2到MS Excel中的单元格中.按Enter键后,将其转为=0.1.我似乎找不到任何文档**,但它似乎是一个非常奇怪的取幂运算符,不能在Excel公式中使用(例如,=A1**A2无效).

如果此运算符不是取幂运算符,那么它是什么?

(注意:数学上,10 -2 = 0.01,而不是0.1)

excel undefined-behavior mathematical-expressions

5
推荐指数
2
解决办法
585
查看次数

非交换的 symify(或简化)

我希望能够简化 Python 中字符串的数学表达式。有几种“可交换”的方法可以做到这一点。是否有一个不可交换的函数?

我知道sympy中的sympify可以做一些非交换工作,这里有一个例子:

from sympy import *
x=Symbol('x',commutative=False)
y=Symbol('y',commutative=False)

print sympify(3*x*y - y*x - 2*x*y)
Run Code Online (Sandbox Code Playgroud)

它将打印 x y -y x,但是如果我们将 sympify 应用于字符串,即

print sympify('3*x*y - y*x - 2*x*y')
Run Code Online (Sandbox Code Playgroud)

结果是0

有没有办法简化上面的字符串以保留xy的非交换性?

我发现有人已经在这里问过这个问题http://osdir.com/ml/python-sympy/2012-02/msg00250.html并且有人回答了http://osdir.com/ml/python-sympy/2012 -02/msg00255.html,但是该解决方案似乎一般不起作用。

我更愿意先问,如果没有立即解决方案,我想我必须自己编码。

python sympy mathematical-expressions python-2.7 commutativity

5
推荐指数
1
解决办法
3702
查看次数

为什么sympy不能像(6-x*x)**(1.5)那样计算分数幂公式?

我用sympy来计算一些积分,如下所示.

#Calculate Calculus
import sympy
x = sympy.Symbol('x')
f = (6-x*x)**(1.5)
f.integrate()
Run Code Online (Sandbox Code Playgroud)

这将失败,并抛出例外:

ValueError: gamma function pole
Run Code Online (Sandbox Code Playgroud)

如果我只使用整数作为功率num,它工作正常

f = (6-x*x)**(2)
#result: x**5/5 - 4*x**3 + 36*x
Run Code Online (Sandbox Code Playgroud)

python sympy mathematical-expressions

5
推荐指数
1
解决办法
599
查看次数

如何计算 SQL Server 中 nvarchar 变量中保存的数学表达式

我想计算保存在 sql server 变量中的数学表达式

我用谷歌搜索了很多,找到了 3 个解决方案,但不适用于我的场景

1-此解决方案无法在函数内执行,但我需要在函数内执行

declare @expression nvarchar(max)
set @expression = '2*3*100'

declare @sql nvarchar(max)
set @sql = 'select @result = ' + @expression

declare @result int
exec sp_executesql @sql, N'@result int output', @result = @result out

select @result
Run Code Online (Sandbox Code Playgroud)

2-这不能保存到变量中,但我需要将结果存储到变量中

DECLARE @LocalVariable VARCHAR(32);
SET @LocalVariable = '2*3*100';
EXEC('SELECT ' + @LocalVariable);
Run Code Online (Sandbox Code Playgroud)

3-我找到的最后一个解决方案给了我一个错误

DECLARE @x xml 
DECLARE @v decimal(20,4) 
SET @x = '' 
DECLARE @calculatedDataString nvarchar(1000) = '(1 div 100)*((118 div 100)*300.000000)' 
SET …
Run Code Online (Sandbox Code Playgroud)

sql sql-server mathematical-expressions

5
推荐指数
1
解决办法
7090
查看次数

如何在.net中获取数字的大小?

我希望用给定的双数来返回它的"大小"(称为| number |,或者在点之后没有数字的数字),例如:

12.324654 -> 2
12 -> 2
0.99 -> 0
1.01 -> 1
901 -> 3
-0.99 -> 0
-9.999 -> 1
Run Code Online (Sandbox Code Playgroud)

必须有一个函数是.net,我不熟悉这样做..

谢谢.

c# mathematical-expressions

4
推荐指数
2
解决办法
5816
查看次数

如何使用c中的计算进行逻辑选择?

我正在帮助我的女儿介绍c编程作业,她的作业包含一个简单的菜单,如下所示:

Please choose an option below:
------------------------------
1. Linear time
2. Logarithmic time
3. Exponential time
Run Code Online (Sandbox Code Playgroud)

现在,通常很难确定菜单选项是什么,但是不允许她使用逻辑运算符,关系运算符,按位运算符或选择结构.我们一直试图使用模数,但无济于事.这甚至可能吗?她基本上只能使用+, -, *, /, and %.以及简单的变量.

到目前为止我们提出的唯一解决方案是使用平等:

(choice==1)*n + (choice==2)*log(n) + (choice==3)*(n*n)
Run Code Online (Sandbox Code Playgroud)

在哪里n是要排序的数据集的大小,但这是不允许的.

c mathematical-expressions

4
推荐指数
1
解决办法
85
查看次数