コンピュータ入門U 第6回

[HOME] [第1回] [第2回] [第3回-1] [第3回-2] [第4回] [第5回] [第6回] [第7回] [第8回] [第9回] [第10回] [第11回] [第12回]

Maple とは

Maple(メイプル)はコンピュータ代数学の最先端である カナダの Waterloo 大学の研究成果を元に開発された数式処理システムです。 数式処理をはじめ、数値計算、グラフィックとアニメーション、 プログラミングなどが出来ます。
数式処理では、具体的な値のわからない「変数」を含む式を 扱うことができ、解析的に解を求めることができます。

『数式処理って?』と興味を持った学生はインターネットなどで調べてみましょう。

実習
YAHOO (http://www.yahoo.co.jp) や Google (http://www.google.co.jp/) などに代表される検索エンジンを活用して、数式処理に関するページを見てみましょう。

参考文献として以下を上げておきます。興味があれば各人で購入してみてください。


  1. Maple の起動と終了
    1. 起動

      [スタ−ト] → [すべてのプログラム] → [Maple9.5] → [Maple9.5]
      と選択していくと、Maple が起動し Maple ワークシートと呼ばれる画面が立ち上がります。

    2. 実行

      Maple の入出力はワークシート上で実行します。ワークシートに

      2*3*4;

      と入力して、 Enter キーを押してみてください。
      入力した式を評価(実行)するには、入力式の後に ; (セミコロン) を つけて Enter キーを押すことで評価できます。

      > 2*3*4;

      24

      メニューバーの [ヘルプ] → [新ユーザ] → [基本的な使い方] 表示して基本的な使い方を見てみましょう。
      次に、[ヘルプ] → [新ユーザ] → [クイックツアー] を表示してください。これをもとに Maple で出来ることの概要を説明していきます。

    3. 終了

      Maple 終了するには、メニューバーの [ファイル] → [終了] (または Alt + F4 )とします。
      ワークシートの実行結果をファイルに保存する場合にはメニューバーの [ファイル] → [保存] (または Alt + s ) として保存場所、ファイル名を入力します。
      Maple のファイルには自動的に拡張子 ***.mw 付きます。

  2. 数値計算

    Maple は有理数では厳密な計算を行います。 つまり 1+1/2 の計算結果は 3/2 であり 1.5 とは返してきません。 有理数や任意の数値表現が出来るのが数式処理の特徴です。

    演算記号
    加法 + 減法 - 乗法 * 除法 / べき乗 ^ 階乗 !

    例えば、数値計算やシンボルが入った計算

    は Maple では次のように入力します。

    (1.5+3.2)*4-5.2
    (3*x+1)/(4*x^2)
    3*x/(4*x^2)

    丸括弧でくくられている部分は通常の数学記号と同様に他よりも先に評価されます。
    また のような場合には、3*x+1 とする。
    以下では Maple による評価の例を挙げます。 評価をする際セミコロン( ; )を付け忘れないにしましょう。

    > (1.5+3.2)*4-5.2;

    13.6

    > (3*x+1)/(4*x^2);

    1/4*(3*x+1)/x^2

    > 3*x/(4*x^2);

    3/4/x

    > 2^10;

    1024

    > 12!;

    479001600


  3. 数の表記

    2進数(例えば (10101)A) を10進数に変換してみましょう。
    convert(10101,decimal,2); (または convert(10101,decimal,binary); ) と入力してください。

    > convert(10101,decimal,2);

    21

    > convert(10101,decimal,binary);

    21

    また10進数 21 を 2 進数に変換してみましょう。
    convert(21,binary); と入力します。

    > convert(21,binary);

    10101

    10進数 n を2進数へ変換 convert(n,binary);
    10進数 n を8進数へ変換 convert(n,octal);
    10進数 n を16進数へ変換 convert(n,hexadecimal);
    または convert(n,hex);
    基底 10 の数 n を基底 beta に変換 convert(n,base,bata);
    (数字は基底 beta の各桁のリストで返されます。)

    チャレンジ 次を計算してみましょう。


  4. シンボル計算

    シンボル を使った式 の入力は 3*x/(4*x^2) でした。
    ここではシンボル計算(文字式の計算)を取り上げます。シンボル(文字)をもつ式を入力しましょう。

    > 3*x-4*y+8*x-(5*y+9*x-y);

    2*x-8*y

    シンボルはスペースを含まない英数文字列で何文字でも良い。
    xy は1つのシンボルであり、 x y は x と y の積をあらわす。また x2 は1つのシンボルであり、 2x は x の2倍を表すことに注意しましょう。

  5. 代入演算子と変換規則

    シンボル計算(または文字式の計算) は文字式のまま計算することが特徴ですが、 変数に具体的な数値や別な文字式を代入して計算することがあります。 この様な場合にMaple では「代入演算子(/.)」と「変換規則(->)」を用います。 1 + x2 において、x を 5 として計算する場合、x をy - 1 として計算する場合をあげておきましょう。

    [Graphics:Images/index_gr_1.gif]
    [Graphics:Images/index_gr_2.gif]
    [Graphics:Images/index_gr_3.gif]
    [Graphics:Images/index_gr_4.gif]
    [Graphics:Images/index_gr_5.gif]
  6. 値の割り当て

    代入演算子を使って特定の文字式に変換規則を適用する方法を述べましたが、 特定のシンボル(文字) x に数値を「割り当てる」こともできます。 この場合には= を使って変数x に数値を割り当てます。 値の割り当ては大域的な約束と認識しますので、不要になったらClear 関数を使って, 割り当てを解除します。



    チャレンジ 次を実行してみましょう。
    [Graphics:Images/index_gr_1.gif]
    [Graphics:Images/index_gr_2.gif]
    [Graphics:Images/index_gr_3.gif]
    [Graphics:Images/index_gr_4.gif]
    [Graphics:Images/index_gr_5.gif]
    [Graphics:Images/index_gr_6.gif]
    [Graphics:Images/index_gr_7.gif]
    [Graphics:Images/index_gr_8.gif]
    [Graphics:Images/index_gr_9.gif]
    [Graphics:Images/index_gr_10.gif]
    [Graphics:Images/index_gr_11.gif]

    変数は使い終えたら Clear関数 を使って値を消去する習慣をつけておくと良いでしょう。
    Clear[(変数)] または (変数)=.

  7. 代入計算

    シンボル(文字)に値を代入することも出来ます。

    [Graphics:Images/index_gr_1.gif]
    [Graphics:Images/index_gr_2.gif]
    [Graphics:Images/index_gr_3.gif]
    [Graphics:Images/index_gr_4.gif]
    [Graphics:Images/index_gr_5.gif]
    [Graphics:Images/index_gr_6.gif]
    [Graphics:Images/index_gr_7.gif]
    [Graphics:Images/index_gr_8.gif]
    [Graphics:Images/index_gr_9.gif]

課題 m-1
7進数の『九九の表』(積の演算表)を作成しましょう。
作成したノートブックを整理して、ファイル名 math-1 としてフォルダ (nyumon2) に保存しましょう。

次を実行してみましょう。

Timing[FactorInteger[2^105-1]]

FactorInteger[***] は *** を素因数分解する関数です。また Timing[###] は ### を処理するのにかかった時間を表示させる関数です。
この結果は次のように出力されます。

{$$$ Second, {7,2},{31,1},{71,1},{127,1},{151,1},{337,1},{29191,1},{106681,1},{122921,1},{152041,1}}}

※ $$$ の部分はかかった時間が表示されます。パソコンの状態や処理速度によって変化します。

この問題は 『2105-1 の素因数分解をし、それにかかった時間を表示せよ』というもので出力結果の意味は

72・31・71・127・151・337・29191・106681・122921・152041 と出力するのに $$$ 秒かかりました

ということです。

課題 m-2
  • 整数 524287 の素因数分解を求めましょう。
  • 整数 2128+1の素因数分解を求めましょう。
  • 整数 264+1の素因数分解を求めましょう。
  • 整数 10 ! の素因数分解を求めましょう。
  • フェルマー数 について n=1,2,3,4 の場合、それぞれ素数か否か判定しなさい。
課題の結果を整理して、ファイル名 math-2 としてフォルダ (nyumon2) に保存しましょう。

提出課題 EX-04.11.08
  • 課題m-1 で作成した7進数の『九九の表』(積の演算表)を MicrosoftExcelなどを用いて表を作成し提出してください(手書きでも構いません)。
    提出期日:11月29日 9時30分〜9時45分 まで

  • 課題m-2 でもとめた素因数分解の結果をまとめ印刷して提出してください。(学籍番号・氏名忘れずに)
    提出期日:11月15日 9時30分〜9時45分 まで

注意 この授業では課題の提出を求められた場合、指定された日時以外には受け取りません。

HOME