- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
5, 3
> coeffs(s, x, 't');
5 y, 3 y 2
> t;
x, x 2
> coeftayl(exp(x), x=0, 10);
1 3628800
> p:=3*(x+1)^3+sin(Pi/3)*x^2*8 -
p := 3 ( x + 1 ) 3 +
> coeftayl(p, x=-1, 1);
( 1 − a ) y x2 + ( ( 1 + a ) y + 1 + a ) x
> collect( p, [y, x], recursive );
( ( 1 − a ) x2 + ( 1 + a ) x ) y + ( 1 + a ) x
> collect( p, {x, y}, distributed );
- 70 -
其命令格式为: convert(series, polynom); > s:=series(sin(x), x, 10);
s := x −
> type(s, polynom);
1 3 1 5 1 1 x + x − x7 + x 9 + O( x 10 ) 6 120 5040 362880
[ 1, 2, 3, 4, 5 ]
> sort(x^3+x^2+1+x^5, x);
-3
1.3 多项式的约数和根
1.3.1 多项式的最大公约因式(gcd)/最小公倍因式(lcm) 求多项式的最大公约因式/最小公倍因式的命令与求两个整数最大公约数/最小公倍 数命令一样, 都是 gcd/lcm. 命令格式分别为: gcd(p1, p2, 't', 's'); lcm(p1, p2, 't', 's'); 其中, 第 3 个参数 t 赋值为余因子 p1/gcd(p1, p2), 第 4 个参数 s 赋值为余因子 p2/gcd(p1, p2). > p1:=x^4+x^3+2*x^2+x+1;
而要随机生成关于[x, y, z]的密集的、均匀的、度为 2 的多项式的命令为: > randpoly([x,y,z],dense,homogeneous,degree=2);
−85 x 2 − 55 z x − 37 y x − 35 z 2 + 97 y z + 50 y 2
- 67 -
用 type 命令可以测试多项式的类型: > type(p1, polynom(integer, x)); #测试 p1 是否是一个关于 x 的整系数多项式
-3
> q;
x 4 − x 3 + 2 x2 − 2 x + 3
> quo(x^3+x^2+x+1, x-1, x, 'r');
x2 + 2 x + 3
> r;
4
1.4 多项式转换及整理
1.4.1 将多项式转换成 Horner 形式 将多项式 poly 转换成关于变量 var 的 Horner 形式或者嵌套形式的命令格式如下: convert(poly, horner, var); > convert(x^5+x^4+x^3+x^2+x+1, horner, x);
1.4.4 合并多项式系数(合并同类项) 将多项式具有相同次幂的项的系数合并在一起(包括正的、负的或者分数次幂), 即 合并同类项(称为多项式的典范形式), 用命令 collect: collect(p, x); collect(p, x, form, func); collect(p, x, func); 其中 x 是表示单变量 x 或多变量 x1, x2, …, xn 的一个列表或集合. > collect(a*ln(x)-ln(x)*x-x, ln(x));
−42 x 5 + 88 x 4 − 76 x 3 − 65 x 2 + 25 x + 28
> randpoly([x, y], terms=8);
3 2
#随机生成关于[x, y]二元 8 项多项式
−78 x y + 62 x + 11 x y + 88 x3 y + x y3 + 30 y4 + 81 x4 y − 5 x2 y3
1 3 x2 y + x y3 + x − 6 2
1 − 3 y + y3
> coeftayl(p, [x, y]=[0, 0], [1, 0]);
10
返回默认为降序排列的多元多项式的首项和末项系数分别使用命令 lcoeff、tcoeff: > lcoeff(p, x);
3
> tcoeff(p, x);
( 1 + a ) x + ( 1 + a ) x y + ( 1 − a ) y x2
其中的参数recureive为递归式的,而distributed为分布式的。 1.4.5 将多项式(或者值的列表)排序 将多项式(或者值的列表)按升(或降)序次方排序时作命令sort. 命令格式: sort(L); sort(L, F); sort(A); sort(A, V); 其中, L—表示要排序的列表; F(可选项)—带两个参数的布尔函数; A—代数表达式; V(可 选项)—变量 sort函数将列表L按升序次方, 将代数表达式A中的多项式按降序次方排列. 如果给定了F, 它将用来定义一个排序的列表. 如果F是符号“<”或者数值, 那么L 是一个列表类型, 按数值型降序排列; 如果F是符号“>”, L按数值型升序排列; 如果F 是一个词典编纂的符号, 那么字符串和符号列表将按词典编纂的次序排列. 另外, F必须 是一个有两个参数的布尔函数. 在Maple中, 多项式并不自动按排序次序存储而是按建立的次序存储. 值得注意的 是, sort函数对多项式的排序是破坏性的操作, 因为输入的多项式将会按排序后的次序存 储. 用来对列表排序的算法是一种带早期排序序列监测的合并排序的递归算法, 而用于 对多项式排序的算法是一个原位替换排序. > sort([3, 2, 1, 5, 4]);
1.3.2 多项式的平方根(psqrt)和第 n 次方根(proot) 求多项式 p 的平方根, 若不是完全平方, 则返回_NOSQRT:psqrt(p);
- 69 -
求多项式 p 的 n 次方根, 若不是完全 n 次方, 则返回_NOROOT:proot(p, n); > p:=x^4+4*x^3+6*x^2+4*x+1;
true
> type(p2, polynom(complex, {x, y, z})); 项式 #测试 p2 是否是一个关于{x, y, z}的复系数多
true
1.2 提取多项式系数
coeff 函数用来提取一元多项式的系数, 而多元多项式所有系数的提取用命令 coeffs, 指定系数的提取用命令 coftayl. (1) 提取多项式 p 中 x^n 的系数使用命令:coeff(p, x^n);或 coeff(p, x, n); (2) 提取多项式 p 中变量 x 的所有系数并将相应的 x 幂存于变量 t 中: coeffs(p, x, ’t’); (3) 返回 expr 在 x=a 处的 Taylor 展式中(x-a)^k 的系数: coeftayl(expr, x=a, k); > p:=2*x^2+3*y^3*x-5*x+68;
false
> p:=convert(s, polynom);
p := x −
> type(p, polynom);
1 3 1 5 1 1 x + x − x7 + x9 6 120 5040 362880
true
1.4.3 将级数转换成有理多项式(有理函数) 将级数 series(laurent 级数或 Chebyshev 类型级数 ) 转换成有理多项式 ( 有理函 数)ratpoly 的命令格式为: convert(series, ratpoly); > series(exp(x^2), x, 15);
由此可以看出, Maple 中多项式的生成与“赋值”命令相似. 另外, 还可以通过函数 randpoly 生成随机多项式, 生成一个关于 vars 的随机多项式 的格式如下: randpoly(vars, opts); 其中, vars 表示变量或者变量列表或集合, opts 为可选项方程或者指定属性的名称. 如: > randpoly(x); #随机生成关于 x 的 5 次(默认)多项式
p := 2 x 2 + 3 y 3 x − 5 x + 68
> coeff(p, x);
3 y3 − 5
> coeff(x^4-5*x^2-sin(a)*(x+1)^2, x^2);
−5 − sin ( a )
> s:=3*x^2*y^2+5*x*y;
s := 3 x 2 y 2 + 5 x y
> coeffs(s);
1 + (1 + (1 + (1 + (x + 1) x) x) x) x
> convert(x^3*y^3+x^2*y^2+x*y+1,
horner,
[x,
y]);