Mapleビギナーズガイド

数式処理・数式モデル設計環境
ビギナーズ ガイド
Mathematical
Application
Programming
Language
Environment
サイバネットシステム株式会社 編
V2013.9
このドキュメントは、Maple の基本操作について説明しています。
Maple を初めて使われる方を対象としており、簡易ユーザーズマニュア
ルとしてご利用頂けます。
目次
1. はじめに ........................................................................................................................... - 5 1-1 数式処理ソフトウェア Maple の歴史と特徴................................................................ - 5 1-2 Maple を起動する ........................................................................................................ - 6 1-3 2つのファイルモードと2つの入力形態 ................................................................... - 7 1-4 実行グループについて .............................................................................................. - 10 1-5 新規ファイルをワークシートモードで開く.............................................................. - 10 1-6 ツールバーの説明 ......................................................................................................- 11 1-7 計算の実行方法......................................................................................................... - 12 1-8 新しい実行グループを挿入する................................................................................ - 13 1-9 実行グループ単位で削除する ................................................................................... - 13 1-10 数式ラベルを参照する ............................................................................................ - 14 2-1 方程式を解くための solve コマンド ........................................................................ - 15 2-2 関数やデータを描画するための plot コマンド....................................................... - 16 2-3 変数への割り当てを行う「:=」 ............................................................................ - 17 2-4 値を代入する subs コマンドと式を評価する eval コマンド..................................... - 18 2-5 計算エンジン(カーネル)を初期化する restart コマンド .................................. - 18 2-6 コマンドの使い方がわからないとき(ヘルプの参照方法)..................................... - 19 2-7 コンテキストメニュー(マウス操作)を用いた計算 ............................................... - 20 2-8 練習問題 ................................................................................................................... - 21 3. プロットをカスタマイズする ......................................................................................... - 23 3-1 plot コマンドや plot3d コマンドにオプションを指定する .................................. - 23 3-2 コマンドを使わずにオプションを変更する.............................................................. - 25 3-3 描画ツールを使う ..................................................................................................... - 26 3-4 練習問題 ................................................................................................................... - 30 4. Maple で問題を解く......................................................................................................... - 33 4-1 問題1(接線の計算) .............................................................................................. - 33 4-2 問題2(交点の計算と積分) ................................................................................... - 34 4-3 問題3(代数計算) ................................................................................................. - 38 5. Maple でプログラミングする .......................................................................................... - 39 5-1 関数とプロシージャ ................................................................................................. - 39 5-2 反復........................................................................................................................... - 40 5-3 条件分岐 ................................................................................................................... - 41 5-4 数に関連するデータ型 .............................................................................................. - 41 5-5 配列に関連するデータ型 .......................................................................................... - 42 5-6 プログラミングを使った例題 ................................................................................... - 44 6. ヘルプブラウザの使い方 ................................................................................................ - 46 6-1 ヘルプブラウザを表示する....................................................................................... - 46 6-2 特定コマンドのヘルプページを参照する ................................................................. - 47 6-3 ヘルプコンテンツのコマンド例をコピーして使う................................................... - 48 6-4 コマンドやパッケージの一覧を見る ........................................................................ - 49 7. 拡張パッケージを利用した各種計算 .............................................................................. - 50 7-1 常微分方程式を解く ................................................................................................. - 50 7-2 偏微分方程式を解く ................................................................................................. - 54 7-3 Maple による境界値問題解法................................................................................... - 55 7-4 データフィッティング .............................................................................................. - 58 7-5 CodeGeneration パッケージを用いた言語変換 ....................................................... - 63 -
8. 読みやすいワークシートの作成方法 .............................................................................. - 67 8-1 テキスト領域に説明文を記述する ............................................................................ - 68 8-2 テーブルを用いてレイアウトを行う ........................................................................ - 70 8-3 ハイパーリンクや注釈を付加する ............................................................................ - 73 9. 対話的な計算アプリケーションの作成 ........................................................................... - 78 9-1 GUI コンポーネントとは?...................................................................................... - 78 9-2 GUI コンポーネントの配置...................................................................................... - 79 9-3 GUI コンポーネント動作時のコードの記述............................................................. - 85 9-4 サンプルによるテスト .............................................................................................. - 89 9-5 効率的なコードの記述とデバッグ ............................................................................ - 90 【付録1 Maple でよく使われる記号】 ..................................................................................... - 96 【付録2 Maple でよく使われるコマンド】 ................................................................................ - 97 -
1. はじめに
1-1 数式処理ソフトウェア Maple の歴史と特徴
『Maple 1 』(メイプル)は、1980 年 11 月にカナダのウォータールー大学記号計算研究グルー
プで生まれた数式処理システムです。そのコンセプトは、
『研究者や学生の誰もが手軽に利用で
き、可搬性のある数式処理システムを作り上げること』にありました。プロジェクト開始当時
の創始メンバーであるKeith Geddes教授は、今もウォータールー大学において数式処理の研究
に携わり、最先端の数式処理と数値計算の融合などに貢献しています。
数式処理とは、文字通り数式を変数のまま計算する技術を意味しています。例えば、中学校で
習う2次方程式の解の公式も、Maple では以下のようなコマンド(Maple に計算させるための
命令)をキーボードからタイプすることで計算することができます。
> solve(a*x^2+b*x+c=0,x);
数式処理システム Maple では、このような数式処理の計算以外に、以下の大きな特徴を持って
います。
【特徴1】大きな数(長い桁数)の計算ができる
使用するコンピュータのメモリ量にもよりますが、100 の階乗を計算したり、円周率
πや無理数などを 100 万桁まで求めたりといった任意の精度の計算が手軽に実現でき
ます。
【特徴2】関数やデータのグラフィックスを手軽に描画できる
教科書、論文に出てくる数学関数や外部ファイルのデータなどを手軽な操作でグラフ
として描画することができます。
【特徴3】自作のプログラムを作ることができる
Maple に用意されているコマンドや関数を組み合わせて、ユーザが独自の計算プログ
ラムを作ることができます。
【特徴4】計算処理過程も含めて文書(レポート)としてまとめられる
Maple はワープロライクなインターフェイスを備えています。高品質な数式・プロッ
トと共に計算に用いた人間の思考過程もまとめて文書化することができます。
このチュートリアルでは、Maple の使い方を中心に上記4つの特徴についても学んでいきます。
1 詳しくはwww.cybernet.co.jp/Mapleまたはwww.maplesoft.comを参照
-5-
1-2 Maple を起動する
それでは、さっそく Maple を起動してみます。ここでは Windows 版の Maple を起動させて
みます。
Maple を起動するには、デスクトップに用意されている『Maple』のアイコンをダブルクリッ
クするか、または Windows の[スタート]メニューから[Maple]のプログラムグループを選択し
て、[Maple]のアイコンをクリックします。
Maple のアイコンをクリックすると、Maple のスプラッシュウィンドウが表示されて、Maple
の起動が開始されます。
スプラッシュウィンドウの表示中に、Maple は起動のために必要なファイルを読み込みます。
Maple が正しく起動すると、以下のように Maple の GUI(グラフィカルユーザインターフェ
イス)が表示されます。
Maple のデータファイルは「ワークシート」と呼びます。また、ワークシートには目的に応じ
て2つのファイルモードで開くことが可能です。次のセクションでは、2つのファイルモード
とコマンドの入力形態について説明しています。
-6-
1-3 2つのファイルモードと2つの入力形態
◆2つのファイルモードについて
Maple で新規のファイルを開く際には、「ワークシートモード」と「ドキュメントモード」の
2種類が用意されています。目的に応じてそれぞれのファイルモードを使い分けます。
新規ファイルをどちらのモードで開くかは、[ファイル]メニューの[新規作成]を選択した際に指
定することができます。
[ファイルモードを選択して新規作成]
① ワークシートモード
過去のバージョンの Maple から続けて利用されているファイルモードで、Maple のコマン
ドのためのプロンプト(入力記号の意味で、通常は赤色の大記号「>」が用いられます)が
常に表示されます。Maple 上でコマンドやプログラミングを中心に作業する場合に用いる
ファイルモードです。
※このガイドでは、ワークシートモードを用いて説明しています。ドキュメントモードに
ついては、Maple付属のマニュアルを参照してください。
② ドキュメントモード
このファイルモードでは、コマンド入力のためのプロンプトは表示されません。Maple 上
でレポートを書いたり、体裁の整った技術文書を作成するときに用いるファイルモードで
す。
-7-
新規ファイル作成時にどちらのファイルモードをデフォルトで利用するかは、[ツール]メニュ
ーから[オプション]を選択してオプションダイアログを表示して、[インターフェイス]タブにあ
る「新しいワークシートのフォーマット」の設定を変更することで指定できます。
なお、標準のファイルモードは通常ドキュメントモードに設定されています。
-8-
◆2つの入力形態について
また、Maple のコマンドを入力するときには2つの入力形態(Maple Input と 2D Math Input)
が提供されています。これも目的に応じて使い分けます。
① Maple Input(テキスト入力)
コマンドを通常の文字と同じ形式で入力する方法で、指数記号を表すキャレット(^記号)
や掛け算のアスタリスク(*記号)は文字通りに表示されます。
例えば、2 次方程式の解を求めるときには solve(a*x^2+b*x+c=0,x); とタイプします。
Maple Inputの場合は、コマンドの終端に必ずセミコロン(;)を付加してください。
Maple Input のデフォルトの設定では、赤字で表示されます。(計算結果は青色です)
※キャレット(^記号)は Back space キーの2つ左にあります。
② 2D Math Input (数式入力)
分数や指数、微積分記号などを含む数式を教科書やレポートなどでも見慣れた数式として
表示・計算できるための入力形態です。例えば、2 次方程式の解を求めるときには、
という形態で入力できます。
このモードでは、キャレット記号を入力すると自動的に指数表記入力となり、分数記号(/
スラッシュ)を入力すると分数表記に切り替わります。
Maple のデフォルトの入力形態はこの 2D Math Inputモードになっています。2D Math
Inputでは、コマンドの終端にセミコロンは付加しなくても計算が可能です。
(付加しても
問題はありません)
2D Math Input のデフォルトの文字色は黒字・斜体文字です。(出力は青色です)
2D Math Input での入力例
Maple Input での入力例
-9-
Maple Input と 2D Math Input の入力形態は、F5 キーを押すことで相互に切り替えることが
できます。また、デフォルトの入力形態は、[ツール]メニューの[オプション]を選択してオプシ
ョンダイアログを表示し「表示」タブの入力方法の設定を変更します。
なお、このガイドでは、デフォルトの 2D Math Input のまま説明を進めています。適宜、Maple
Input への入力形態を利用しています。
1-4 実行グループについて
プロンプトが表示されている左側には「[」記号が表示されています。これを実行グループと
呼び、Maple のプログラムやコードを記述する単位を意味しています。
Maple で計算処理のためのプログラムを書いていく際、複数の実行グループの間に新しい実行
グループを挿入したり、不要となったコードは実行グループ単位で削除したりすることが可能
です。
1-5 新規ファイルをワークシートモードで開く
それでは、ここから実際にコマンドをいろいろとタイプして計算を実施していくために、[ファ
イル]メニューから[新規作成]をポイントし、[ワークシートモード]を選択して新しいファイル
を作成してください。
デフォルトの入力形態である 2D Math Input では、プロンプト上のカーソルが斜めになってい
ます。Maple Input 形式ではカーソルは垂直です。
- 10 -
1-6 ツールバーの説明
Maple の GUI(グラフィカルユーザインターフェイス)には、Microsoft Word や Excel など
と同様なツールバーが用意されています。それぞれのボタンについては以下の説明を参照して
ください。
ファイル操作と編集
左のボタンから順に以下のような機能が割り当てられています。
① ファイルの新規作成(デフォルトのファイルモード設定によります)
② ファイルを開く
③ 現在開いているファイルを保存する
④ 現在開いているファイルを印刷する
⑤ ファイル印刷前にプレビューする
⑥ 選択した部分を切り取る
⑦ 選択した部分をクリップボードにコピーする
⑧ クリップボードの内容を現在のワークシートに貼り付ける
⑨ 直前の操作を元に戻す(アンドゥ)
⑩ 直前の操作を取り消す
グループの入力とセクション、移動
左のボタンから順に以下のような機能が割り当てられています。
① コードエディット領域を挿入する
② 現在の実行グループの次にテキストを挿入する
③ 現在の実行グループの次に新しい実行グループを挿入する
④ 選択した部分をひとつのセクション(章立て)にする
⑤ 章立て部分を解除する
⑥ ハイパーリンクの履歴を戻る
⑦ ハイパーリンクをひとつ進む
計算の実行と中断、デバッグ、カーネルの初期化、表示倍率
左のボタンから順に以下のような機能が割り当てられています。
① ワークシート中のコマンドを最初からすべて実行する
② 現在カーソルのある実行グループのコマンドを実行する
③ 実行中の計算を中断する
④ 現在の処理をデバッグする
⑤ 現在の計算カーネルを初期化する
⑥ スタートアップコードを編集する
⑦ 100%ズームで表示
⑧ 150%ズームで表示
⑨ 200%ズームで表示
- 11 -
タブ動作の切替、ヘルプ表示
左のボタンから順に以下のような機能が割り当てられています。
① テキストグループでのタブキーの挙動の変更
② Clickable Math ポップアップ表示の切り替え
③ ヘルプを起動する
1-7 計算の実行方法
Mapleで計算を実行するには、必要なコマンドや関数をタイプして、[Enter]キーを押すことで
計算が実行 2 されます。コマンドを複数行に渡って記述するには、適宜[Shift]キー+[Enter]キー
で改行されます。
【コマンドを入力するときの注意点】
2D Math Inputモードでは、コマンドの最後に「;」(セミコロン)を記述する必要はありま
せん。Maple Inputのときには「;」を付加してください。
ただし、どちらの入力形態でも、行末を「:」
(コロン)にすると、出力を抑制します。(出力
を表示しません)
2D Math Input と Maple Input では文末のセミコロンの有無が違う
2 Mapleはインタプリタ型のソフトウェアですので、JavaやC言語などのように逐一コンパイルする必要はありません。
- 12 -
1-8 新しい実行グループを挿入する
Maple は一度記述した実行グループの前に新しい実行グループを挿入することが可能です。実
行グループを挿入するには、現在の実行グループにカーソルを置き、[Ctrl+K]を押します。ま
たは[挿入]メニューの[実行グループ]をポイントし「カーソルの前」を選択します。
同様に、現在の実行グループの次に新しい実行グループを挿入するには、Ctrl+J または「カー
ソルの次」のメニューを選択します。
なお、Maple の実行グループはいつでも編集して再計算に用いることができます。一度計算を
実行した後に変数の値を変えたり、追加したりすることが可能です。
1-9 実行グループ単位で削除する
不要な実行グループを削除するには、実行グループにカーソルを持っていき、Ctrl キー+Del
キーを押します。するとカーソルのあった行単位で削除することが可能です。
(赤字で指定して
いる計算コマンドの行と青字の出力結果を行単位で削除することができます)
- 13 -
1-10 数式ラベルを参照する
プロット以外の出力には必ず数式番号(ラベル)が付加されます。前の計算結果に付いている
数式ラベルを参照して計算させることも可能です。
数式番号を参照して入力するには、Ctrl+L キーを押して表示されるダイアログに数式番号を入
力します。または、[挿入]メニューから[ラベル]を選択します。
数式ラベルを用いた計算
例えば、前に計算した 100!の結果を素因数分解するには、以下のような手順で入力します。
① 素因数分解のためのコマンド「ifactor」をタイプします。
② 開括弧をタイプし、Ctrl+L キーを押してラベル入力のダイアログを表示します。
③ 数式ラベル1番を参照するため「1」と指定します。
④ [OK]ボタンを押します。
⑤ 番号(1)が入力されたら、閉括弧をタイプし、最後に[Enter]キーを押します。
⑥ 計算結果が表示されます。
- 14 -
2. コマンドの基本的な使い方
Maple には 4000 種類以上のコマンドが提供されています。そのすべてのコマンドを覚えるこ
とは不可能ですので、ここではまず基本的なコマンド5種類を覚えます。
Maple のコマンドは以下のような方法で記述します。
‹
Maple Input(テキスト入力)の場合:文字は赤色で表示されます。
> コマンド名(引数);
‹
2D Math Input(数式入力)の場合:文字は黒色で表示されます。
> コマンド名(引数)
ここで「>」記号はプロンプトと呼ばれる入力のための記号です。この記号はMaple側が表示し
ているので、ユーザが入力する必要はありません。
どちらの形式で入力する場合も、引数は必ず丸括弧で括ります。角括弧([])や波括弧({})は
それぞれ別の使い方で用いられます。
2-1 方程式を解くための solve コマンド
solve コマンドは、引数で与えられた方程式を指定された変数について解きます。
solve(方程式, 変数);
最初に解きたい方程式を指定して、2番目の引数で解く変数名を指定します。以下の場合、与
えられた方程式を変数 x について解いています。
(前者は 2D Math Input での入力、後者は Maple Input での入力です)
2D Math Input では、指数を入力する「^」(キャレット記号)を入力すると、自動的に前に
入力した式・数の右肩にカーソルが移動して指数として入力できるようになります。指数の入
力後は、カーソルキー(「→」キー)で右に移動して入力を続けます。
同様に、掛け算である「*」(アスタリスク)は自動的に「・」
(ドット)記号に置き換わりま
す。(下記の図で黒中丸字の表記)
Maple Input の場合は、キーボードからの入力通りに表示されます。(下記の図で赤字の表記)
solve コマンドは、1変数の方程式に限らず、多変数の方程式(連立方程式)についても解を
求めることが可能です。連立方程式を解く場合は、複数の方程式と解くべき複数の変数を角括
弧または波括弧でまとめます。
例えば、次のコマンドは、円 x + y = 1 と直線 x − y = 1 の交点を求めています。
2
2
- 15 -
2-2 関数やデータを描画するための plot コマンド
2 次関数や三角関数などを描画するには、plot コマンドを用います。plot コマンドは1変数の
関数を描画するためのコマンドです。
plot(1変数関数, 変数=範囲..{ XE “..;#” }範囲);
2 番目の引数には描画する関数の範囲を指定します。複数の1変数関数を描画する場合は関数
を波括弧で指定します。
また、2 変数の関数を描画するときは、plot3d コマンドを用います。
plot3d(2 変数関数, 変数 1=範囲..範囲, 変数 2=範囲..範囲);
- 16 -
3 次元のグラフ(曲面)は、マウスで自由に視点を変更することができます。一度グラフをマ
ウスでクリック(選択)してから、マウスで回転を行ってみてください。
なお、プロットコマンドには、軸の種類の指定や線・面の色の指定、タイトルやレジェンドの
指定などを行うためのオプションを指定することができます。詳細は後述の各章を参照してく
ださい。
2-3 変数への割り当てを行う「:=」
計算した結果を別の変数に保存する(この処理を Maple では“変数に結果を割り当てる”と言
います)を行うには、次の書式でタイプします。
変数:=値(式);
例えば、変数 a に2という値を割り当てるには次のように「変数 := 値(式)」として記述しま
す。一度割り当てた変数は、変数名を使って計算させることが可能です。
ここで、単なる等号(=記号)は、solve コマンドの説明の際に使ったように、方程式の等号
として用いることに注意してください。
- 17 -
2-4 値を代入する subs コマンドと式を評価する eval コマンド
変数に値を割り当ててしまうと、それ以後の計算にもすべて影響が出てしまいます。そこで、
一時的に変数に値を代入して式の値を計算したいような場合は subs{ XE “subs” }コマンドま
たは eval{ XE “eval” }コマンドを用います。それぞれの使い方です。
subs({代入式},式);
eval(式, {評価式});
例えば、以下は式 eq にある方程式を割り当てて、t が指定されたときの値を求めています。
subs コマンドも eval コマンドも指定された t の値で式 eq を評価しているので、これらのコ
マンドを実行した後でも eq には元々の式が割り当てられています。
なぜ、同じような目的のコマンドが用意されているかという理由ですが、subs コマンドはあく
まで形式的に式への代入を行います。一方、eval コマンドは式に対する評価(計算)を行い
ます。以下のような例でその違いを確認できます。
2-5 計算エンジン(カーネル)を初期化する restart コマンド
Maple の計算エンジンを初期化するには restart コマンドを用います。restart コマンドを
使うとこれまでの計算結果や変数への割り当て情報をすべて消去して最初に起動した状態に戻
します。
以下では、変数 x に値を割り当てて計算を行った後に restart を行っています。restart コ
- 18 -
マンドの実行後は変数への割り当ては解除されます。
2-6 コマンドの使い方がわからないとき(ヘルプの参照方法)
先にも述べたように、Maple には 4000 種類以上の関数が用意されています。それぞれの関数
には引数の指定の仕方やオプションが用意されていますが、詳しい使い方がわからないときは、
Maple ヘルプを参照します。
特定のコマンドのヘルプを参照するには、以下の2通りの方法があります。
‹
?コマンドを使ってヘルプを参照する
例えば solve コマンドの使い方を参照する場合、プロンプト上で ?solve とタイプし実
行します。すると、solve コマンドのヘルプページがヘルプブラウザで表示されます。
‹
コマンドの文字列中にカーソルを合わせて F2 キーを押す
この場合も?コマンドを使った場合同様に、該当するコマンドのヘルプページがヘルプブラ
ウザ上で表示されます。
ヘルプの詳しい使い方については第 6 章の「ヘルプブラウザの使い方」を参照してください。
- 19 -
2-7 コンテキストメニュー(マウス操作)を用いた計算
コマンド自体がわからないとき、Maple 独自のコンテキストメニューを用いてコマンド名を探
し出すことができます。コンテキストメニューとは入力式または出力式の上でマウス右ボタン
を押して表示される計算簡易メニューのことをいいます。コンテキストメニューは、右ボタン
を押した対象の数式やデータに応じてメニュー内容は動的に変更します。
コンテキストメニューを試すには、次の手順通りに操作してみてください。
①数式のみを入力し、[Enter]キーを押して実行します。入力通りの結果が表示されます。
②青字の出力上でマウスの右ボタンを押します。この操作で表示されるメニューがコンテキス
トメニューです。ここでは、[微分]をポイントして変数 x を選択します。変数 x に関する微
分を計算する、という意味です。
- 20 -
③最初に入力した式の出力の数式ラベル(番号)を参照して、微分のためのコマンドが挿入さ
れます。
コンテキストメニューは数式だけでなく数値や行列、グラフィックスに対しても有効です。計
算した結果、読み込んだデータなどの出力上でマウス右ボタンによるコンテキストメニューを
利用することで、コマンド名を調べることも可能です。
2-8 練習問題
ここまで学んだ solve コマンド、plot コマンド(または plot3d コマンド)、変数への割り
当てを用いて次の練習問題を Maple で行ってみてください。
①
関数 y = cos(x) の曲線グラフを x = 0 から x = 10 の範囲で描画しなさい。
②
関数 z = exp(− x − y ) の曲面グラフを x, y 共にそれぞれ-1.2 から 1.2 の範囲で描画しな
さい。
③
t = 3 のとき、式 t 3 + t 2 + t + 1 の値を求めなさい。
2
2
- 21 -
【解答例】
①
②
③
- 22 -
3. プロットをカスタマイズする
ここでは、プロットのカスタマイズ方法について紹介しています。
3-1 plot コマンドや plot3d コマンドにオプションを指定する
Maple の plot コマンドや plot3d コマンドでは、軸の指定や曲線の色、グリッド線などを指
定するオプションが用意されています。オプションはそれぞれ組み合わせて用いることが可能
です。
① 軸を描画する
axes オプションを指定します。指定できる値は、boxed, frame, none, normal の4つです。
② 線の色を変える(面の色を変える)
color オプションで指定します。
plot および plot3d コマンドで指定できる色の名前のリストは、?plot,colornames を実行
して表示されるヘルプページを参照してください。
- 23 -
③ グラフにタイトルを付ける
グラフのタイトルは title オプションで指定します。この際、typeset コマンドで数式を指
定することができます。
なお、数式が正しく表示されるのは 2 次元グラフに限ります。3 次元グラフでは1次元の数式
(テキストの表記)になります。
ここで紹介したオプションを組み合わせて、次のようなグラフを描画することもできます。
コマンドを複数行に渡って書く場合は、見やすくするために適当なところで改行(Shift+Enter
キー)するようにしましょう。
- 24 -
3-2 コマンドを使わずにオプションを変更する
前章では plot コマンドや plot3d コマンドに axes や title などのオプションを指定してグ
ラフをカスタマイズしましたが、Maple ではメニュー操作でもグラフのスタイルを変更するこ
とができます。
まず、plot コマンドまたは plot3d コマンドでグラフを描画します。次に描画されたグラフ
をマウスで選択します。すると、ワークシートウィンドウの上部にあるツールバーがプロット
用のツールバーに変更されます。
プロット用ツールバーには以下のようなボタンが用意されています。
左から順に以下の機能が用意されています;
① グラフスタイルの変更:線種や面の描画方法を変更できます。
② 軸スタイルの変更:axes オプションで指定できる軸の設定変更が可能です。
③ 軸の縦横比の設定
④ 座標のプロービング(座標数値の追跡)
⑤ プロット座標のカーソル位置
⑥ プロットのズーム(大きさ)の変更
⑦ グラフの移動
⑧ プロットオンクリックの実行
⑨ 軸のプロパティウィンドウの表示
⑩ デフォルトのビューを表示
⑪ グリッド線プロパティウィンドウの表示
⑫ グリッド線の表示切替
これらはすべてマウス操作で変更・設定することが可能です。また、ツールバーに用意されて
いる設定変更機能は、グラフ上でマウス右ボタンをクリックして表示されるメニューでも同様
に変更することが可能です。
- 25 -
3-3 描画ツールを使う
描画ツールを使うことで、コマンドによって描画されたグラフを元にして 2 次元グラフをカス
タマイズすることができます。
描画ツールを表示するには、まず適当なグラフを描画し、次にツールバーから[描画]を選択し
ます。
描画ツールを選択すると、以下のようにツールバーが変更されます。
(グラフを必ず選択してお
いてください)
変更されたツールバーは以下のように表示されます。
- 26 -
描画ツールを使って、グラフ上の任意の場所にテキストを挿入し、また矢印や丸を描画してみ
ます。
まず、グラフを選択状態にした後で、[テキストツール]のボタンをクリックします。
グラフ上の適当な位置で、ドラッグしてテキストを描画する範囲を用意します。
ドラッグしてテキスト領域を用意
矩形が表示され、カーソルが入力
状態であることを示しています。
ここでテキストを入力します。テキストには 2D Math モードを利用して任意の数式を入力す
ることもできます。入力状態の切替(テキスト→2D Math)は F5 キーを押します。
- 27 -
テキストや数式を入力して、一旦グラフを選択(クリック)すると、入力された文字列が確定
します。
次に、グラフ上に矢印線を加えます。
線ツール(直線を描画するためのツール)を選択して、さきほど入力した文字列領域の近辺で
一度クリックします(クリックした箇所が始点になります)。そこから、マウスポインタを曲線
の適当な場所へ移動(線を描画)させ、曲線上の適当な位置でマウスポインタをダブルクリッ
クします(ダブルクリックした箇所が終端となります)。ダブルクリック後、線が閉じます。
- 28 -
現在の文字列領域は大きいので、マウスでテキスト領域をクリックしてアクティブにし、領域
サイズを変更します。
線が描けたら、線の端を矢尻にします。線をクリックで選択し、ツールバーの線種ボタンから
適当な矢尻を選択します。
- 29 -
選択後、線の端が矢尻になります。
ここでは、テキストと矢印線を描きましたが、これ以外にも丸や四角などの任意の図形を描画
することができます。
3-4 練習問題
① 三角関数 sin( x), sin(2 x), sin(3x) のグラフを同時に描画しなさい。ここでそれぞれの曲線の
色を赤、青、緑としなさい。
② ①の問題で作成した3つの曲線がそれぞれどの三角関数を意味するかを表示するため、描
画ツールを用いて注釈を付け加え、注釈と曲線を矢印線で結びなさい。
⎞
⎛ x2 + y2
, x = −1..1, y = −1..1⎟⎟ を 実 行 し な さ い 。 ま た 、 オ プ シ ョ ン
⎠
⎝ sin( x ⋅ y )
③ コ マ ン ド plot 3d ⎜⎜
numpoints=1000 を与えて再実行し、オプションを指定せずに実行した結果と何が違う
かを観察しなさい。
- 30 -
【解答例】
①
②
- 31 -
③
- 32 -
4. Maple で問題を解く
この章では、Maple の正しい操作方法を学ぶために、具体的な問題を解く作業を行っていきま
す。問題を解く作業を行うことで、Maple に用意されているコマンドの使い方やその特徴を学
びます。
4-1 問題1(接線の計算)
2
放物線 y = x − x + 1 について、 x = 2 の点における接線を求めよ。
【解答】
まずは問題を図示してみます。新しいワークシートを開いてください。描画ツールを使って点
と接線も描いてみます。
接線の定義からその傾きは曲線の微分を計算することで求まります。Maple で微分を計算する
には diff コマンドを用います。
これが a の値です。なお、式ラベルを参照するには、Ctrl+L キーを押して式の番号を入力しま
す。
次に y 切片である b の値を求めます。x=2 のときの y の値を求めれば b の値を計算することが
できます。
- 33 -
従って、求めるべき接戦の式は、 y = 3x − 1 となることがわかります。
ここまでは Maple の微分コマンドを使ってすべて手計算同様にひとつひとつ計算してきまし
た。一方で、Maple には接線を計算するといった目的毎のコマンドが別のパッケージとして用
意されています。
この問題の接線に関しては、Student パッケージの Calculus1 サブパッケージに用意されてい
る Tangent コマンドで求めることが可能です。
パッケージは Maple が起動した段階では利用できません。利用する場合に適宜パッケージを読
み込ませる必要があります。パッケージを読み込むには with コマンドでパッケージ名を指定
します。(なお、この例では行末にコロン(:)を付加しています。これは with コマンドの出
力を表示しないようにするためです)
with(パッケージ名);
Maple に標準で用意されているパッケージには、線形代数のための LinearAlgebra パッケージ
や、プロットコマンド類を拡張する plots パッケージなど、分野毎の計算や機能拡張のための
パッケージが用意されています。
4-2 問題2(交点の計算と積分)
a > 0 とする。 y = x 2 と y = 2 ⋅ ( x − a) 2 + 1 が、ただ一点のみ共有するような a の値と、その
共有点の座標を求めよ。また、a がその値のときにこの2つの曲線と y 軸とで囲まれる図形の
面積を求めよ。
【解答】
まず、題意から二つの放物線の式を連立方程式として解いてみます。新しいワークシートを開
いておいてからコマンドを記述して計算を実行していきます。
solve コマンドを用いて連立方程式を解いてみましたが、RootOf というものが返されてきま
- 34 -
した。
Maple では、方程式の解は可能な限り簡単な形式で表現しようとします。RootOf の詳細は割
愛しますが、RootOf はその第1引数の方程式の解を意味しています。
四則演算と根号のみで表現された解を得たいので、solve コマンドのための環境変数である
_EnvExplicit を true に指定して、再度方程式を解いてみます。
なお、再度 solve コマンドで方程式を解くときは、先に入力したものをコピー&ペーストして
ください。
変数 a を含んだ解が得られました。題意では 2 つの放物線はただ 1 つの共有点を持つというこ
とですから、この 2 つの解は等しいはずです。そこで、再度 solve コマンドを使ってこの 2
つの解が等しくなるような a の値を計算します。
solve コマンドを使って a の値を求めるために、(3)式で得られた 2 つの解の x 座標の結果をそ
れぞれ取り出します。
解を取り出すには、次のように eval コマンドを使って x の値を評価します。
ここで、式番号を参照するには Ctrl+L キーを押してラベルの参照を用いてください。また、(3)
式は 2 つの解からなる結果です。(3)式の1番目と 2 番目のそれぞれを得るために角括弧([])
で要素を指定しています。
二つの解の x 座標の値が取り出せたので、(4)と(5)が等しいという方程式を用意して solve コ
マンドで解いてみます。
ここでも同じくラベルを参照しています。Ctrl+L キーを押して(4)式と(5)式を参照してくださ
い。
solve コマンドによって、a の値が2つ求められました。問題設定から a > 0 なので、求める
- 35 -
べき a の値は
2
であることがわかります。
2
確認をするために、元の方程式系を変数 eq として割り当てて、得られた a の値のときのグラ
フを描画してみます。plot コマンドを使うときは右辺の x の関数部分だけが必要なので、y を
評価することで右辺だけを取り出しています。
なお、(8)式の結果を得るために a の値をユーザが入力していることに注意してください。この
ような形式で分数や根号を入力するにはパレットを使います。または単にコマンドで
sqrt(2)/2 とタイプして入力しても構いません。
得られた2つの関数について、グラフを描画してみます。
確かに交点は1点だけとなっていることがわかります。この共有点の座標は、先に求めた方程
式の解に対して得られた a の値で評価することで得られます。
- 36 -
次に、面積を求めます。被積分関数は、eval コマンドを使って次のようになります。
この被積分関数を x=0 から先程求めた共有点の x 座標の値まで積分します。Maple では、積分
を計算するために int コマンドを用います。
なお、int コマンドを使う代わりに、画面左にあるパレットから積
分パレットを使って計算させても構いません。
- 37 -
4-3 問題3(代数計算)
x 2 + 3 ⋅ x + 8 = 0 の2つの解をそれぞれ a, b とするとき、 a 2 + a ⋅ b + b 2 , a 4 + 21 ⋅ b 3 の値を求
めよ。
【解答】
新しいワークシートを開いてください。
与式の解と係数の関係を変数 eq に割り当てます。
eq の条件の下でそれぞれの式の値を求めるには simplify コマンドを用います。simplify
コマンドは式を簡単にするためのコマンドで、2 番目の引数には簡単にするためのルールを指
定することができます。
simplify コマンドは Maple が内部で保有している公式を参照して数式を簡単にすることもで
きます。例えば、以下のような三角関数式や根号式を簡単にすることが可能です。
- 38 -
5. Maple でプログラミングする
Maple は、実はそれ自体がひとつのプログラミング言語(Maple 言語)で開発されています。
この章では Maple のプログラミングの基本について学習します。
5-1 関数とプロシージャ
引数を受け取って結果を返すものを関数と呼びますが、Maple ではこのような数学的な関数を
次のような記述方法で定義することができます。
関数名 := 変数 -> 処理;
実際に func という名前の関数を作って試してみます。新しいワークシートを開いてください。
ここで、関数定義の際の矢印は -> をタイプすると自動的に矢印に置き換わることに注意して
ください。(Maple Input では入力通りの表記になります)
関数の引数を複数指定するときは丸括弧で複数の変数を括って定義します。例えば、2つの引
数を受け取ってその距離を計算する関数を定義するには次のように記述します。
関数 kyori は二つの引数であれば問題はないので、任意の変数を引数に指定することも可能で
す。しかし、複数の引数で定義した関数に一つの引数しか渡していない場合はエラーが返され
ます。
関数はこのように単純な処理の計算に適した定義方法です。
- 39 -
一方、複雑な計算や処理を必要とするような場合は、プロシージャ(proc)を用います。
関数名 := proc(変数)
local 局所変数;
...処理...
return(戻り値);
end proc;
【注意】プロシージャの記述には Maple Input 形式の入力を用いることをお勧めします。2D
Math Input モードから Maple Input モードへの切替は F5 キーを押します。
例えば、指定された式 expr を指定された引数 var で微分・積分し、その結果を返すような処
理を行うプロシージャを定義してみます。
なお、proc には引数を指定しなくても構いません。
5-2 反復
プロシージャ内部で反復計算が必要なときは、for-loop 文を用います。
例えば、1 から数 n までの二乗和を計算する関数 sum2 を作る場合は次のように記述します。
組込み関数である add を用いた結果と同じであることが確認できます。
- 40 -
一方、反復と同様に、同じ計算を複数回実行し、そのすべての計算結果が必要なときは seq コ
マンドを用います。seq とは sequence の最初の3文字を取った名前です。
例えば、以下の例では、引数の関数を 1 階から n 階までの微分を求めるための記述です。
5-3 条件分岐
関数やプロシージャでは条件に応じて処理内容を変更することができます。条件分岐は
if-then-else 文を用います。
例えば、1,0,-1 の3つの乱数を発生させて、それぞれの値のときにグー(goo)、チョキ(choki)
、
パー(par)を返すような関数 janken を作ってみます。
5-4 数に関連するデータ型
関数やプロシージャを定義する際、特定の引数にのみ有効な処理を定義したい場合があります。
Maple には、posint(正整数)、complex(複素数)などの数に関する型や、algebraic(代
数式)、list(リスト)
、listlist(入れ子リスト)など配列や構造に関するデータ型が用意
されています。
(データ型の詳細は?type とタイプして表示されるヘルプに記述されています)
例えば、先程定義した kyori 関数の引数 x, y を、数値のみに限定した kyori2 関数を定義して
みます。
型を定義するときは、「変数名::型名」と記述します。
- 41 -
実際に計算に用いてみます。
数に関しては問題なく機能しています。
一方、先程同様に未知の変数や根号(無理数)を与えて計算してみます。
どちらの場合もエラーが返されます。これは、numeric 型が整数(integer 型)、分数(fraction
型)、浮動小数(float 型)のいずれかのときに成り立つからです。
(つまり、無理数は numeric
型のデータではないということになります)
5-5 配列に関連するデータ型
複数のデータを集めた型を一般に「配列」や「構造体」などと呼びますが、Maple にも色々な
配列・構造体に関連したデータ型が用意されています。Maple で主に用いる配列・構造に関連
するデータ型は以下の通りです。
① 式列
Maple 独自のデータ型で複数の要素を「,(コンマ)」で連結しているデータです。例えば
のような形で定義します。なお、式列の任意の番号の要素は[]記号で取り出せます。以下では、
mydata に割り当てられている2番目の値を取り出しています。
また、式列は seq コマンドの戻り値でも生成されます。
- 42 -
以下の例は、n 番目の素数を求める ithprime コマンドを使って 1 番目から 10 番目までの素
数を生成し、結果を変数 p に割り当てています。
② list、listlist(角括弧[]で表されるデータ)
式列を角括弧で括ったものが list となります。
listlist とは、入れ子となった list です。
listlist のデータを取り出すときは、[]で要素の番号を指定します。例えば上記では 2 番目
のリスト[2,3,4]の 3 番目の要素を取り出しています。
③ 集合(波括弧{}で表されるデータ)
式列を波括弧{}で括ったものが集合です。Maple の集合は数学的な意味での集合と等価な配列
となります。
下記の例では、変数 myset1 に{3,3,2,5,1,2}として与えています。すると結果は{1,2,3,5}
となります。
(Maple の)集合は以下の特徴を持ちます。
 重複する要素は省かれます
上記の集合のように数3は複数含まれていますが、戻り値の集合では1個です。

順序は保存されません
集合内では順序は Maple 内部のメモリ上のアドレスに依存します。これに対して
list 型や式列では順序は保存されます。
④ Matrix 型、Vector 型、Array 型
Matrix 型および Vector 型は、線形代数のための LinearAlgebra パッケージやベクトル解析の
ための VectorCalculus パッケージで用いるためのデータ型です。Array 型は Matrix や Vector
の基本となるデータ型で、任意の次元・サイズの配列となります。
例えば、行列 [[1,2],[3,4]] は以下のように定義します。
行列と listlist 型は一見すると同じように見えます。しかし、list や listlist 型は特に
メモリに関して何も考慮せずデータを冗長に保持します。一方、Matrix 型や Vector 型は、
datatype オプションを指定することで、最適なメモリサイズや読み書き制限などの属性を保
- 43 -
持しており、配列データへのアクセスも式列、list や listlist に比べて非常に高速です。
従って、大きなデータを扱う処理を行うときには Matrix, Vector, Array などの型でデータを用
意することが良いでしょう。
5-6 プログラミングを使った例題
Maple のプログラミング機能を使って簡単な例題を解いてみます。
【問題】
ある自然数 m について、m の約数の和が 3m となるとき、m を3倍型であると呼ぶものとしま
す。例えば自然数 6 の場合だと、その約数は 1,2,3,6 で、1+2+3+6=12 で 3×6=18 なので、
6 は3倍型ではありません。
① 自然数 672 が 3 倍型であることを確かめなさい。
② 与えられた自然数 N について、N 以下の自然数で3倍型となる数を計算するプログラムを
作成し、実行してみなさい。
【解答】
与えられた数の約数を求めるには、numtheory パッケージ(整数論のためのパッケージ)に
用意されている divisors コマンドを使います。
求まった約数の和を計算します。データの和を計算するときは、add コマンドを使います。
672×3 = 2016 なので、数 672 は3倍型であることがわかります。
次にプログラムを作成していきます。まず、与えられた数が 3 倍型であるかを判定するための
関数を定義しましょう。
ここでは、関数名を check3 とし、引数 n を受け取ってその約数の和を計算し、和が 3n と等
しいかどうかを is コマンドで判定しています。is コマンドは等式が成り立つ場合は true を
返し、そうでない場合は false を返します。
check3 関数を定義したら、実際に試してみます。確かに 672 のときは true を返しているこ
- 44 -
とが確認できます。
さて、check3 関数を使って、1 から N までの数の中で 3 倍型となる数を探していきます。以
下のようなプロシージャ find3bai を記述します。
(プロシージャを記述する際は Maple Input
モードへ切り替えてください。2D Math Input から Maple Input への切替は F5 キーを押しま
す)
プロシージャを定義したら、さっそく計算してみます。上記では 1000 以下の 3 倍型、10,000
以下の 3 倍型を探していますが、結果は 120 と 672 のようです。
上記のプロシージャでは、局所変数として result という名前の変数を定義しています。これ
は反復計算で見つかった 3 倍型の数を保存しておくための変数です。result には見つかった
3倍型の数が式列として格納されていきます。
なお、反復計算が終わった後に return 文で結果を返しますが、式列の最初の要素は Null な
ので、2 番目以降から最後の要素(-1番目)を取り出していることに注意してください。
- 45 -
6. ヘルプブラウザの使い方
Maple には 4000 種類以上の関数やコマンドが用意されていますが、そのひとつひとつの細か
い使い方(コマンドの名前、機能、引数の指定方法・型、オプション)を学ぶには、ヘルプブ
ラウザで該当するページを参照します。
6-1 ヘルプブラウザを表示する
ヘルプブラウザを表示するには、[ヘルプ]メニューから[Maple ヘルプ]を選択するか、またはワ
ークシート上で[Ctrl]キー+[F1]キーを押します。
ヘルプブラウザは左側にコンテンツ・ペイン(または検索結果ペイン)が表示され、右側にヘ
ルプコンテンツが表示されます。
- 46 -
6-2 特定コマンドのヘルプページを参照する
調べたいコマンドのヘルプを参照するには、検索フィールドにコマンド名を入力して[検索]ボ
タンを押します。例えば solve コマンドについて調べたいときは、検索フィールドに「solve」
とタイプして[検索]ボタンを押します。すると solve コマンドに関連したコンテンツ結果リス
トが検索結果ツリー内に表示されます。
なお、検索の対象はデフォルトでトピック名(コマンドやパッケージ名に指定された文字列が
含まれるか否か)で検索されます。ヘルプコンテンツ内のすべての記載内容を対象にして検索
を行うには、検索対象を[テキスト]に変更します。
また、検索対象は、ヘルプページ、タスク、辞書、マニュアルなどに絞ることができます。検
索対象は[リソース]で選択できます。
【注意】Mapleヘルプブラウザは日本語の検索は受け付けません。コマンド名または検索する
文字列は必ず英語で指定してください。
- 47 -
6-3 ヘルプコンテンツのコマンド例をコピーして使う
各コマンドやパッケージのヘルプページには、例題が記載されています。例題を自分が作成し
ているワークシートにコピーすることができます。
ヘルプページのコマンド例をコピーするには、コマンド例の上でマウスの右ボタンを押して[例
題のコピー]を選択するか、または[編集]メニューから[例題のコピー]を選択します。
その後、自分が作成しているワークシートにペースト(貼り付け)をすれば、ヘルプに記載さ
れていたコマンド例がすべてコピーされます。
また、ヘルプページ自体をワークシートとして開くための機能も用意されています。
ヘルプブラウザの上図のボタンを押すと、現在開いているヘルプページをワークシートとして
開くことができます。ヘルプに記載されているコマンドの引数の指定方法などを参照しながら
計算させたい場合などに便利です。
- 48 -
6-4 コマンドやパッケージの一覧を見る
Maple を起動したときに利用可能な組込みコマンドと Maple に標準で用意されているパッケ
ージの一覧を見るには、[ヘルプ]メニューから[マニュアル、リソース、その他]をポイントし、
[コマンド一覧]または[パッケージ一覧]を選択します。
- 49 -
7. 拡張パッケージを利用した各種計算
これまでは、
Maple が持つ数式処理機能の基本を中心にその使い方について説明してきました。
ここではもう少し目的別に Maple の使い方について学習します。
Maple では、起動した後に個々の目的に応じて計算を行うために、パッケージと呼ばれる組込
拡張関数・コマンド群を適宜呼び出します。組込パッケージには、以下などが含まれます;
z
z
z
z
z
z
z
z
統計計算のための Statistics パッケージ
フィッティングのための CurveFitting パッケージ
いろいろなプロット機能を利用するための plots パッケージ
2 次元・3 次元幾何学のための geometry または geom3d パッケージ
文字列操作のための StringTools パッケージ
常微分方程式のための DEtools パッケージ
偏微分方程式のための PDEtools パッケージ
他言語への変換のための CodeGeneration パッケージ
パッケージの一覧は、[ヘルプ]メニューの「ツアー、マニュアル、その他」からパッケージ一
覧を選択することで確認できます。
この章では、代表的なパッケージの使い方について説明しています。
7-1 常微分方程式を解く
Maple の数式処理機能を用いて微分方程式(常微分・偏微分方程式)を未知のパラメータを含
む形で解くことが可能です。
まずは、微分方程式の入力方法から学びます。ここでは、 M ⋅ &x& + c ⋅ x& + k ⋅ x = 0 の1自由度振
動系の微分方程式を扱います。
まず、新しいワークシートを(ワークシートモードで)開きます。
通常、Maple では、式の微分を diff コマンドまたはシングルクオート(')で記述します。
出力の結果は異なりますが、上記はいずれも x(t ) の微分を意味しています。
それでは、実際に微分方程式を入力してみます。以下の図を参考にして、同じようにコマンド
を入力します。
- 50 -
ここでは、微分方程式は deq という変数に割り当てています。
さて、ここではまず微分方程式の厳密な解き方を学びます。微分方程式を解くには dsolve コ
マンドを用います。
※ なお、初期条件や係数パラメータは与えずに解きます。パラメータや初期条件を定めずに
得られた解を、厳密解(または記号的な解等)と呼びます。
得られた解には「_C1」や「_C2」などの係数が含まれていますが、これらは積分定数です。初
期条件を与えて解いた際はこれらの係数値も計算されます。
いま求められた解関数が、元の微分方程式の解として正しいかを確認します。odetest コマン
ドに得られた解と元の微分方程式を与えます。
odetest コマンドは、解が元の微分方程式として正しいときに 0 を返します。
今度は、初期条件を与えて元の微分方程式を解いてみます。
(係数 M,c,k はまだ未知変数のまま
にしておきます)
厳密な解き方の最後に、係数値と初期条件を定めて、厳密解を計算してみます。下記を参考に
して係数値を決めた微分方程式 deq2 を用意して dsolve コマンドを用いてみます。
- 51 -
得られた厳密解の右辺を取り出し、dsol という変数に割り当てて、グラフを描きます。
ここまでは、与えられた微分方程式を厳密に解いてきました。一方で、解析的に厳密な解を求
めることが困難な問題もあります。そのような場合は、微分方程式を数値的に解きます。
Maple で微分方程式を数値的に解くには、dsolve コマンドに numeric オプションを指定し
ます。以下に記載の通りにコマンドを入力してください。
dsolve コマンドに numeric オプションを与えて用いると、dsolve コマンドは解を計算する
ためのプロシージャ(差分形式)で返してきます。つまり、結果は解を構成する関数となって
います。
変数 dsol2 には、この問題の解関数が割り当てられています。したがって、dsol2 に引数と
して t の値を与えると、その点での解関数の値と1階微分値を得られます。
- 52 -
numeric オプションを用いて計算された解関数をプロットするときは、plots パッケージに
ある odeplot コマンドを用います。
ここで、odeplot の引数は、dsolve からの中間形式解関数、描画する変数(のリスト)、変
数の範囲、オプション、の順で用います。
なお、パッケージの中のあるひとつの関数・コマンドだけを呼び出したいときは、
> パッケージ名[コマンド名](引数...)
といった記述の仕方も可能です。
上記の例では、解関数は差分によるブラックボックス化された形で得ましたが、与えられた区
間での多項式近似(スプライン近似)で解関数を構成することも可能です。
解関数をスプラインで得るには、dsolve コマンドの引数に output=piecewise および
range オプションを指定します。例えば、この章の問題に対して解を区分関数で得る場合は、
次のようにコマンドを記述します。
>
dsolve({deq2,(D(x))(0)=0,x(0)=1},
range=0..1);
numeric,
output=piecewise,
dsolve コマンドでは、関数として結果を得る方法以外に離散点での値を求めることも可能で
す。詳細は dsolve コマンドの output オプションについてのヘルプを参照してください。
- 53 -
7-2 偏微分方程式を解く
ここでは、熱伝導問題や流れの方程式などの偏微分方程式を Maple で扱う方法を学習します。
前章で常微分方程式は dsolve コマンドで解きましたが、偏微分方程式については pdsolve
コマンドを用います。
さっそく、偏微分方程式を入力してみます。新しいワークシートをワークシートモードで開き、
以下のコマンドを入力してください。
上記式右辺の入力で x$2 は、変数 x に関しての 2 階微分を意味しています。
さっそく pdsolve コマンドを適用してみます。
この場合、Maple は変数分離を適用して未知関数を用いて解を表現します。pdsolve のデフォ
ルトの変数分離は乗算であると仮定していることに注意してください。
このような陰的表現では解がどのようなものかはわかりません。そこで PDEtools パッケージ
で提供されている build コマンドを用います。build コマンドは pdsolve で得られた陰的表
現を、陽的表現に変換するためのコマンドです。
なお、pdsolve コマンドに build オプションを指定すると、自動的にこの操作を適用した結
果が得られます。
- 54 -
pdsolveで得られた解を構成して陽的な解関数を求めるための変数分離の方法(演算)を変更
して解を求めることも可能です。例えば、解関数が加法に関して変数分離可能であるという場
合は、HINTオプションを用いて次のようにコマンドをタイプします。
これ以外に、除算や根号などを指定して、変数分離を指定することも可能です。
7-3 Maple による境界値問題解法
これまで、pdsolve コマンドを用いて与えられた偏微分方程式の理論解の計算について考えて
きました。次は pdsolve を用いて近似解の探索を行います。
Maple での偏微分方程式の数値解は、差分による中間式表現(モジュール)で得られます。近
似解を求めるには、dsolve のときと同様に numeric オプションを付加して pdsolve コマン
ドを用います。
まず、元の偏微分方程式 pdeq の拡散係数 a の値を適当に定めます。ここでは a=0.2 とします。
次に、境界条件を定めます。以下の通りに入力してください。
初期状態 t=0 のときの温度分布をグラフにすると以下となります。
- 55 -
条件が整ったので、与えられた偏微分方程式と境界条件の下で、解を計算します。
pdsolve コマンドの戻り値は、解関数を構成するプログラム(これをモジュールと呼びます)
となります。ここでは、上記の計算結果を pdsol という変数に割り当てています。
解関数を構成するモジュールとは、解関数の値の評価やグラフ化、ステップ幅の変更などの機
能がモジュール化されたものを意味しています。解関数構成プログラムは、何も評価しない段
階では解関数の計算値を持っていないことに注意してください。
例えば、解関数の特定の点での値を計算するときは以下のように、pdsol に割り当てられた結
果の解関数構成モジュールから value という名前のメンバ関数を用いて評価します。
ある点での値を求めるときは、上記のように pval に対して x と t の値を与えて評価すること
で目的とする関数 u ( x, t ) の値が得られます。
次に、特定の時刻 t のときの温度分布をグラフ化してみます。グラフ化は plot または plot3d
のメンバ関数を用います。以下は t =0.3 のときの温度です。
- 56 -
同様にして、x および t を変数とした応答面を描画してみます。これには plot3d のメンバ関
数を用います。
グラフ描画用のオプションと共に、以下のようにコマンドを入力し評価してください。
- 57 -
7-4 データフィッティング
Maple には、データの値から数式モデル(多項式など)へフィッティングを行ってモデルの係
数を同定する機能が用意されています。ここでは、外部データファイルの取り込み方法から、
線形および非線形モデルへのフィッティング方法について学習します。
Maple に用意されているフィッティング機能は、主に以下となります;
①
②
③
CurveFitting パッケージを用いる
Statistics パッケージを用いる
Global Optimization Toolbox を用いる
こ こ で 、 ① お よ び ② は Maple 本 体 で 計 算 が 可 能 で す が 、 ③ に つ い て は 別 売 の Global
Optimization Toolbox が必要となります。
ここでは、①と②の手法によるフィッティングを行っていきます。
まず、データファイルの準備です。ここではデータファイルを自身で生成し、一旦外部ファイ
ルに出力します。
なお、2行目のコマンドで model によって定義した関数の値にホワイトノイズを加えています。
以下に記載の通りのコマンドをタイプしてください。
これで外部ファイルが出来ました。一旦 Maple を再起動するか、もしくは新しいワークシート
を開いてください。
外部にある CSV などのフォーマットされたデータファイルを読み込むには、ImportMatrix
コマンドを用います。
ImportMatrix コマンドで読み込まれたデータは、自動的に Maple の行列型(Matrix 型)と
して定義されます。読み込んだデータを元に、いろいろな数式モデルへのフィッティングを行
ってみます。
- 58 -
① CurveFitting パッケージによるフィッティング
CurveFitting パッケージには、主に1次元のモデルへのフィッティングのためのコマンドが用
意されています。まず、CurveFitting パッケージを with コマンドで呼び出します。with コマ
ンドはパッケージを呼び出すためのコマンドです。
出力からもわかるように、CurveFitting パッケージには最小二乗によるフィッティングの他に、
B スプラインや有理関数へのフィッティングなどのコマンドが用意されています。
さて、さっそく読み込んだデータ mydata に対して、1次式および2次式への最小二乗フィッ
ティング(LeastSquares コマンド)を行ってみます。ここで、1番目の引数は離散点のデー
タ、2番目はモデルの変数となります。
2番目にあるように、任意の式へフィッティングを行う場合は、curve オプションで指定でき
ます。ただし、curve オプションで指定できるのは、フィッティングを行う係数に関して線形
であるものに限られます。
フィッティングした結果と元々のデータをグラフで確認してみます。
- 59 -
同様に、スプライン近似の場合についても考察してみます。
- 60 -
なお、上記スプラインの計算部分では、コマンドの終端を「:(コロン)」にして出力を抑制し
ています。スプラインによって得られた結果を確認したい場合は、このコロン記号を付けずに
コマンドを実行してください。
また、CurveFitting パッケージでフィッティングが可能なモデルは、1次元の線形モデル式(1
変数モデル式)に限られます。曲面へのフィッティングを行うときは、次の統計解析パッケー
ジか、Global Optimization Toolbox などを用いてください。
② Statistics パッケージ(統計解析パッケージ)によるフィッティング
Statistics パッケージにもフィッティングのためのコマンドがいくつか用意されています。一例
をあげると以下となります;
z Fit コマンド
z LinearFit コマンド、NonlinearFit コマンド
z Logarithmic コマンド
z ExponentialFit コマンド
※ Fit コマンドは、フィッティングを行うモデルが同定する係数に関して線形か非線形かを自
動で判別し、内部的に LinearFit や NonlinearFit などのコマンドを呼び出します。
さて、実際にフィッティングを行っていきます。ここでは、先程外部ファイルとして出力した
データに対して、モデル式を適当な次数の多項式として考えてフィッティングしてみます。
高次の多項式をすべて手で入力していくのは非常に面倒ですので、add コマンド(和を計算す
るコマンド)を用いて、フィッティングを行うモデル式 p を定義します。
このモデル式に対して、読み込んだデータのフィッティングを行います。
- 61 -
このフィッティング結果がどの程度データにマッチしているものか、グラフによって確認して
みます。なお、gdata は listplot コマンドを用いて折れ線グラフとして再描画しておきます。
(gdata := listplot(mydata, color=red)と実行してから以下のコマンドをタイプ・実
行してください)
この図では、フィッティングしたモデル式を青色で描画しています。
(元のデータが赤色)
Statistics パッケージのフィッティング関連コマンドには、フィッティングに関係した属性値を
得ることも可能です。例えば、フィッティング結果に対する残差の2乗平均・2乗総和、標準
偏差などが求められます。これらの情報の取得方法については、各フィッティングコマンドに
output=solutionmodule を与えることで得られます。詳細については、関数のヘルプを参
照してください。
- 62 -
7-5 CodeGeneration パッケージを用いた言語変換
CodeGeneration パッケージでは、Maple 上で定義した関数・プロシージャやデータを他言語
(C 言語、Fortran、Java、Visual Basic、MATLAB)の形式へと変換することが可能です。
まずは、Maple 上で定義した配列データの他言語への変換を試みてみます。
以下のサンプル同様にコマンドをタイプして、ヤコビアンを求めて結果を変数 J に割り当てま
す。
計算した J の行列の中身を C 言語および Fortran 形式に変換してみます。それら以外の言語に
変換する場合も同様の使用方法で可能です。(これら以外には Java、MATLAB、VisualBasic
が用意されています)
コード変換するために、CodeGeneration パッケージを読み込みます。
各言語へ変換を行います。
[C 言語への変換]
[Fortran への変換]
ここで、変換した結果をファイルへ掃き出す場合は、output オプションでファイル名を指定
します。また、optimize=true のオプションを付加すると、コードの最適化が行われます。
CodeGeneration パッケージでは、データだけでなくユーザが定義する関数・プロシージャを
他言語へ変換することも可能です。
- 63 -
次に示すコードは、1番目の引数として1次元の配列 data を受け取り、d の1番目の要素から
2番目の引数(整数)n までの和を求めるためのコードです。
なお、コードを入力するときは、2D Math Input 形式から Maple Input 形式に変更して入力し
てください。
このコードは Maple 上でも動作を確認することができます。サンプルデータ d を用意して、実
際に計算してみます。
d の要素は 0~1 までの正の実数による乱数です。ここでは、1番目から40番目までのデータ
d の要素の和を計算しています。自作プロシージャの func の結果と、Maple の組込関数 add
による結果が等しいので、このコードが正しく機能していることが確認できます。
さて、実際に func のコードを他言語へ変換してみます。
- 64 -
まずは、C 言語の形式へ変換してみます。
同様に、Java にも変換してみます。
関数・プロシージャの場合も output オプションおよび optimize オプションを指定すること
が可能です。
なお、Maple 10 以降では Compiler パッケージを用いて、Maple 上で定義した自作関数を外部
実行ライブラリ化し、演算を高速に行うことが可能です。
Compiler パッケージによる演算速度の違いを見るために、乱数データをもう少し大きいサイズ
で再度生成します。以下では、10 万個の乱数データの配列を用意しています。
Maple のコードで定義した func を用いて計算し、その時間を計測してみます。
- 65 -
func のコードを Compiler パッケージの Compile 関数を使って C 言語に変換し、さらに
Watcom コンパイラを使って実行ライブラリ化します。コンパイル&ライブラリ化した結果の
関数を cpfunc として割り当てておきます。
同様に計算時間を計測してみます。
Maple 上で定義した func の計算速度よりも非常に高速になっていることがわかります。
【注意】
コード変換やCompilerパッケージでMaple上のコードを変換する場合、Mapleが組込み関数と
して用意しているものについては変換することができません。例えば、記号的な微分・積分演
算、微分方程式解法などの組込みコマンドを用いたユーザ定義関数を他言語へ変換することは
できません。
- 66 -
8. 読みやすいワークシートの作成方法
Maple のワークシートは、計算やグラフ作成を行うためのコマンドを記載するだけではなく、
テーブルなどを用いてレイアウト設定を行いテキストによる説明などを付加して文書やレポー
トとしてまとめることも可能です。
ここでは、Maple のワークシートインターフェイスが提供する機能を用いて、読みやすいワー
クシート作成方法の基本について説明します。
- 67 -
8-1 テキスト領域に説明文を記述する
いま以下のスクリーンショットにあるように、ある実行グループに計算コマンドが記載されて
いるとします。int コマンドは積分を計算するためのものです。
ここでは、int コマンドで計算しているグループの上に、別のグループを挿入し、テキストに
よる計算の説明を付加してみます。
テキストを挿入するための手順は以下の通りです。
①
カーソルを int コマンドのあるグループに持っていきます。
②
Ctrl + K キーを押すか、またはメニューの[挿入]から[実行グループ]を選択し、
「カ
ーソルの前」を選択します。
- 68 -
③
すると、int コマンドを記載したグループの前に新しい実行グループが挿入され
ます。
挿入された実行グループ
④
Ctrl + T キーを押して実行グループをテキスト領域に変更します。以下のように
プロンプト(「>)記号」が表示されなくなります。
⑤
テキスト領域となったので、日本語や英語などでコマンド・計算の説明文を記述
します。
以上のように、テキストによる説明文を計算している前後に用意することで第 3 者がワークシ
ートを読んでも理解しやすくなります。
- 69 -
8-2 テーブルを用いてレイアウトを行う
Maple ワークシートにはテーブルを挿入することが可能です。テーブルを用いることで、左右
に計算コマンドとグラフを並列して表記するということが可能です。
ワークシートにテーブルを挿入するには、[挿入]メニューから[テーブル]を選択します。「テー
ブルの挿入」ダイアログが表示されるので、必要な行数・列数を設定し、どの位置に挿入する
かを選択して[OK]を押します。
テーブルを挿入したワークシート
- 70 -
テーブルの中で Ctrl+K キーを押すと、実行グループが挿入されます。例えば、以下のスクリ
ーンショットのように、左側に微分方程式の求解計算を記載し、右側にグラフを用意する、と
いった構成(レイアウト)を作ることができます。
テーブル内でコマンドを実行
テーブル内の任意の場所でマウス右ボタンをクリックすると、コンテキストメニューの中に[テ
ーブル]という項目が表示されます。そこから、テーブルのプロパティを変更することが可能で
す。
- 71 -
プロパティでは、テーブルの枠(罫線)の有無やその線種、テーブル内のコマンドの実行順序
などの設定を変更することが可能です。
例えば、外の罫線・内の罫線の表示を「無し」にすると、以下のような形で表示されます。
- 72 -
8-3 ハイパーリンクや注釈を付加する
Maple では、ワークシート上の数式やテキスト文字に、ハイパーリンクや注釈を付加すること
ができます。ハイパーリンクは、インターネットのリンクと同じで、ハイパーリンク設定され
た文字列をクリックすることで、別のワークシートを参照したり、特定のウェブサイトを参照
することができます。注釈は文字列や数式に付加的な説明を記載するためのもので、注釈の設
定された文字列にマウスを近づけると付加説明が表示されます。
①ハイパーリンクの設定方法
まず、次のようなワークシートがあったとします。ここでは説明文章中の「solve コマンド」
の文字列に、solve コマンドのヘルプページへのハイパーリンクを設定してみます。
「solve コマンド」の文字列部分をドラッグして選択状態にします。
- 73 -
[フォーマット]メニューから[ハイパーリンク]を選択します。
ダイアログでリンク先を設定します。[タイプ]を「ヘルプトピック」に変更して、[ターゲット]
部分に solve と記載します。設定が終わったら[OK]を押します。
- 74 -
ハイパーリンクの設定が終わると、リンクの設定された文字列部分の色が変更され下線も付加
してリンク状態であることがわかります。
ハイパーリンク設定された文字列
ハイパーリンクをマウスでクリックすると solve コマンドのヘルプページが表示されます。
②注釈の設定方法
ここでは「方程式」という言葉の意味を注釈として設定します。まず、
「方程式」の文字列をマ
ウスでドラッグして選択状態にします。
[フォーマット]メニューを選択して[注釈の選択]を選択します。
注釈の記述領域が表示されます。
- 75 -
注釈内容を記載します。
注釈を記入し終わったら、適当な位置でマウスクリックします。注釈領域が自動的にテキスト
幅に変更されます。また、注釈が付加された文字列がマスクされ注釈が設定されていることが
わかる状態になります。
- 76 -
マウスのカーソルを近づけると注釈で設定された文言が表示されます。
ハイパーリンクや注釈を用いると、Maple ワークシートで計算されている内容の参照元の情報
や細かい用語の説明などを含んだ文書として体裁を整えることができるようになります。実際、
Maple の各コマンドのヘルプドキュメントや eBook と呼ばれる Maple ワークシートで記載さ
れた電子書籍などでもハイパーリンクや注釈を用いています。
MapleワークシートによるeBookの詳細については、Maplesoftのウェブサイトをご覧ください。
- 77 -
9. 対話的な計算アプリケーションの作成
Maple のワークシートには GUI コンポーネント(部品)を配置することが可能です。GUI コ
ンポーネントを用いると、Excel や Visual Basic などで作成するよりも非常に手軽に、そして
簡単に汎用的な技術計算アプリケーションを開発することが可能です。
この章では、GUI コンポーネントの基本的な扱い方と関連するプログラミングに関して説明し
ます。
9-1 GUI コンポーネントとは?
GUI コンポーネントとは、テキストフィールドやスライダー、プロット領域、コンボボックス
など、一般的な対話型部品のことを指します。これらのコンポーネントは、Maple では左側の
パレット群にある『コンポーネント』パレットから選択できます。
Maple 17 で利用可能なコンポーネントパレット
個々のコンポーネントのサイズ(幅、高さ)は、コンポーネントを実際にワークシートに配置
した後で設定・変更することが可能です。同様に、コンポーネント動作に対するイベント(ボ
タン押下、スライダー変更等の動作)時のコードの記述も、コンポーネントを実際に配置して
から記述します。
- 78 -
9-2 GUI コンポーネントの配置
コンポーネントを実際に配置する手順を説明します。8章で説明されている「テーブル」を用
いることで見た目にもわかりやすい GUI コンポーネントの配置が行えます。
ここでは、次のスクリーンショットにあるような簡単な波形シミュレーションのための対話的
アプリケーションを作成してみます。
GUI コンポーネントを利用した簡単な計算アプリケーション
- 79 -
手順1:
空のワークシートをドキュメントモードで用意します。[ファイル]メニューから[新規作成...]を
ポイントして、[ドキュメントモード]を選択してください。
手順2:
[挿入]メニューから[テーブル]を選択して、テーブルの挿入を行います。
[挿入]メニューから[テーブル]を選
択
[テーブルの挿入]ダイアログが表示
されるので、3行2列のテーブルを
挿入します。(位置は「ブロックの
後」です)
- 80 -
テーブルが挿入されたワークシート
手順3:
アプリケーションのタイトルとプロットの領域を用意するため、1行目と2行目のそれぞれの
列セルを結合します。
1行目の2つの列セルをマウスでドラッグして選択し、
マウス右ボタンをクリックし[テーブル]から[セルの結合]メニューを選択します。
同様に2行目の列セルについても結合します。
上記のようなテーブルが完成します。
- 81 -
1行目のセルにテキストで「波形シミュレーション」と入力します。
テキストモードにするには、Ctrl + T を押してから入力してください。
入力したテキストのスタイルを「Title」に変更します。
手順4:
GUI コンポーネントを配置していきます。このアプリケーションでは、プロット領域1個、お
よび2個のスライダーを配置します。
2行目のセルにプロット領域を配置します。
コンポーネントパレットから[プロット]のコ
ンポーネントをドラッグして2行目に配置
してください。
- 82 -
プロット領域を配置したらセンタリング(中央揃え)しておきます。
同様の手順でスライダーを3行目の2つの列セルにそれぞれ配置します。
スライダーについても同様にセンタリング(中央揃え)しておきましょう。
- 83 -
プロット領域上でマウス右ボタンをクリックしてメニューを表示し、[コンポーネントプロパテ
ィ]を選択すると、Plot コンポーネントプロパティダイアログが表示されます。
幅:500、高さ:300 にそれぞれ変更しておきます。
なお、コンポーネントのプロパティダイアログを表示した際に、必ず「名前」プロパティ値が
設定されていることを確認してください。
「名前」プロパティは、各コンポーネントへの値の設
定・参照の際に使用されるオブジェクト名となります。
(各コンポーネントの名前は変更するこ
とが可能です)
ここで配置した各コンポーネントは、標準で以下のような名前が設定されています。
(コンポー
ネント名に付属する番号の数値は、コンポーネントの個数や配置回数などに応じて適宜変更さ
れています)
オブジェクト
名前
Plot0
プロット領域
Slider0
スライダー(左側)
Slider1
スライダー(右側)
- 84 -
9-3 GUI コンポーネント動作時のコードの記述
コンポーネントを配置したので、その動作を Maple のコードとして記述していきます。ここで
は、スライダー値が変更されたときに、その値に応じた波形をプロットするというものです。
手順1:
2つのスライダーの値が変更されたときに実行するコードを記述します。
左側のスライダー(Slider0)の上でマウ
ス右ボタンをクリックして、[値が変わっ
た時の動作の編集]メニューを選択しま
す。
コードを記述するためのダイアログが表
示されます。
ここにコードを記述します。コードは、
すべての Maple プログラムの記述方法が
可能です。
# の行は、すべてコメントです。空白行部分に以下のコードを記載してください;
a := Do( %Slider0/100 );
b := Do( %Slider1/100 );
Do( %Plot0 = plot(sin(a*x)+cos(b*x^2),x=0..10,y=-3..3));
コード内で、オブジェクト名(Slider0、Plot0 など)を参照するときは、プレフィックス(接
頭文字)に%を使用します。たとえば、Slider1 を参照する場合には、%Slider1 とします。
- 85 -
値が変わったときのコードを記載
このコードで行っている処理手順は以下の通りです。
① Slider0 の値を取得し、100 で割ったもの(0~1 にスケールするため)を変数 a に割当
② 同様に Slider1 についても値を取得し、100 で除算したものを変数 b に割当
③ 得られた a と b の値から sin(a*x)+cos(b*x^2)のプロットを作成し Plot0 にセット
上記のコードで使用している Do コマンドは、DocumentTools パッケージで用意されているコ
マンドで、コンポーネントへの値のセット(設定)または取得を行います。
・ コンポーネントから値を取得し変数に割り当てる場合
foo := Do(%Slider0);
・ コンポーネントにセットする場合
Do(%Plot0=plot(sin(x),x=-3..3);
Do(%TextArea0=”テスト文字列”);
コードを記述したら[OK]ボタンを押して、ダイアログを閉じてください。
左側のスライダーへのコードの記述が終わったら、同様に右側のスライダー(Slider1)にも同
様のコードを記述してください。
- 86 -
設定したコードに誤りがある場合、コー
ドエディタの下のウインドウにエラーメ
ッセージが表示されます。
この例は 17 行目の = を := としたため
にエラーメッセージが表示されていま
す。
- 87 -
手順2:
スライダーのコンポーネントプロパティを変更して、スライダーの動作設定を行います。
スライダーの上でマウス右ボタンをクリ
ックして、コンポーネントプロパティを
表示します。
[目盛りの値を表示]と[ドラッグ時に値を
自動更新]にチェックをつけて[OK]ボタ
ンを押します。
同様の設定を右側のスライダーである
Slider1 にも設定します。
以上の設定を行うと、スライダー値が変
更されたと同時に処理が実行されます。
- 88 -
9-4 サンプルによるテスト
これまでの手順で作成したアプリケーションを実際に動作させてみましょう。左右双方のスラ
イダー値をそれぞれ動かしてみてください。以下のスクリーンショットのように波形が逐次プ
ロット領域に描画されれば問題ありません。
スライダーを動かして波形をリアルタイムにプロット
もしも、スライダーを動作させたときにエラーメッセージのダイアログが表示された場合は、
以下の点について確認してください;
① コンポーネントのオブジェクト名とコードで記載したオブジェクト名に間違いがないか?
(スライダーのオブジェクトの名前は Slider2 となっているのに、コード中では Slider1
と記載している場合等)
② コードの文中で、「;」(セミコロン)などの記載が抜けていないか?
③ コードの文中で、オブジェクト名を参照するときのプレフィックス(接頭文字)である%
が抜けていないか?(Slider1 を参照する場合は%Slider1 と記述しなければなりません)
この例題の動作が問題ないことを確認したら、適当なファイル名で保存しておきましょう。
- 89 -
9-5 効率的なコードの記述とデバッグ
ここまでのコンポーネントのコードは、同一のコードをすべてのコンポーネント自体(本例で
はすべてのスライダー)に記述してきました。しかし、これではひとつのコードにバグ(不具
合)が発見された場合のメンテナンスが非効率的です。
そこで、動作時のコードは別途プロシージャとして定義し、コンポーネントにはコードをひと
つずつ直接記載するのではなく別途定義したプロシージャ名を記載するほうがデバッグもし
やすく、またメンテナンスも容易になります。
ここでは、先に作成したスライダーのコードを別途プロシージャとして定義し、コンポーネン
トのコードにはプロシージャにするための方法を説明します。また、ワークシートが開かれた
際に、コンポーネントの動作を定義したプロシージャを自動的に実行する方法についても記載
しています。
手順1:
プロシージャを定義するためのセクション(章)を用意します。
(なお、必ずしもセクションが
必要という訳ではありませんが、見やすいワークシートの構成という点でプロシージャを定義
するセクションを用意することが推奨されます)
波形シミュレーションのワーク
シートで、ファイルの先頭また
は最後部部分にマウスのカーソ
ルを移動します。
移動したら、[挿入]メニューから
[セクション]を選択して新規の
セクションを用意します。
ファイル先頭にセクションを入れた場合
ファイル最後部にセクションを入れた場合
- 90 -
ここでは、セクション名は「コード」としてお
きます。
セクションの中に、プロシージャを定義するた
めのグループを用意します。
セクション名にマウスカーソルがある場合は、
そこで Ctrl + J を押してください。
セクション内部にカーソルがある場合は、Ctrl
+ K キーを押してください。左図のように「>」
プロンプトの表示されたグループが用意され
ます。
プロシージャを記述する前に、入力がテキスト
モードに変更します。Ctrl + M を押すか、また
は[挿入]メニューから[テキスト入力]を選択し
てください。
マウスカーソルが斜体から垂直になっていれ
ば、テキスト入力モードになっています。
手順2:
スライダーの動作のためのコードをプロシージャとして定義します。
用意したテキスト入力グループの箇所に以下のようにしてコードを記述します。ここでのプロ
シージャ名は setValues としています。
コードを記載したら、実行しておいてください。
プロシージャ内部のコードは、スライダーで定義したものとほとんど同一です。プロシージャ
化に際しての違いは以下の通りです;
①
DocumentTools パッケージの宣言:
uses 句を先頭で宣言し、DocumentTools パッケージを用いている。
②
a, b, gr を局所変数として宣言している。
- 91 -
手順3:
スライダーの既存のコードを修正して、setValues 関数をコールするようにします。
左右双方のスライダーのコンポーネントプロパティから[値が変わったときの動作]のコードを
編集して以下のようにしてください。
コードを記載したら[OK]ボタンを押してダイアログを閉じます。
ワークシートに戻ったら、スライダーを動かして動作を確認してください。エラーメッセージ
が表示される場合は、前節同様にコードの記述やコンポーネントの名前が間違えていないか確
認してください。
なお、プロシージャを定義しても実行(評価)していない場合は動作しない可能性もあります。
必ずプロシージャ部分のグループを実行しておくようにしてください。
- 92 -
手順4:
上記までは、一度プロシージャ部分のグループを実行しているために動作が可能となります。
そこで、ワークシートが開かれた際には自動的にプロシージャ部分のグループ(またはブロッ
ク)を実行するよう設定する必要があります。
まず、[表示]メニューから[マーカー]を選択して、ドキュメントブロックの単位マーカーを表示
できるようにしてください。
マーカーは、
ワークシートの構成単位であるド
キュメントブロックまたはグループの範囲や
属性設定の有無を表示するためのものです。
マーカー表示前は、ワークシートの左端
は境界のみとなっています。
マーカー表示後、ワークシートとパレッ
トの境界部分に上下の三角形が表示さ
れます。
定義したプロシージャの左横のマーカー領
域でマウスの右ボタンをクリックします。
すると、[自動実行]に関するメニューが表示
されますので、[設定]を選択します。
自動実行を設定すると、マーカー領域に
左図のようなマークが付きます。
自動実行設定されたグループまたはドキ
ュメントブロックはファイルが開かれた
際に自動的・優先的に実行・評価されま
す。
- 93 -
手順5:
設定したワークシートを保存して、一旦閉じてください。その後、改めて保存したワークシー
トを開きます。
[はい]を選択すると、さきほど設定したプロシージャ部分のグループが実行されます。
上記のダイアログが閉じたら、さっそくスライダーを動かして動作を確認してみてください。
(なお、必要性に応じて、コードのセクションは閉じておいてください)
Maple では、このような手順で独自の GUI アプリケーションを作成することが可能です。GUI
の動作のためのコードは自動実行が設定されているので、このワークシートを他の Maple ユー
ザが別の PC 上で実行しても、同様の処理やシミュレーションが手軽に行えます。
また、オプション製品である『MapleNET』を用いると、作成したワークシートを自動的にウ
ェブブラウザ上で実行できるウェブアプリケーションとして利用することも可能です。詳しく
は、サイバネットシステムMapleウェブサイトに用意されている『MapleNETによるウェブ計
算環境の構築』ガイドを参照してください。
- 94 -
ifactor .....................................................- 15 ImportMatrix .........................................- 59 int ......................................- 38 -, - 69 -, - 70 is............................................................- 45 ithprime..................................................- 44 -
索引
%............................................................. - 86 *.. ....................................................- 9 -, - 16 ^................................................................ - 9 ;… ............................................................. - 9 ^................................................................ - 9 /… ............................................................. - 9 ;… ........................................................... - 13 ^.............................................................. - 16 :=............................................................. - 18 ?... ........................................................... - 20 ->.. .......................................................... - 40 ,… ........................................................... - 43 [].. ........................................................... - 43 {}.. ........................................................... - 44 :… ........................................................... - 13 -
L
LeastSquares .........................................- 60 listplot ....................................................- 63 -
M
Matrix................................- 44 -, - 45 -, - 59 -
O
odetest ....................................................- 52 -
P
pdsolve...............................- 55 -, - 56 -, - 57 plot.. - 17 -, - 22 -, - 24 -, - 26 -, - 37 -, - 57 -, 86 -, - 87 plot3d. - 17 -, - 22 -, - 24 -, - 26 -, - 57 -, - 58 proc .........................................................- 41 -
A
add...........................- 42 -, - 45 -, - 62 -, - 65 -
B
build ....................................................... - 55 -
R
C
cos.................................................- 86 -, - 87 -
restart.......................................... - 19 -, - 20 return ........................................ - 41 -, - 46 -
D
S
diff ................................................- 34 -, - 51 divisors................................................... - 45 Do .................................................- 86 -, - 87 dsolve ........... - 52 -, - 53 -, - 54 -, - 55 -, - 56 eval.................................... - 19 -, - 36 -, - 38 -
seq................................................ - 42 -, - 44 simplify...................................................- 39 sin ................................................ - 86 -, - 87 solve- 5 -, - 9 -, - 16 -, - 18 -, - 20 -, - 22 -, - 35
-, - 36 -, - 48 -, - 74 -, - 75 -, - 76 sqrt .........................................................- 37 subs.........................................................- 19 -
F
T
for ......................................................... - 41 -
Tangent ..................................................- 35 -
I
W
if ........................................................... - 42 -
with.............................................. - 35 -, - 60 -
E
- 95 -
【付録1 Maple でよく使われる記号】
記号
:=
主な機能
入力例
割り当て
a := 1
:
コマンド終端(結果非表示)
;
コマンド終端(結果表示)
=
等号
,
要素区切り
“ “
文字列の指定
a..b
..
範囲指定
1..-1
-1 : 最後の要素
“ “
文字列の指定
->
関数割り当て
#
コメント行
/
割り算
+
足し算
*
掛け算
.
内積
^
乗数
!
階乗
_
添え字入力
>
不等号
<
不等号
>=
不等号
<=
不等号
<>
不等号
( )
コマンド/数学関数などの内容を指定
{ }
集合を定義
[ ]
リストを定義
< | >
f := x -> sin(x)
ベクトル/行列の定義
%
最後の計算結果
$
式列の作成
expand( )
sin( )
<<a,b>|<c,d>>
x$3
x, x, x
- 96 -
【付録2 Maple でよく使われるコマンド】
コマンド
機能
coeff
係数の取り出し
combine
結合
convert
式の変形
Correlation
相関関数
degree
多項式の次数
Determinant
行列式
diff
微分
dsolve
常微分方程式の求解(厳密解と数値解)
Eigenvalues
固有値
eval
代数的に評価(数値化なし)
evalf
数値的に評価
evalf/Int
数値積分
expand
展開
ExportMatrix
データファイルの出力
factor
因数分解
Fit
最小二乗法近似
for
反復処理
fsolve
数値解の計算
GaussianElimination
ガウスの消去法
GenerateMatrix
行列の作成
ImportMatrix
データファイルの入力
int
積分
limit
極限
- 97 -
コマンド
機能
LUDecomposition
LU 分解
Matrix
行列の定義
MatrixInverse
逆行列
Mean
平均
MovingAverage
移動平均
odeplot
解関数のプロット
pdsolve
偏微分方程式の求解(厳密解と数値解)
piecewise
区分関数
plot
2D プロット
plot3d
3D プロット
proc
プロシージャの定義
restart
カーネルの初期化
seq
式列の生成
series
ベキ級数展開
simplify
式の簡単化
SingularValues
特異値
solve
代数方程式の求解
Spline
スプライン補間
subs
代入
Variance
分散
Vector
ベクトルの定義
with
パッケージの読込み
- 98 -
数式処理ソフトウェア『Maple』ビギナーズガイド
作成者: サイバネットシステム株式会社
本ドキュメントの著作権はサイバネットシステム株式会社が保有します。本ドキュメントを著作権者の許可なく複
製・改訂・譲渡することは著作権法によって禁じられます。
Copyright © 2013 Cybernet Systems Co., Ltd.
- 99 -