ラベル 計算機数学-2018 の投稿を表示しています。 すべての投稿を表示
ラベル 計算機数学-2018 の投稿を表示しています。 すべての投稿を表示

2019-01-28

計算機数学II (2018) 第11回:偏微分方程式 (2)

今回は、偏微分方程式の2回目ということで、拡散方程式の安定性評価から始め、波動方程式とラプラス方程式の差分法を紹介しました。

これで、数値計算の教科書を1冊、一通り内容を紹介しました。今回の授業で扱った範囲は、数値計算のほんの入口に過ぎないと思いますが、それでも、今後、各自が数値計算を行う際に必要な学びの手がかりの一つになればと思います。

今回の授業は、大学のオープンコースウェアにも掲載することになり、講義が一通り録画、編集されました。撮影、編集に当たられた皆様に感謝いたします。

2019-01-23

計算機数学II (2018) 第10回:偏微分方程式 (1)

この授業も残すところあと2回ですが、これから2回は偏微分方程式の数値解法を扱います。

今回は、偏微分方程式の前半で、この授業で扱う代表的な偏微分方程式(放物型、双曲型、楕円型)の例題を取り上げ、拡散方程式(放物型)の差分法のアルゴリズムを、陽解法と陰解法に分けて説明しました。

次回は、拡散方程式の陰解法の安定性評価から始め、波動方程式(双曲型)、ラプラス方程式(楕円型)の差分法を示します。

2019-01-14

計算機数学II (2018) 第9回:常微分方程式 (2)

今回は、前回に引き続き、常微分方程式の解法を扱いました。まず、前回からの内容の続きで、差分法から、オイラー法、ホイン法、ルンゲ-クッタ法のアルゴリズムを説明しました。それから、前の時間に紹介した主な例題の解法について説明しました。

次回とその次の回でこの授業が終わります。最後の2回は偏微分方程式の解法を扱います。

2019-01-07

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

今年の講義が始まりました。今回からは、常微分方程式ということで、この授業では、差分法による常微分方程式の解法を扱います。

今回は、常微分方程式の代表例、差分法の基礎、微分方程式の差分化、それによって導いた差分方程式の解法の基礎について説明しました。

次回は、差分法に基づく代表的な解法のアルゴリズムと、差分法による各種の常微分方程式の解法を説明します。

2018-12-03

計算機数学II (2018) 第7回:数値積分

今回は、数値積分ということで、台形則、シンプソン則、ロンバーグ積分法を紹介しました。

今年の講義はこれで一段落です。現在、この授業は、1テーマが終わるごとに、演習としてプログラミングに取り組んでいます。数学類でこれまでに授業で扱っているのはMathematicaですので、Mathematica言語 (Wolfram Language) を標準としていますが、希望者には、自分が扱い慣れている言語でプログラムを書いてもらっています。これまでにレポートで提出された言語は、Python, C, C++, Fortran, Haskell です。(Haskellはちょっと珍しいと思う人もいるかもしれませんが、数学類の「計算機演習」ではMathematicaのほかにHaskellも扱っています。)

レポート課題の出題とプログラムの作成にはGitとGitHubを用いており、レポートの提出は、Pull requestを出してもらう形で受け付けています。

次回の講義は年明けになります。来年もよろしくお願いいたします。

2018-11-19

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

今回は、前回残ったラグランジュ補間の誤差評価を行ったのち、スプライン (Spline) 補間と最小2乗法の説明を行いました。

次回は数値積分の話題に進む予定です。

2018-11-12

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

前回の授業から、学園祭明けの休業で1週空きましたが、今回は、まず、方程式の解法を紹介しました。基本的な方法として「2分法」と「ニュートン(Newton)法」を紹介し、それぞれの反復公式、収束条件、計算量について説明しました。

次に、曲線の推定ということで、今回はラグランジュ(Lagrange)の補間法を紹介しました。今回は時間の都合で誤差評価が残ったので、次回は、Lagrangeの補間法の誤差評価から始め、スプライン(Spline)補間の説明に進む予定です。

2018-10-22

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

今回は、前回に引き続いて連立1次方程式の解法に関する説明を行いました。今回は特に「反復法」に焦点を当て、「ヤコビの反復法」「ガウス・ザイデル法」「SOR法」を紹介しました。

