情報科学科34年の講義『数値計算』及び同実習のページ
ごあいさつ
3年生のみなさん, これからが情報科学科の学生として人生正念場ですね.
これからの戦いに備えて体力をつけておきましょう. それにはこの講義と
演習で鍛えられるのが一番です. (*^^*)
この講義では微積と線形代数とプログラミングの総復習が主な内容となりますが,
微積分や函数論の続きから微分方程式論への橋渡しとなる, 数値解析の基礎を
習得するのを目標としつつ, 計算機が実数を取り扱う仕組みを
メモリーや CPU の中まで覗いて観察するようなマニアックな話題も
取り上げて, いろんな教養が身に付くように工夫されています.
計算機の基本ってやっぱり計算でしょ?僕は前の職場では“スピード狂”
という仇名を付けられていました. このごろはお金が無くて高い計算機は
買えませんが, 自費で部品を集めて来て並列計算機を作ったりするのを
趣味にしています. 多分今でも,スピードでは他の研究室に負けません.
計算って面白いよ〜. 一緒に楽しみましょうね.
実習との関係
講義と並行して行われる『数値計算実習』では,
講義で解説した内容を敷衍するプログラミングを C や C++ や
FORTRAN で毎回実装したものを実際に動かしてもらい, それらを理解した上で,
ちょっとした応用を毎回レポートとして課します.
実は最初の年には, きみたちの先輩の実力を買い被りすぎて,
この見本プログラムをすべてレポートとして課したのですが,
毎回夜7時半過ぎまでつき合わされる羽目となり,
とても大変だったので,2回目からは見本を配り,提出課題は
うんとやさしくしました.
最初の年のレポート問題は, 教科書の章末課題に含まれており,
サポートサイトにはその解答プログラムも置かれています.
メール
これから講義に関する連絡はすべて学科のメールアドレスに流されます.
出席もメールによりとります. ただし,プレーンテキストで提出して
ください.期末レポートを除き添付ファイルは一切開きません.
成績評価
実習の採点は毎回の課題でなされます.
講義の採点は実習の評価と同じ点が付きます.ただし, 講義しか受けない人の
ためには試験も用意しますので,早めに申し出てください.
プログラミングが苦手な人が希望すれば,筆記試験で
評価を積み増しすることも考えます.
教科書
教科書は昨年出版された僕の本を使います.
サポートページにまだ載っていないミスプリを発見した人は
チョコレートを差し上げます.
毎回の講義の概要
講義は共通3-409 (講義室) で行われますので,お間違いなく.
引き続く実習は理3-504 (計算機実習室) に移動して行われます. 移動と
休憩の時間を見込んで,実習の開始は適宜遅らせます.
下記のプレゼンを自分のホームディレクトリにダウンロードして,adobe
reader で読むと,大きな字で文字化けせずに読めます.(そのまま Mac の
ブラウザで読むと,なぜか文字化けすることがあります.)
- 第1回:4月19日(月) 数値計算の常識
イントロで,桁落ちと情報落ちの話をした後,C 言語の復習と
IEEE754 の解説をやり, 最後に計算機イプシロンの可視化体験をやりました.
num1.pdf
Lesson 1の講義のプレゼン資料
実習はこれを見ながら行いました. (ほぼ教科書を箇条書きにしたものです.)
講義・実習の資料は,本ホームページの他,
5階の ~kanenko/NumCal/Lesson1/ の下にも置いてあります.
report1.pdf
Lesson 1の課題の解答と講評です. できなかった人はこれを読んで
研究してください.なお解答のプログラム例は5階のこの週のディレクトリ
に置いてあります.
- 第2回:4月26日(月) 級数の和
いよいよ FORTRAN の解説に入ります.手始めに,いろんな級数の和を
求めてみましょう.
num2.pdf
Lesson 2の講義のプレゼン資料の修正版
report2.pdf
Lesson 2の課題の解答と講評です. できなかった人はこれを読んで
研究してください.
- 第3回:5月10日(月) 数値微分
前回の補足をした後, 数値微分の解説に入り,
丸め誤差と打ち切り誤差の釣り合いの問題を解説しました.
num3.pdf
Lesson 3の講義のプレゼン資料
report3.pdf
Lesson 3の課題の解答と講評です. できなかった人はこれを読んで
研究してください.
- 第4回:5月17日(月) 数値積分
Riemann 近似和,台形公式,Simpson の公式などを用いていろんな函数の
定積分を計算し,誤差を観察してみました.
num4.pdf
第4回の講義のプレゼン資料
なお,実習のときに FORTRAN から翻訳して見せた daikei.c は, 直訳に
近づけるため,while(1) を do に書き直しましたので,参考にしてください.
simpson.c は作る暇がありませんでしたが,実は実習時にちょっと口走った
ように,主要部は sekibun.c に含まれています.しかしこれも
自分で書き直してみると勉強になります.
- お知らせ5月24日(月)は休講です.
(日本気象学会に出かけます.) なので,課題は2週間かけてじっくり
解いてください.今までの課題の解説をよく読んで,いつまでも同じ
間違いを繰り返さないように!
report4.pdf
Lesson 4の課題1と2の解答と講評です. できなかった人はこれを読んで
研究してください.課題3は引き続き頑張ってみてください.
- 第5回:5月31日(月) 反復法による方程式の解法
2分法やニュートン法を用いて,非線型方程式の近似解を求めました.
また, Richardson 加速法と Romberg 積分法の解説をしました.
num5.pdf
第5回の講義のプレゼン資料
report5.pdf
Lesson 5の課題の解答と講評です. できなかった人はこれを読んで
研究してください.なお,課題2以降はまだ期限になっていません.
引き続き頑張ってください.
- 第6回:6月7日(月) 行列の計算 - 1. ガウスの消去法
2次元配列を用いた行列の扱い方の基礎を解説し,
決定系の連立一次方程式を線型代数で学んだガウスの消去法を用いて解く
方法を学びました.
最後に,応用として常微分方程式の境界値問題を解き,
そのグラフを gnuplot と Kerosoft xgrc でそれぞれ表示してみました.
5階の環境が変わったためか,num6-5.f の CALL CLS() とある行を
コメントアウトしないと,真っ黒いウインドウが表示されるだけで,解の
曲線が描画されません.
kanenko/NumCal/Lesson6 にはこの修正済みのファイルを置きました.
同じ症状は今後も発生すると考えられます.
num6.pdf
第6回の講義のプレゼン資料
report6.pdf
Lesson 6の課題の解答と講評です. あやしいことを書いていた人はこれを読んで
研究してください.
- 第7回:6月14日(月) 行列の計算 - 2. 反復法と固有値の計算
連立一次方程式の代表的な反復解法である Jacobi 法と Gauss-Seidel 法を学
び, 最後に固有値と固有ベクトルの初等的な計算法を紹介しました.
num7.pdf
第7回の講義のプレゼン資料
report7.pdf
Lesson 7の課題の解答と講評です. 課題2以降はまだ受け付けを続けます.
- 第8回:6月21日(月) 常微分方程式の初期値問題
常微分方程式の Euler 法や Runge-Kutta 法による解法と誤差評価を1階正規系,
について学び,
モデルとして力学系などの連立方程式や決定論的カオスのプログラム例
を味わいました.
num8.pdf
第8回の講義のプレゼン資料
- 第9回:6月28日(月) 複素数の計算と反復写像
FORTRAN, C による複素数の取り扱い方の解説をし,応用として複素力学系の
フラクタルの代表例を取り上げます.また標準で複素数型を取り扱える
C++ の入門的解説をしました.
num9.pdf
第9回の講義のプレゼン資料の訂正版 (多重定義の英語が間違っていたのを
直しました.)
report9.pdf
Lesson 9の課題の解答と講評です. 課題2以降はまだ受け付けを続けます.
julia-gallery.html
第9回の課題1の作品集
学内へのアクセス制限がかけてありますので,rlsv.is.ocha.ac.jp 経由で
ご覧ください.
自分のが無いとか,自分のイメージと違うぞという人は,至急お知らせくださ
い.(色を変えたけれどパラメータを書いてなかった人は,もとの julia.f の
標準のパラメータで画像を作成しました.)
なお締切りはいつもの通り,週末です.お友達の作品を見て,自分ももっと頑
張りたくなった人は,締切りまで再提出を認めます.
- 第10回:7月5日(月) 偏微分方程式の初期値問題の差分解法
熱方程式と波動方程式という, 時間発展の代表的な方程式の差分解法を
学びました.
numa.pdf
第10回の講義のプレゼン資料
reporta.pdf
Lesson 10の課題の解答と講評です. 課題2以降はまだ受け付けを続けます.
- 第11回:7月12日(月) ポアソン方程式のスペクトル法・差分法・有限
要素法による解法
時間を含まない偏微分方程式の代表的な解法を学びました.
numb.pdf
第11回の講義のプレゼン資料 (2010.7.12 22:48 改訂版)
フーリエ級数の fmn の公式を修正し,FreeFEM の説明と使い方を補いました.
- 第12回:7月16日(金)(振替月曜) 多倍長演算と精度保証付き計算
多倍長演算のしくみの解説と gmp の紹介をしました.また CPU の丸めモード
の解説と精度保証計算の紹介をしました.
numc.pdf
第12回の講義のプレゼン資料 (2010.7.16 22:01 改訂版)
reportc.pdf
Lesson 12の課題の解答と講評です. 課題2以降はまだ受け付けを続けます.
- 第13回:7月26日(月) Fortran 90 の概要
FORTRAN の歴史を振り返り, Fortran 90, 95, 2003 の概要を解説し, プログ
ラム例を動かしてみます.
講義・実習はこれでおしまいです.単位を取りたい人は必ず出席しましょう!
numd.pdf第13回の講義のプレゼン資料
今年は講義だけの受講者が居ましたが,試験よりも実習のレポートを選択
したので,試験はありません.今まで頑張りが足りないなあと思っている人は,
模範解答が保留になっている問題をせっせと解いて提出してください.
締切りは8月一杯です.
レポートの提出は今まで通り,大学のアドレスからにしてください.そうであれ
ば Subject 欄はどうでも構いませんが,標準としては NumCal Report くらい
にしてください.でないと,デートのお誘いかなって
期待しちゃうかも.(*^^*)
文章やプログラムのソース,テキスト版の実行結果などは,エンコードせずに
そのままテキストで送ってください.できれば,後ろに HTML 版の尻尾が
付かないような設定にしてください.
画像の出力結果を見せたいという場合は,エンコードされた
添付ファイルでも結構ですが,ファイル名はローマ字にして,拡張子が
すぐ判別できるようにしてください.
講義科目の紹介メニューに戻る.