本文最初写于 2010-08-08 于 sohu 博客,这次博客搬家一起搬到这里来。
版权所有,转载请注明出处。
coeff 函数有两种基本形式,分别是:
coeff (expr, x)
coeff (expr, x, n)
coeff (expr, x) 计算多项式expr 中x 的系数。coeff (expr, x, n) 则计算多项式expr 中x^n 的系数。
coeff(expr, x^n) 等价于 coeff(expr, x, n).
coeff(expr, x, 0) 则返回表达式expr 中不包含x 的部分。
coeff (expr, x) 相当于coeff (expr, x, n)中省略了 n,这时默认n = 1。
下面是几个简单的例子。
coeff (b^3*a^3 + b^2*a^2 + b*a + 1, a^3);
coeff (c[4]*z^4 - c[3]*z^3 - c[2]*z^2 + c[1]*z, z, 3);
coeff (c[4]*z^4 - c[3]*z^3 - c[2]*z^2 + c[1]*z, z^3);
coeff (a*u + b^2*u^2 + c^3*u^3, b, 0);
coeff (expr, x, n) 中的 x 既可以是简单变量,也可以是个表达式。比如下面的例子:
coeff (h^4 - 2*%pi*h^2 + 1, h, 2);
coeff (v[1]^4 - 2*%pi*v[1]^2 + 1, v[1], 2);
coeff (sin(1+x)*sin(x) + sin(1+x)^3*sin(x)^3, sin(1+x)^3);
coeff ((d - a)^2*(b + c)^3 + (a + b)^4*(c - d), a + b, 4);
但是需要注意的是,只有当expr 中显式的包含x^n 项时coeff (expr, x, n) 才会得到期望的结果,coeff (expr, x, n)并不会主动进行factor(expr) 或 expand(expr) 等操作。
因此,
coeff (c*(a + b)^3, a);
的结果就不难理解了。这种情况需要使用者根据需要自己先行使用expand(expr) 展开表达式。然后再进行coeff (expr, x, n) 运算。
expand (c*(a + b)^3);
coeff (%, a);
下面是一个使用factor(expr) 函数的例子:
coeff (b^3*c + 3*a*b^2*c + 3*a^2*b*c + a^3*c, (a + b)^3);
factor (b^3*c + 3*a*b^2*c + 3*a^2*b*c + a^3*c);
coeff (%, (a + b)^3);
coeff (expr, x, n) 函数可以作用在表(List)、矩阵等多种数据结构上,甚至可以作用在等式中。下面是几个例子:
coeff ([4*a, -3*a, 2*a], a);
coeff (matrix ([a*x, b*x], [-c*x, -d*x]), x);
coeff (a*u - b*v = 7*u + 3*v, u);