来週は、前回と今回の内容に関する演習を行うので、講義は一旦休みます。再来週11月5日は、大学の学園祭明けの休業日ですので、次回の講義は11月12日の予定です。

授業サポートページ: https://researchmap.jp/aterui/compmath2-2018/

2018-10-15

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

今回は、連立1次方程式の解法、特に「直接法」と呼ばれる方法から、ガウスの消去法とLU分解に基づく解法を紹介しました。

次回は連立1次方程式の解法の続きで、反復法に属する解法を紹介します。

授業サポートページ: https://researchmap.jp/aterui/compmath2-2018/

2018-10-09

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

今回は、実質的な第1回ということで、数値計算ではどのようなことを行うか、といったこと、浮動小数の定義と演算の特徴(特に誤差の話)、数値計算によく使われる数学的知識の確認(テイラー展開と漸近記法)、アルゴリズムの記述の説明を行いました。

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

なお、授業のサポートページですが、大学のオープンコースウェアで映像が残ると思われるので、今回はresearchmapに掲載します。researchmapは、日本の研究者のデータベースとSNSを兼ね備えたようなシステムで、どんな研究者がいるか、それぞれの研究者や、研究者のコミュニティがどんなことをやっているかを俯瞰できます。

授業サポートページ: https://researchmap.jp/aterui/compmath2-2018/

2018-10-01

計算機数学II (2018) 第1回:ガイダンス

今日から本年度の秋学期がスタートしました。秋学期、数学類(学部)では「計算機数学II」の授業を担当します。

この授業では、数値計算の初歩を扱います。春学期の「計算機数学I」では、アルゴリズムを伴う構成的な数学への入門を主題にし、対象とする計算は、拡張Euclid互除法を中心にした、代数的な計算を扱いました。これに対して、今回は、理工学で幅広く用いられている数値計算を対象にし、微積分や線形代数の基礎的な知識はあるけれどもプログラミングはあまり経験がないような人に向けた授業にする予定です。

この授業で扱うテーマは以下の予定です。

  • 浮動小数演算、誤差、アルゴリズム
  • 連立1次方程式の解法
  • 代数方程式の解法
  • 関数補間
  • 数値積分
  • 常備分方程式の解法
  • 偏微分方程式の解法

扱う内容のレベルは比較的浅めになると思いますが、初学者向きに、必要な人がより深い専門知識を学ぶための足がかりになるような授業にしたいと思います。

あと、今回、この授業を初めて行うことになり、授業の準備に集中するため、いつもの授業で行っている、授業のビデオ収録と公開は見合わせるつもりでしたが、今回ご縁があり、筑波大学オープンコースウェアに授業の録画を掲載していただくことになりました。録画の掲載が進みましたら、随時お知らせします。

今日の授業はガイダンスで、実際の授業は次回から行います。

2018-07-30

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

今回は、本授業科目の最後の授業でしたが、1変数多項式の高速乗算アルゴリズムの一つとして、高速フーリエ変換 (FFT) を用いた乗算法を紹介しました。2つのn次の1変数多項式の乗算にかかる計算量は、古典的なアルゴリズムで O(n^2), 前回紹介したKaratsubaのアルゴリズムでは O(n^(log 3)) ですが、今回のFFTを用いたアルゴリズムでは O(n log n) となります。

以上が本授業の内容で、この授業では、拡張Euclid互除法を軸に、主に代数的なアルゴリズムを紹介しました。この授業科目は、本学で数学の教員免許を取得するための必修科目にも位置付けられていますが、この授業が、数学の代数分野における構成的な計算を学んだり考えたりするきっかけの一つになればと思います。

授業サポートページ: https://www.math.tsukuba.ac.jp/~terui/compmath1-2018

2018-07-23

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

今回は、高速乗算法の一つとして、整数や1変数多項式に対するカラツバ(Karatsuba)の高速乗算アルゴリズムを紹介しました。n桁の整数どうしの乗算の計算量は、古典的な方法ですと O(n^2) ですが、Karatsubaのアルゴリズムですと、これが O(n^(log 3)) となります。

