我必须做一些计算,其中长公式,主要涉及具有可变系数的多项式的导数。
不幸的是,我从 Mathematica 或 Maple 等引擎获得的结果的表示方式与我需要的非常不同,并且将结果重新排列为所需的形式需要很长时间(更不用说重新引入错误的风险)。
因此,我想知道是否有某种方法可以代替自己进行计算,然后检查结果——即某种“方程式检查器”:
我输入了 d/dx f(x) = g(x) ,其中我提供了双方,系统评估这是对还是错。
我必须做一些计算,其中长公式,主要涉及具有可变系数的多项式的导数。
不幸的是,我从 Mathematica 或 Maple 等引擎获得的结果的表示方式与我需要的非常不同,并且将结果重新排列为所需的形式需要很长时间(更不用说重新引入错误的风险)。
因此,我想知道是否有某种方法可以代替自己进行计算,然后检查结果——即某种“方程式检查器”:
我输入了 d/dx f(x) = g(x) ,其中我提供了双方,系统评估这是对还是错。
我会检查出来的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 文档。这很方便。
在 Maple 中,使用is(f=g)
. 如果结果为FAIL
,则设置_EnvTry:= hard;
并再次尝试该is
命令。
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
错误的
真的
真的
在稍旧版本的 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
。
在使用isequaln
orisAlways
时,利用假设是一个好主意。同样有趣的是sym/logical
:
syms x;
isAlways(1 == sin(x)^2+cos(x)^2)
返回1
,但是
logical(1 == sin(x)^2+cos(x)^2)
返回0
,因为它不会在比较之前简化表达式。