2011-02-28

数理科学II(第26回)

今日が、この授業の最終回となりました。

今日は、多項式の定数倍の部分をスキップし、乗算の部分を説明しました。

その後、時間がちょっと余ったので、レポート課題の説明を行いました。擬除算のアルゴリズムについてはレポート課題としました。それから、多項式の定数倍のプログラムに用いた、高階関数 map と無名関数 lambda については、発展課題として、擬除算をすぐに終えた人に概念を説明してもらう課題としました。

さて、これで今年度のこの科目の授業がすべて終わりました。昨年度、この授業が終わった時の感想をふまえて、今年度の授業を行ったわけですが、今年度は、講義を丁寧に行った分時間をかけたのに対し、出張などで授業回数が昨年度より少なくなり、部分終結式の理論については、やや時間を要したと思います。

それから、今回は、初めて実装に関する説明を組み入れました。この試み自体はよかったと思いますが、時期が年度末になってしまい、中途半端に終わってしまった点は残念でした。次の機会には、もっと初期の段階で、たとえば、多項式の四則演算を行った時点で、その実装に触れ、以降も、理論→実装→理論→実装・・・のように、テーマごとに理論と実装の話を交互に進めてみたいと思います。

講義で扱ったテーマも、昨年度は部分終結式の理論に加え、因数分解も扱いましたが、今年度は因数分解を扱う時間がありませんでした。次回は、因数分解を扱えればと思います。加えて、実装についても、今回は、多項式の内部表現として最も単純な表現を扱いましたが、因数分解を行う場合は、まず多変数多項式、次に有限体上の多項式、それから、多項式への値の代入など、もっと幅広い計算に対応する必要があります。この辺も、今後、アイデアと実装を練っていきたいと思います。

このようなまとめに至ったのも、今回聴講してくれた学生さん達のおかげでもあります。彼らに感謝の意を表して、今年度の授業を終えたいと思います。あとはレポートですね。頑張りましょう。

2011-02-23

微積分III演習(第9回)

今日はこの授業の最終回で、主に一様連続に関する問題を扱いました。無限級数については、授業で扱うのが間に合わなかったので、とりあえず「コーシーの判定法」と「ダランベールの判定法」に関する演習問題をレポートにしました。期末試験は行いません。

以上でこの授業が終わったわけですが、今回の授業は、少ないながらも積極的な学生さん達のおかげで、有意義かつ楽しい授業になったと思います。今回の履修者である学生さん達は、所属が化学類と地球学類なので、これ以降、数学に触れる機会は少ないかもしれませんが、これからのご活躍をお祈りします。

2011-02-22

計算機演習(第9回)

今日は、授業の最終回で、フラクタル図形の描画を行いました。レポート課題の方は、コツをつかまないと、なかなか大変かもしれませんが、頑張ってほしいと思います。

来週は、今日のレポートを含め、これまでに出題したすべてのレポートの締切日です。レポートの提出にあたり、質問がある人のためのオフィスアワーとし、自由参加にする予定です。

2011-02-21

数理科学II(第25回)

今日は、まず、前回の続きで、多変数多項式のもう一つの表現方法として「分散表現」を紹介しました。

それから、1変数多項式の四則演算の実装ということで、まず加法の説明から入りました。末尾再帰でアルゴリズムを書いた場合、通常の多項式の加減算を用いて書くと、多項式の加減算がやたらと増えるのではないかという指摘がありましたが、これをScheme (LISP) で実装すると、必要な多項式の加減算は car や cdr で表すことができ、効率はそれほど損なわれないという説明をしました。

あと、今回の授業で用いた1変数多項式の正準表現では、係数を降べき順に並べているのに対し、加法の算法の中では、昇べきの順で係数の加算を行うため、末尾再帰の関数に多項式を渡す際に、いちいち reverse で係数のリストを逆向きにするのが非効率的ではないか、という指摘がありました。たしかにこれはもっともな意見で、正準表現の係数の並べ方も昇べき順にするのが、より理にかなっているかもしれません。これについては、今回の授業を踏まえて、今後の実装の際に再検討したいと思います。

次回でこの授業は終わりです。多項式の四則演算は、この後、定数倍、減算、乗算、除算が残っていますが、どこまで行けますことやら・・・なるべくゴールに近づけるように頑張りたいと思います。

