数式処理に欠かせない定数(円周率等)が既に定義されています.
円周率は, Piという記号を使います. 関数に値を代入する時には,
必ず括弧
が必要で, しかも数式計算上の括弧は, これ以外には使えません.
は別の意味になります.
> Pi; > cos(Pi/4); > tan(Pi/2); > arctan(-infinity);
がそのまま出て来る事,
の不定値に対するエラーメッセージ
に注意して下さい.
は逆正接函数, infinity は無限大の事です.
最後の答は, 極限値を出力しています.
Maple では, 有理数, 冪根, 円周率等の定数は, そのまま出力されます.
上の逆正接函数の計算でもそうですし,
例えば,
も次で計算させると, 円周率を使った答が出ます.
> sum(1/n^2, n=1..infinity);これを小数へ変換するには, evalf(evaluate float)という手続きを用います.
> evalf(Pi^2/6);
Mapleでは, 非常に正確な数値計算ができます.
例えば,
を C言語の
数学関数で計算しますと
という答を得ます. Mapleを
使うと, C言語の計算がとんでもない誤差を含む事がわかります.
起動時では, 浮動小数点の仮数部は10桁に設定されており,
そのままですと, この結果は真の値の約40倍という答になります.
そのため仮数部の桁数を事前に設定します.
仮数部の桁数は, Maple のシステム変数 Digitsに格納されていますから,
この値を変更します. Mapleでは変数への代入に := を用います.
> Digits:=50; > evalf(exp(Pi*sqrt(163))); > evalf(exp(Pi*sqrt(163))-744-640320^3);
の計算結果で 9 が 12個続く部分がありますが,
先頭の 9 と 2番目の 9 の間に小数点があります.
C言語のライブラリを用いた計算が, 真の値の
倍以上の
値になっている事がわかります.
(exp は exponential(指数関数) の sqrt は square root(平方根)の略)
の値が整数に近い理由を
調べよ. 菅にこれをきちんと説明できる人は, 卒業まで私が担当する科目の全ての単位を
(授業登録すれば) A であげます.
(同じ理由で,
も整数に近い.)
文字式の展開, 因数分解も可能です.
> expand((x+y)^5); > factor(a^8-b^8);
次の問題は, 2000年の琉球大学入学試験問題前期日程数学甲の
です.
を微分せよ.
を求めよ.
を求めよ.
を求めよ.
> 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);
方程式
の解を求める様々な方法も Maple には用意されています.
が 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(
) という解が出て来ます. もちろん, これは
単なるトートロジーに過ぎないのですが, Maple は代数的数を扱えるので,
この解(代数的数)を用いた計算が今後記号的に可能です.
代数的な解法がある場合でも, その解法が複雑な場合には, 残念ながら代数的な解を出力 しません. 例えば, 1の 7乗根を計算させようとしても, de Moivre (ド モアブル) の公式から出てくる解が単純に出力されるだけです.
> solve(x^7-1, x);上で述べたように Maple では, 代数的数が扱えます. これを利用すると,
の代数的な解も求める事ができます.
ですが, 積の右側の 6次式は
を使うと, 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);
が 5次以上の多項式や, 多項式以外の場合には, 一般的な
解法が存在しません.
このような方程式の近似解を数値的に計算する方法も Maple
は知っています. 上の方程式の数値解も, 次で計算してくれます.
> fsolve(x^5+x^2+1, x);