[],,[],02 [ ],24 [ ],-2 -1
函数 realroot 还有一个可选参数, 它是用来限制区间的最大长度的, 为了保证使用
数值求解方法时收敛, 我们可以用它限制区间的最大长度:
> realroot(%%,1/1000);
⎡
⎢
⎢
⎤
⎦
⎥
⎥
,,
⎡
⎢
⎢
⎤
⎦
⎥
⎥
,
1195
1024
299
256
⎡
⎣
⎢
⎢
⎤
⎦
⎥
⎥
,
3313
1024
1657
512
⎡
⎢
⎢
⎤
⎦
⎥
⎥
,
-633
512
-1265
1024
求解方程或方程组的整数解时使用函数isolve, 它常常被用来求解不定方程. 例如
著名的“百钱买百鸡”问题
♣
的求解过程为:
>
isolve({x+y+z=100,5*x+3*y+z/3=100});
{},,
=
+ 75 3 _Z1 =
4 _Z1
= y
− 25 7 _Z1
据此可得满足该问题的三组解为:
{x, y, z}={4, 18, 78}, {x, y, z}={8, 11, 81}, {x, y, z}={12, 4, 84}
1.2.2 整数环中的方程(组)求解
利用 Maple 中的函数 msolve(eqns, vars, n), 可以在模 n 的整数环中求解方程
(组)eqns.
例:在Z
7
中求解Pell方程 28
37
−= xy
>
msolve(y^7=x^3-28,7);
{}, =
3 = y 6{ },
=
4 = y 1{ }, = y 0
=
0{ },
=
1
= y 1{ }, = y 6 =
6,,,,,
{}, = x 2 = y 1{ }, = y 6 = x 5,
再如下例:
>
msolve(y^4=x^3+32,5);
,,,,{}, =
2 = y 0{ },
=
4 = y 1{ }, =
4
= y 2{ },
=
4
= y 3{ }, =
4 = y 4
1.2.3 递归方程的求解
在 Maple 中, 可以求解有限差分方程(也称递归方程), 所需调用的函数是 rsolve, 该
函数使用的是一些比较通用的方法, 例如产生函数法、z 变换法以及一些基于变量替换
和特征方程的方法. 作为例子, 求解 Fibonacci 多项式:
>
eq:=f(n)=f(n-1)+2*f(n-2);
:= eq = ()
n
+ ()
− n 12( )
− n 2
> rsolve({eq,f(0)=1,f(1)=1},f(n));
+
1
3
()-1
n
2
3
2
n
当然, 并不是所有的递归形式的函数方程的解可以写成解析形式, 如果不能, Maple
将保留原来的调用形式. 此时, 可用 asympt 函数获得它的渐进表达式, 也就是 1/n 的级
数解. 例如, 对于一个具有超越形式的递归函数方程, 仍然可以得到解的渐进形式:
- 104 -
♣
百钱买百鸡问题:用 100 元钱买 100 只鸡, 大公鸡 5 元钱 1 只, 大母鸡 3 元钱 1 只, 小鸡 1 元钱 3 只, 问如何买法?