2019-12-23

計算機数学(大学院)第9回

今回は、前半で、モジュラー法の一つとして、中国剰余定理を用いた1変数多項式のGCD計算のアルゴリズムについて説明しました。後半では、1変数多項式の無平方分解の話題に入り、無平方分解に用いる性質を説明しました。

次回は、今回の説明を踏まえ、無平方分解のアルゴリズムを紹介します。

計算機数学II (2019) 第7回:常微分方程式 (1)

今回と次回では、常微分方程式の数値解法を扱います。

今回は、常微分方程式の種類と問題例を紹介したのち、微分方程式の差分化による差分方程式の導出について説明しました。

次回は、差分法のアルゴリズムを紹介し、代表的な問題に対する差分法の計算について説明します。

2019-12-09

計算機数学(大学院)第8回

今回は、モジュラー法の中から、Hensel構成による1変数多項式のGCDの計算を行うアルゴリズムを紹介しました。

次回は中国剰余定理に基づく1変数多項式のGCDの計算法を紹介し、無平方分解の話題に進みます。

2019-12-02

計算機数学(大学院)第7回

今回からは、1変数多項式の最大公約子 (GCD) 計算のうち、モジュラー法の話題を紹介します。今回は、モジュラー法の背景と、モジュラー法を用いる際に必要となる、多項式の約元や公約式のノルムの見積もりについて説明したのち、Hensel構成の基礎となるHenselの補題の証明を行いました。

次回は、Hensel構成によるGCD計算のアルゴリズムの説明から行う予定です。

計算機数学II (2019) 第6回:数値積分

今回は、1変数関数の定積分の計算法として、台形則、シンプソン則およびその一般化であるロンバーグ積分法を紹介しました。

次回からは常微分方程式の解法について説明します。

2019-11-18

計算機数学(大学院)第6回

今回は、前回までで証明した「部分終結式の基本定理」に基づき、多項式剰余列の係数膨張を抑える「縮小PRSアルゴリズム」および「部分終結式PRSアルゴリズム」の紹介を行いました。

次回からは、モジュラー法による多項式の最大公約子 (GCD) 計算の効率化手法の紹介に入ります。

計算機数学II (2019) 第5回:曲線の推定 (2)

今回は、前回のラグランジュ補間のアルゴリズムに続き、ラグランジュ補間の誤差評価を行った後で、スプライン補間と最小二乗法について説明しました。

次回は数値積分の説明を行う予定です。

2019-11-11

計算機数学(大学院)第5回

今回は、前回の内容を踏まえ、2つの補題の証明をした後で「部分終結式の基本定理」の証明を行いました。

次回は、部分終結式の基本定理に基づいて多項式剰余列の係数膨張を抑えるアルゴリズムの紹介を行う予定です。

計算機数学II (2019) 第4回:方程式の根、曲線の推定 (1)

今回は、前半で、1変数方程式の近似解法として「2分法」および「ニュートン法」を紹介しました。後半では、曲線の推定方法の一つとして「ラグランジュの補間法」を紹介しました。

次回は、ラグランジュの補間法の誤差評価を説明し、曲線の推定の後半として、スプライン補間法と、最小二乗法について説明します。

2019-11-06

計算機数学(大学院)第4回

今回の前半では、前回の話の一般化として、多項式剰余列の各要素の係数を、最初に与えられた多項式の係数を成分にもつ行列式で表す方法について紹介し、部分終結式の導入を行いました。後半では、部分終結式を1つの行列式で表す表現を与え、この授業の目標の一つである「部分終結式の基本定理」に至る補題の証明でよく用いられる、部分終結式を表す行列式の行変形について議論しました。

次回は、「部分終結式の基本定理」の証明の準備として、補題の証明に進む予定です。

2019-10-28

計算機数学(大学院)第3回

今回は、まず1変数多項式の多項式剰余列と拡張Euclid互除法を導入しました。次に、部分終結式の理論の導入として、1回の擬除算における擬剰余の係数を、入力多項式の係数を成分となる行列式で表すことで、1変数多項式の除算を行列の行消去で表せることについて説明し、終結式とGCD、多項式剰余列の関連性について説明しました。

次回は、今回の考察をさらに多項式剰余列に進める予定です。

計算機数学II (2019) 第3回:連立1次方程式 (2)

今回は、連立1次方程式の解法から「反復法」と呼ばれる方法、具体的にはヤコビ法、ガウス・ザイデル法、SOR法を紹介しました。

連立1次方程式の説明は今回で終わりです。次回は(非線形)方程式の数値解法と、関数補間の話題に進みます。

2019-10-21

計算機数学(大学院)第2回

今回は、1変数多項式の加減乗除のアルゴリズムのその計算量、1変数多項式の最大公約子 (GCD)、最小公倍子 (LCM) について説明しました。

次回は、拡張Euclid互除法から部分終結式の導入に進む予定です。

計算機数学II (2019) 第2回:連立1次方程式 (1)

今回と次回の授業では、連立1次方程式の解法を紹介します。

今回は、「直接法」と呼ばれる解法から、おなじみガウスの消去法とLU分解による解法を紹介しました。普通、数学におけるガウスの消去法は行簡約から簡約階段行列の計算でおしまいですが、今回は、枢軸選択(ピボッティング)により、アルゴリズムを正しく動かす、もしくは数値解の精度を向上させる部分も説明しました。

次回は「反復法」と呼ばれる解法を紹介します。

2019-10-18

計算機数学(大学院)第1回

今学期、大学院の授業を担当します。昨年まで「数理科学II」という授業でしたが、今年は自分がかかわる授業科目の改編があり、「計算機数学」という授業科目名になりました。学類の授業科目名と紛らわしいので、記事のタイトルは「計算機数学(大学院)」とします。

この授業では、計算機代数に関するトピックを扱います。前半では1変数多項式の最大公約式(GCD)と部分終結式アルゴリズム、後半では多項式の因数分解を扱います。

今回は、授業のガイダンスを行い、多項式環の性質を復習し、1変数多項式の擬除算と、アルゴリズムの記法を紹介しました。次回は1変数多項式の四則演算のアルゴリズムに関する議論を行う予定です。

計算機数学II (2019) 第1回:数値計算へのガイド

本年度も秋学期に数学類開設授業科目「計算機数学II」を担当します。

この授業では、数値計算を扱います。今回は、数値計算の目的や用途、数値計算の流れ、浮動小数や誤差、計算量、その他の基礎事項を扱いました。

次回は連立1次方程式の解法を紹介します。

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) を用いた高速乗算法を紹介します。