2011-02-18

数学特別演習(第17回)

今回が、この授業の最終回となりました。

今回は、まず、巡回路を探索する際に、効率よく選択対象を絞るための「分枝限定法」すなわち「枝刈り」を取り上げました。枝刈りは、基本的には、巡回路の開始ノードからあるノードまでの経路を固定した最小1-木を計算し、その長さを、経路を固定しない場合の最小1-木の長さと比較して、長さが等しいかより短い経路のみを選択肢として残していくやり方です。

本書では、枝刈りのための経路を固定する方法として、以下の2つを取り上げました。まず、開始ノードから次の経路を順番に選択した場合、そして、経路を固定しない場合の最小1-木に、次数が3以上のノードが現われた場合に、そのノードを中心に、次数が2を越えないような経路を選択した場合です。特に後者の方法については、私も予習していて理解に苦しんだ部分でしたが、発表者の人はよく予習していて、おかげで私もよく理解することができました。

次に、後半の、最後の発表では「多面体的組み合わせ論」を扱いました。これは、ノードの個数がn個のグラフについて、すべてのグラフを1つ1つ格子点に対応させて考えます。辺がある場合は、それぞれの座標を1、ない場合は0とします。すると、巡回路全体の集合は、格子点のなす空間内で、多面体を構成します。巡回路の探索にあたって、この多面体をなるべく精度よく近似することで、効率的な巡回路の探索につなげようというものです。

この話題の中では、多面体の頂点と辺の個数の関係を取り上げました。まず、多面体の頂点と辺の個数の関係は、多面体に依存していろいろ異なった状況が存在します。頂点の個数に比べて辺の個数がずっと多い多面体もあれば、逆の場合もあります。次に、仮に頂点の個数が多い多面体でも、辺の個数が比較的少ない場合は、もとの空間から多面体を「切り取る」回数を小さく抑えられる可能性が指摘されました。この話題は、チーズを例に取り上げ、醸造したもとの形のチーズから、立方体のチーズのかたまりを切り取るという例が紹介されました。

最後の話題は、巡回路に対応する頂点から構成される多面体の話になりました。巡回路に対応する頂点から構成される多面体は、頂点の個数に比べて面の個数が大幅に増加します。しかし、それらの面をすべて正確に近似する必要はなく、最適な頂点の近くで、多面体をそこそこ(うまく)近似し、かつ面の個数がなるべく少ない多面体で(お気楽に)近似できれば十分で、現在の研究の最先端は、そのような「うまい」多面体の近似をいかに効率的に見つけるかが焦点の一つであるという説明で終わりました。

これで、結局、テキストの最後の1章を残して授業が終わりました。最後の1章は、巡回セールスマン問題の研究の歴史が紹介されています。

以上がこの授業とテキストの内容ですが、まず、テキストについての感想を述べますと、非常におもしろい本だったと思います。テーマが実社会の問題と密接に関連しており、興味がわくこと、その問題を解くための理論は数学に基づいていること、かつ、「存在証明」などの定性的な要素と、アルゴリズムなど、構成的な要素の両輪を用いて問題にアタックすること、等、私自身も興味をもって読みましたし、学生さん達にとっても、数学に対する認識を新たにする内容だったようです。

翻訳も、読み物的な本を、数学的な正しさを損なわずにわかりやすく訳すのは苦労があったと思いますが、おおむね、よく訳されていて読みやすかったと思います。ただ、数か所、訳文の数学的意味が読み取りづらい部分や、術語の記述が不正確な部分が見受けられたので、さらなる翻訳の向上に期待します。

授業に関しては、学生さん達は、皆積極的によく頑張って予習、発表していたと思います。授業の最初の頃は、皆さん苦労しているようでしたが、回数を重ねるにつれて、発表や板書の質やわかりやすさが徐々に向上していることが見てとれました。学生さん同士でやると、このように刺激になってよいものですね。

先日開かれた学類のクラス連絡会で、授業評価アンケートの結果が報告された際、微積分や線形代数の予習時間の少なさが指摘されていました。大学の授業に対する認識の結果だと思いますが、私がこの授業で学生さん達を見てきた限り、その気になれば予習に取り組む能力は十分に備わっていると確信したので、こうした力を他の授業でも発揮されることを望みます。

