様々な定数, 手続き(函数)

Maple では, 数式処理のための手続きが 2700以上定義されています. それらを全部解説する事は不可能ですので, ここではその一例をあげます. これらの例の中に初等函数が用いられていますが, それらの意味は 容易に類推できると思いますので, これについての解説はいちいちしません.

数式処理に欠かせない定数(円周率等)が既に定義されています. 円周率は, Piという記号を使います. 関数に値を代入する時には, 必ず括弧$()$が必要で, しかも数式計算上の括弧は, これ以外には使えません. $\{\}, [~]$は別の意味になります.

> Pi;
> cos(Pi/4);
> tan(Pi/2);
> arctan(-infinity);
$\sqrt{2}$ がそのまま出て来る事, $\tan$ の不定値に対するエラーメッセージ に注意して下さい. $\arctan$ は逆正接函数, infinity は無限大の事です. 最後の答は, 極限値を出力しています.

Maple では, 有理数, 冪根, 円周率等の定数は, そのまま出力されます. 上の逆正接函数の計算でもそうですし, 例えば, $\displaystyle{1+\frac{1}{2^2}+\frac{1}{3^2} + \cdots
= \sum_{n=1}^{\infty} \frac{1}{n^2} = \zeta (2) = \frac{\pi^2}{6}}$ も次で計算させると, 円周率を使った答が出ます.

> sum(1/n^2, n=1..infinity);
これを小数へ変換するには, evalf(evaluate float)という手続きを用います.
> evalf(Pi^2/6);

Mapleでは, 非常に正確な数値計算ができます. 例えば, $\displaystyle{e^{\pi\sqrt{163}}-744-640320^3}$を C言語の 数学関数で計算しますと$-480$という答を得ます. Mapleを 使うと, C言語の計算がとんでもない誤差を含む事がわかります. 起動時では, 浮動小数点の仮数部は10桁に設定されており, そのままですと, この結果は真の値の約40倍という答になります. そのため仮数部の桁数を事前に設定します. 仮数部の桁数は, Maple のシステム変数 Digitsに格納されていますから, この値を変更します. Mapleでは変数への代入に := を用います.

> Digits:=50;
> evalf(exp(Pi*sqrt(163)));
> evalf(exp(Pi*sqrt(163))-744-640320^3);
$e^{\sqrt{163}\pi}$の計算結果で 9 が 12個続く部分がありますが, 先頭の 9 と 2番目の 9 の間に小数点があります. C言語のライブラリを用いた計算が, 真の値の $6\times 10^{14}$倍以上の 値になっている事がわかります. (exp は exponential(指数関数) の sqrt は square root(平方根)の略)

課題(難):
  $\displaystyle{e^{\sqrt{163}\pi}}$の値が整数に近い理由を 調べよ. 菅にこれをきちんと説明できる人は, 卒業まで私が担当する科目の全ての単位を (授業登録すれば) A であげます. (同じ理由で, $\displaystyle{e^{\sqrt{67}\pi}}$ も整数に近い.)

文字式の展開, 因数分解も可能です.

> expand((x+y)^5);
> factor(a^8-b^8);

次の問題は, 2000年の琉球大学入学試験問題前期日程数学甲の\fbox{1}です.

  1. 関数 $\displaystyle{\frac{x}{\sqrt{1+x^2}}}$を微分せよ.


  2. 不定積分 $\displaystyle{\int x\sqrt{x^2+2}~dx}$を求めよ.


  3. 定積分 $\displaystyle{\int_{\frac{1}{e}}^{2e} x^3\log x~dx}$を求めよ.


  4. $\displaystyle{\lim_{x \to 0}\frac{\sqrt{2x+1} - 1 - x}{x^2}}$を求めよ.
このような単純な計算は, Maple は得意です. (試験では, 答だけを書いても満点にはならないと思います.) Maple V では, 直前の結果を%で参照できます.
> diff(x/sqrt(1+x^2),x);
> simplify(%);
> int(x*sqrt(x^2+2),x);
> int(x^3*log(x), x=exp(-1)..2*exp(1));
> limit((sqrt(2*x+1)-1-x)/x^2, x=0);

方程式 $f(x) = 0$ の解を求める様々な方法も Maple には用意されています. $f(x)$ が 4次以下の多項式なら, この方程式には 代数的な解法が存在する事が知られています. (3年の代数学 I・II で勉強する予定です.) Maple はこれらの解法を知っており, solve という手続きに なっています. 次を実行してみて下さい. これらの解には複素数が含まれますが, Maple では虚数単位は大文字の I で表示されます.

> solve(x^3+1,x);
> solve(x^3+3*x+1,x);

5次以上の方程式には, 代数的な解法が一般には存在しない事が 知られています(代数的という制限を外せば, 別な解法はあります). 次を実行してみてください.

> solve(x^5+x^2+1, x);
RootOf($\_Z^5+\_Z^2+1$) という解が出て来ます. もちろん, これは 単なるトートロジーに過ぎないのですが, Maple は代数的数を扱えるので, この解(代数的数)を用いた計算が今後記号的に可能です.

代数的な解法がある場合でも, その解法が複雑な場合には, 残念ながら代数的な解を出力 しません. 例えば, 1の 7乗根を計算させようとしても, de Moivre (ド モアブル) の公式から出てくる解が単純に出力されるだけです.

> solve(x^7-1, x);
上で述べたように Maple では, 代数的数が扱えます. これを利用すると, $x^7-1=0$ の代数的な解も求める事ができます. $\displaystyle{x^7-1=(x-1)(x^6+x^5+x^4+x^3+x^2+x+1)}$ ですが, 積の右側の 6次式は $\displaystyle{\sqrt{-7}}$ を使うと, 2つの 3次式の積に因数分解されます。 この様な因数分解は, 付け加える数を factor の第2引数に 加える事で可能です.
> factor(x^6+x^5+x^4+x^3+x^2+x+1, (-7)^(1/2));
従って, 1の複素7乗根は, 次のベキ根だけを利用して記述すると, 2つ方程式の解全体です.
> solve(2*x^3+x^2-I*sqrt(7)*x^2-x-I*sqrt(7)*x-2,x);
> solve(2*x^3+x^2+I*sqrt(7)*x^2-x+I*sqrt(7)*x-2,x);

$f(x)$ が 5次以上の多項式や, 多項式以外の場合には, 一般的な 解法が存在しません. このような方程式の近似解を数値的に計算する方法も Maple は知っています. 上の方程式の数値解も, 次で計算してくれます.

> fsolve(x^5+x^2+1, x);



Subsections
SUGA Shuichi
2022-07-06