3

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

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

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

我输入了 d/dx f(x) = g(x) ,其中我提供了双方,系统评估这是对还是错。

4

4 回答 4

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 文档。这很方便。

于 2013-11-12T21:10:36.213 回答
2

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

于 2013-11-13T19:46:44.630 回答
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

错误的

真的

真的

于 2013-11-13T06:14:10.527 回答
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

在使用isequalnorisAlways时,利用假设是一个好主意。同样有趣的是sym/logical

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

返回1,但是

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

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

于 2013-11-13T03:22:35.310 回答