長いようで短い半年間でしたが、一緒に授業をつくってきた学生さん達に感謝します。この本は、これから本格的に数学を勉強しようとする学生さん方、数学を教える先生方、そして数学に興味を持つ多くの方々に、おすすめ度は「星3つです!」です。数学的な内容は割とちゃんと書いており、さらっとした会話の中にも重要事項が頻発ますので、1文1文を納得するまでじっくり読まれることをおすすめします。

さあ、学生さん達の最後の感想文に目を通すことにしましょう。ついでに、来年度もこの授業を受け持つ予定です。次はどんな本を読もうかしら・・・

2011-02-16

微積分III演習(第8回)

今日も、関数の極限と連続性に関する問題演習がメインになりました。

今日は、教科書の定理を何題か、ε-δ法で証明してもらいました。これらは、関数の極限値に関する性質で、教科書では、数列の極限値に関する定理に帰着させる解法を行っていますが、演習では、これらを直接ε-δ法で別に証明しようというものです。

今日の演習では、前回の最後で手詰まりだった問題も、無事解決されました。今日も、ある人の発表で詰まった時に、みんなでアイデアを出し合い、今日は解答がうまく完成しました。前回、今回と、自発的な討論が行われたのはよかったと思います。

残りの授業はあと1回となりましたが、次回は、関数の一様連続に関する問題と、級数に関する問題を扱いたいと思います。

2011-02-15

計算機演習(第8回)

今日は、ルールとパターンマッチに基づくプログラミングを行いました。

毎年、この課題は、ルールを適切に定義するのに難儀する学生さんが続出します。今年はそれほどでもない印象でしたが、レポートの提出に向けて頑張ってほしいと思います。

次回がこの授業の最終回です。次回は、フラクタル図形の描画を行います。

2011-02-14

数理科学II(第24回)

今日は、出席率が50%でしたが、授業の冒頭、研究科から配布された授業評価アンケートを配り、とりあえず今日出席した人達に答えてもらいました。

若干授業の開始が遅れたわけですが、今日は、計算機 (Scheme) による多項式の表現について説明しました。まず、各項を、係数が0の項も含めて密な形で表すか、あるいは非ゼロの係数のみ、疎な形で表すか(普段はこちらが用いられます)、について、それぞれの長所、短所を説明し、ついで、多変数多項式の表現として、まず「再帰表現」を説明したところで時間になりました。

次回は、多変数多項式の表現として、他の一つの表現である「分散表現」について説明し、それから1変数多項式の四則演算の実装について説明したいと思います。

2011-02-09

数学特別演習(第16回)

今日は水曜日ですが、11日の金曜日が建国記念の日で休みになるため、金曜日の振替授業となりました。

今日は、長さ最短の巡回路に近い巡回路を計算するヒューリスティックの一つ「クリストファイズのアルゴリズム」を扱いました。このアルゴリズムで計算する巡回路の長さは、最短の巡回路に比べて、たかだか1.5倍に抑えられることが理論的にわかっています。

今日の授業では、最初の発表者に、クリストファイズのアルゴリズムの概要を説明してもらい、次の発表者に、クリストファイズのアルゴリズムで計算される巡回路の長さが、最短の巡回路に比べて1.5倍に近づくという、理論上最悪の例題の1つを説明してもらいました。

このうち、後半の、理論上最悪の例題では、ある規則的な形で、ノード数がどんどん増えていくグラフを扱いました。このノード数が大きくなると、クリストファイズのアルゴリズムで計算される巡回路の長さの、最短の巡回路の長さに対する比が1.5に収束するというものです。テキストでは、クリストファイズのアルゴリズムで計算される巡回の長さを「だいたい」の長さで計算しており、発表者の人も、それに従って発表していました。

しかし、数学を専門に学ぶ学生としては、「だいたい」の部分を「はっきり」させて確認する必要があると考え、その場で、巡回路の長さの見積りを厳密に計算してもらいました。そして、厳密に計算した長さの比も、3/2に近づくことを確かめてもらいました。

