没有关于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) 我在笔记本界面中使用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*
谢谢的形式显示!
我试图找到像Java嵌入插件(JEP)这样可以评估数学公式(字符串)并给出答案的东西.
但它也应该计算一个变量,例如:(25 + 36 + x)*2 = 25应该给出:x = -11
有点像http://www.wolframalpha.com/,但它不应该是多功能的,它应该脱机工作.
开源是首选.
我需要它用于我的小计算器项目,http://sourceforge.net/projects/calex/.
尝试粘贴=10**-2到MS Excel中的单元格中.按Enter键后,将其转为=0.1.我似乎找不到任何文档**,但它似乎是一个非常奇怪的取幂运算符,不能在Excel公式中使用(例如,=A1**A2无效).
如果此运算符不是取幂运算符,那么它是什么?
(注意:数学上,10 -2 = 0.01,而不是0.1)
我希望能够简化 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。
有没有办法简化上面的字符串以保留x和y的非交换性?
我发现有人已经在这里问过这个问题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
我用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) 我想计算保存在 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) 我希望用给定的双数来返回它的"大小"(称为| 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编程作业,她的作业包含一个简单的菜单,如下所示:
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是要排序的数据集的大小,但这是不允许的.