检查符号计算

时间:2013-11-12 20:14:48

标签: matlab wolfram-mathematica symbolic-math maple symbolic-computation

我必须做一些计算,其中长公式,主要涉及具有可变系数的多项式的导数。

不幸的是,我从Mathematica或Maple这样的引擎获得的结果以与我需要的方式非常不同的方式表示,并且将结果重新排列为期望的形式需要太长时间(更不用说重新引入错误的风险) )。

因此我想知道是否有某种方法可以自己进行计算,然后检查结果 - 即某种“方程检查器”:

我输入了d / dx f(x)= g(x),其中我提供了两个边,系统将其评估为真或假。

4 个答案:

答案 0 :(得分:4)

我会查看sym/isequaln。它是isequaln的重载版本,用于比较符号表达式。例如:

syms x
f(x) = 3*x^3-2*ln(x);
g(x) = 9*x^2 - 2/x;
isequaln(f,g)

ans =
    0

isequaln(diff(f), g)

ans = 
    1

请参阅该功能的MathWorks documentation。它非常方便。

答案 1 :(得分:2)

在Maple中,使用is(f=g)。如果结果为FAIL,则设置_EnvTry:= hard;并再次尝试is命令。

答案 2 :(得分:1)

在稍微旧版本的Matlab(返回R2012a)中,可以使用isAlways作为测试符号方程的方法。此功能对于测试不等式也很有用。只是不要忘记“A”在函数名中大写。冒昧地使用@ zachd1_618的例子:

syms x;
f = 3*x^3-2*log(x);
g = 9*x^2 - 2/x;
isAlways(f == g)

返回0,但

isAlways(diff(f,x) == g)

返回1

在使用isequalnisAlways时,最好利用assumptions。同样有趣的是sym/logical

syms x;
isAlways(1 == sin(x)^2+cos(x)^2)

返回1,但

logical(1 == sin(x)^2+cos(x)^2)

返回0,因为它在比较之前不会简化表达式。

答案 3 :(得分:1)

f = 3 x^3 - 2 Log[x];
g = 9 x^2 - 2/x;
PossibleZeroQ[f - g]
PossibleZeroQ[D[f, x] - g]
D[f, x] == g