今回の授業を通して、本で読んだり人から聞いたりしたようなことでも、自分で確かめることが大切なこと、自分で確かめる作業は、数学では頭を使えばできる作業もあること、こういう作業によって、物事の道理を確かめることの大切さを学ぶことも、数学を学ぶ意義の一つであること、を知る機会になったと思います。

発表者の人は大変だったと思いますが、引き続き、完全グラフの巡回路を、樹形図で表す部分について説明してもらいました。よく頑張ったと思います。

次回はいよいよ最終回です。巡回路を探索する際の「分枝限定法」などを扱います。どこまで進めるかわかりませんが、なるべくゴールを目指して進みたいと思います。

2011-02-08

計算機演習(第7回)

今回は、主に積分の内容ということで、1変数、多変数の定積分を扱いました。

今回のレポート課題では、積分の課題が出題されていますが、曲線の長さや有界閉領域上の関数の積分など、Mathematicaの操作の正しさに加え、数学的な計算の正しさが求められる課題になっています。また、厳密な積分計算の課題に加え、台形則を用いた1変数関数の数値積分の課題もあり、こちらの方は、前回までに扱ったリスト操作などを用いた計算を行っています。

次回は、ルールとパターンマッチに基づくプログラミングを行います。

2011-02-07

数理科学II(第23回)

今日の授業は、引き続き Scheme の入門で、今日は、制御構造のうち、選択 (if, cond) と、反復を説明しました。

反復の部分は、LISPの特徴の一つともいえる「再帰的定義」です。素朴な再帰に引き続き「末尾再帰」についても説明しました。末尾再帰では、関数の引数に計算結果も含めて、再帰的なな呼び出しを行うことにより、通常のプログラミング言語のループと同様に扱うことが可能になるものです。

Scheme の説明はこれで一段落で、次回からは、計算機上での多項式の表現の一般論をざっと眺めた後、今回 Scheme で数式処理を実装するための、多項式の表現を検討したいと思います。

2011-02-04

数学特別演習(第15回)

今日は、与えられたグラフに対し「巡回路」を直接作る代わりに、より条件を緩めた問題を解く「緩和法」を扱いました。

巡回路を直接求める問題に対して「より条件を緩めた問題」というのが「1-木」と呼ばれるグラフの計算です。1-木は、前回扱ったヒューリスティックで求めた巡回路からノードを1個取り除き、残ったノードに関する「最小全域木」を構成し、それに、先程取り除いたノードを辺でつないで加えることで作られます。

このとき、巡回路は1-木の集合に含まれるので、経路の長さが最小となる1-木が求まれば、その経路の長さは、経路の長さが最小の巡回路の長さの下界になります。ポイントは、最小1-木を求めるのにかかる計算量が、最小全域木を求めるのと同程度(=多項式時間)の速さで、巡回路の長さの下界が求まるという点です。

さて、今日の最後の発表者は、来月卒業を控えた4年生の人で、今回、早く成績を出す必要もあり、発表してもらいましたが、最後に1年生の履修者にメッセージをもらいました。数学は1つ1つの理論の積み重ねであることや、いろいろな分野の関連性があること、そういったことを念頭に学習することの大切さを話してくれました。1年生にとっても、今回の話はよい刺激になったのではないかと思います。

次回は、巡回路を求める新しいアルゴリズムで、求めた巡回路の長さが、最適な巡回路に比べて高々1.5倍で抑えられるようなアルゴリズムを扱います。

2011-02-02

微積分III演習(第7回)

今日は、主に関数の極限と連続性に関する問題を扱いました。

授業の終わりの方で、ある人の発表で詰まってしまいましたが、みんなで討論が始まり、解法にいろいろなアイデアが出されました。残念ながら、今日は時間切れになってしまいましたが、今日の討論を踏まえて、次回頑張って解いてもらえればと思います。

この授業も次回と次々回の授業でおしまいですが、残りの時間で、主に一様連続性に関する問題を扱う予定です。

2011-02-01

計算機演習(第6回)

今回から2回は微積分の計算ということで、今日は、主に、導関数や極限値の計算、Taylor展開を扱いました。

なお、卒業予定者の人達については、早く成績を出す必要があるため、今日までに8回分のレポートを出してもらいました。お疲れさまでした。

次回は、主に積分の内容を扱います。