次回はこの授業の最終回ですが、高速フーリエ変換 (Fast Fourier Transform, FFT) およびそれを用いた1変数多項式の高速乗算法を紹介します。

追記(2018年8月5日):動画2個目「Karatsuba乗算の計算量」の説明に修正が生じましたので、動画を改訂しました。

授業サポートページ: https://www.math.tsukuba.ac.jp/~terui/compmath1-2018

2018-07-17

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

前回、行列積の法計算を行った際、いくつかの除算の計算量の評価については持ち越していましたので、今回の授業では、主な除算アルゴリズムの計算量について議論しました。まず、1変数多項式の除算の計算量を見積もり、それから、単精度整数の除算、多倍長整数の除算の計算量を確かめました。そして、中国剰余算法の計算量の見積もりを行いました。

次回からは、1変数多項式や整数の高速乗算法を紹介します。次回はカラツバ (Karatsuba) の乗算アルゴリズムを紹介する予定です。

授業サポートページ: https://www.math.tsukuba.ac.jp/~terui/compmath1-2018

2018-07-09

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

今回は、まず、モジュラ算法について紹介しました。これは、多倍長数を用いるアルゴリズムに中国剰余算法を適用することで、計算の効率化を図るものです。今回は、モジュラ算法の例として、行列積の法計算のアルゴリズムを紹介しました。

これまでの授業では、多倍長数や1変数多項式の除算の計算量についてあまり触れてきませんでしたが、次回は、これらの除算の計算量を観察した上で、今回のモジュラ算法の計算量の見積もりについて議論したいと思います。

授業サポートページ: https://www.math.tsukuba.ac.jp/~terui/compmath1-2018

2018-07-02

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

今回は、拡張Euclid互除法を用いて、有理数を再構成する計算について説明しました。1つは、剰余環に有理数の演算を埋め込み、計算結果から有理数を再構成するもの、もう1つは、有理数の(10進)循環小数による近似値から、既約な有理数を復元するものです。

次回は、剰余環上の計算と中国剰余定理を組み合わせた「モジュラ算法」について説明します。

授業サポートページ: https://www.math.tsukuba.ac.jp/~terui/compmath1-2018

2018-06-25

計算機数学I (2018) 第10回:中国剰余算法

今回は、中国剰余定理を取り上げ、拡張Euclid互除法を用いて解く「中国剰余算法」のアルゴリズムを紹介しました。

次回は、拡張Euclid互除法の応用として、有理数演算を剰余環に埋め込んで行い、有理数の計算結果を復元する方法と、有理数の小数近似から有理数を復元する方法を紹介します。

授業サポートページ: https://www.math.tsukuba.ac.jp/~terui/compmath1-2018

2018-06-18

計算機数学I (2018) 第9回:実数の連分数展開

今回は、拡張Euclid互除法の性質を紹介したのち、実数の連分数展開の計算について説明しました。まず、有理数の連分数展開について述べたのち、無理数の連分数近似について説明しました。

次回は、中国剰余定理と中国剰余算法について説明します。

授業サポートページ: https://www.math.tsukuba.ac.jp/~terui/compmath1-2018

2018-06-11

計算機数学I (2018) 第8回:法逆元の計算

今回は、拡張Euclid互除法の性質に触れた後、拡張Euclid互除法の応用例として「法逆元の計算」を紹介しました。これは、剰余環の元が単元である(乗法の逆元をもつ)ときに、その逆元を計算するものです。

次回も、拡張Euclid互除法の性質に触れた後で、Euclid互除法の応用例として「有理数の連分数展開」を紹介する予定です。

授業サポートページ: https://www.math.tsukuba.ac.jp/~terui/compmath1-2018

2018-06-04

計算機数学I (2018) 第7回:拡張Euclid互除法

今回から、Euclid互除法の章に入りました。今回は、まず環や整域などの各種用語を確認した後で、Euclid互除法のアルゴリズムを説明し、ついで、拡張Euclid互除法のアルゴリズムを説明しました。

次回以降しばらくは、拡張Euclid互除法のいくつかの性質を取り上げ、拡張Euclid互除法を応用した各種アルゴリズムを紹介したいと思います。

授業サポートページ: https://www.math.tsukuba.ac.jp/~terui/compmath1-2018