2019-07-30

計算機演習 (2019-14) Scala (4)

今回はプログラミング言語Scalaの最終回で、再帰的定義によるリストの作成、リストの長さなどを求める(オブジェクト指向の)計算、リストに対するmap関数といった内容を取り上げました。

これでこの授業は一通り終了です。本年度は、数式処理システムMathematicaに加えて、バージョン管理システムGit、文書処理システムLaTeX、プログラミング言語Scalaを使い、数学と計算機が関わる内容をいくつかの角度から学びました。プログラミングは、最初は戸惑う人もいたようですが、回数を重ねるにつれて、何を考えればよいかがだんだんとつかめるようになってきていたように見えます。今後、数学を計算機の側面から眺めたり、触れたりする上での一助になることを望みます。

2019-07-29

計算機数学I (2019) 第15回:高速フーリエ変換 (FFT) を用いた1変数多項式の高速乗算法

今回は、この授業の最終回で、離散フーリエ変換 (Discrete Fourier Transform, DFT) と高速フーリエ変換 (Fast Fourier Transform, FFT) に基づく1変数多項式の高速乗算アルゴリズムを紹介しました。

以上で春学期の講義が一通り終わりました。今回は、整数や多項式を主な対象にした代数的なアルゴリズムの構成や計算量評価を中心に行いました。この授業が、構成的な数学を知る上での一助になることを望みます。

2019-07-23

計算機演習 (2019-13) Scala (3)

今回は、プログラミング言語Scalaの実習で、while式とfor式による繰り返し処理を行いました。題材は、while式にはEuclid互除法、for式には台形則による数値積分を取り上げました。

次回はこの授業の最終回ですが、リストの作り方と、リストを用いた計算を行います。

2019-07-22

計算機数学I (2019) 第14回:Karatsubaの高速乗算法

今回と次回は1変数多項式の高速乗算法の紹介で、今回は、Karatsuba(カラツバ)による1変数多項式の高速乗算法を紹介しました。

次回がこの講義の最後の授業ですが、次回は離散フーリエ変換と高速フーリエ変換 (FFT) を用いた高速乗算法を紹介します。

2019-07-19

計算機数学I (2019) 第13回:除算の計算量

前回の授業で、モジュラー算法の計算量を行った際、除算や中国剰余算法の計算はまだ出ていませんでした。そこで今回は、1変数多項式の除算や中国剰余算法の計算量の評価を行いました。

次回から1変数多項式の高速乗算法に関する説明に入ります。次回はカラツバ (Karatsuba) による高速乗算法の紹介を行います。

2019-07-16

計算機演習 (2019-12) Scala (2)

今回は、プログラミング言語Scalaの2回目で、条件分岐や関数の再帰的定義を、Euclid互除法を題材に行いました。

次回は、繰り返しの制御構造を中心に扱う予定です。

2019-07-09

計算機演習 (2019-11) Scala (1)

今回からこの授業の残りの期間は、プログラミング言語Scalaによるプログラミングを行います。今回は、REPL (Read-Eval-Print-Loop) を用いた数や文字列の演算、最初のいわゆる "Hello, world" プログラム、簡単な数値の演算のプログラムの作成を行いました。

次回は条件分岐と関数の再帰的定義を学びます。

2019-07-08

計算機数学I (2019) 第12回:行列積の法計算

今回は「モジュラー算法」と呼ばれる一連のアルゴリズムについて紹介しました。これは、多倍長整数でコストがかかる計算を、複数のより小さな整数を法とする剰余環に分けて計算し、複数の計算結果を中国剰余定理で合わせて整数上の計算結果を復元する方法です。

今回は、モジュラー算法の中から、行列積の計算を取り上げ、中国剰余算法を用いたアルゴリズムと、その計算量の見積もりを行いました。

次回は、今回の計算で出てきた、除算の計算量の見積もりと、中国剰余算法の計算量の見積もりを行います。

2019-07-02

計算機演習 (2019-10) LaTeX (3)

今回は、LaTeX と Beamer パッケージを用いたプレゼンテーションの作成に取り組みました。

題材は、前々回のレシピか前回の数学を使って書いてもらったので、内容選びには困らなかったと思いますが、TeXのコンパイル時にこれまであまり見たことがないエラーが続出し、サポートに追われました。それでも、ネタがあらかじめ揃っていたからか、授業直後にはそれなりの人数の人達がレポートを完成させていたようです(本当に完成しているかどうかは実際に評価しないとわかりませんが)。

次回からはプログラミング言語Scalaの実習に入ります。

2019-07-01

計算機数学I (2019) 第11回:有理数の再構成

今回は、拡張Euclid互除法の応用の一つとして、有理数の計算を剰余環に埋め込み、剰余環での計算結果から有理数の計算結果を再構成する方法を紹介しました。

次回は、中国剰余算法の応用から「行列積の法計算」を紹介します。