概要:
コンピュータを用いて数値計算を行なう場合に注意しなくてはならない誤差と限界について学ぶ。続いて、ニュートン法による非線形方程式の解法,矩形近似・台形近似・二次曲線近似(シンプソンの公式)等による数値積分,最小二乗法による関数の近似,モンテカルロシミュレーション等について,講義と実習により学習する。ソフトウェアを設計し実現する際の基礎技術を,数値計算のためのプログラミング実習を通して身に付けることを目標とする。
授業の進め方・方法:
本科目は,コンピュータリテラシ,プログラミング基礎,プログラミング応用Iと関連する。
・既に学習したLinuxの基本操作やC言語の基礎は,習得していることを前提に講義を進める。
・授業は講義と演習からなり,講義後に演習問題(レポートにまとめて提出)を課す。
・レポートの提出期限は厳守すること。提出期限を過ぎて提出されたレポートは評価対象とせず0点とする。なお,未提出レポートがある場合には単位認定しない(不合格)ので注意すること。
注意点:
・「数値計算法」戸川隼人著(コロナ社)
・「C 言語による数値計算入門」皆本晃弥著(サイエンス社)
・「数値計算の常識」伊理正夫・藤野和建著(共立出版)など
|
|
週 |
授業内容 |
週ごとの到達目標 |
前期 |
1stQ |
1週 |
「0. ガイダンス」,「1. 数値計算における誤差」(講義と演習) |
・浮動小数点数(IEEE 754) による数の表現を理解できる。 ・丸め誤差,打ち切り誤差,アンダーフロー,オーバーフローなどの数値計算における誤差を理解でき,誤差の発生原因とその対処を考えることができる。
|
2週 |
「1. 数値計算における誤差」(演習) |
同上
|
3週 |
「1. 数値計算における誤差」(演習) |
同上
|
4週 |
「2. 数値微分と数値積分」(講義と演習) |
・数値微分を計算でき,打ち切り誤差と丸め誤差の特性や桁落ちによる計算精度低下を理解できる。 ・台形公式やシンプソンの公式による数値積分を計算でき,その精度を理解できる。
|
5週 |
「2. 数値微分と数値積分」(演習) |
同上
|
6週 |
「2. 数値微分と数値積分」(演習) |
同上
|
7週 |
中間試験 |
|
8週 |
「3. 非線形方程式と関数近似」(講義と演習) |
・線形補間,多項式補間,最小二乗法による関数近似の解法を理解し,実際に計算できる。 ・二分法やニュートン法による非線形方程式の解法を理解し,実際に計算できる。
|
2ndQ |
9週 |
「3. 非線形方程式と関数近似」(演習) |
同上
|
10週 |
「3. 非線形方程式と関数近似」(演習) |
同上
|
11週 |
「4. 連立方程式と微分方程式の数値解法」(講義と演習) |
・直接解法(ガウスの消去法)や反復解法(ヤコビ法)による連立方程式の解法を理解し,実際に計算できる。 ・オイラー法やルンゲ・クッタ法による微分方程式の解法を理解し,実際に計算できる。
|
12週 |
「4. 連立方程式と微分方程式の数値解法」(演習) |
同上
|
13週 |
「4. 連立方程式と微分方程式の数値解法」(演習) |
同上
|
14週 |
「5. 偏微分方程式の差分解法と確率論的数値計算」(講義と演習) |
・偏微分方程式の差分法による解法を理解し,実際に計算できる。 ・モンテカルロ法の原理を理解し,実際に計算できる。
|
15週 |
期末試験 |
|
16週 |
答案返却・解説,「5. 偏微分方程式の差分解法と確率論的数値計算」(演習) |
・偏微分方程式の差分法による解法を理解し,実際に計算できる。 ・モンテカルロ法の原理を理解し,実際に計算できる。
|
分類 | 分野 | 学習内容 | 学習内容の到達目標 | 到達レベル | 授業週 |
専門的能力 | 分野別の専門工学 | 情報系分野 | プログラミング | 代入や演算子の概念を理解し、式を記述できる。 | 4 | |
プロシージャ(または、関数、サブルーチンなど)の概念を理解し、これらを含むプログラムを記述できる。 | 4 | |
変数の概念を説明できる。 | 4 | |
データ型の概念を説明できる。 | 4 | |
制御構造の概念を理解し、条件分岐を記述できる。 | 4 | |
制御構造の概念を理解し、反復処理を記述できる。 | 4 | |
与えられた問題に対して、それを解決するためのソースプログラムを記述できる。 | 4 | |
ソフトウェア生成に必要なツールを使い、ソースプログラムをロードモジュールに変換して実行できる。 | 4 | |
主要な言語処理プロセッサの種類と特徴を説明できる。 | 1 | |
ソフトウェア開発に利用する標準的なツールの種類と機能を説明できる。 | 2 | |
要求仕様に従って、標準的な手法により実行効率を考慮したプログラムを設計できる。 | 3 | |
要求仕様に従って、いずれかの手法により動作するプログラムを設計することができる。 | 3 | |
要求仕様に従って、いずれかの手法により動作するプログラムを実装することができる。 | 3 | |
要求仕様に従って、標準的な手法により実行効率を考慮したプログラムを実装できる。 | 3 | |
ソフトウェア | アルゴリズムの概念を説明できる。 | 3 | |
与えられたアルゴリズムが問題を解決していく過程を説明できる。 | 3 | |
同一の問題に対し、それを解決できる複数のアルゴリズムが存在しうることを説明できる。 | 3 | |
整列、探索など、基本的なアルゴリズムについて説明できる。 | 3 | |
時間計算量によってアルゴリズムを比較・評価できることを説明できる。 | 3 | |
コンピュータ内部でデータを表現する方法(データ構造)にはバリエーションがあることを説明できる。 | 3 | |
同一の問題に対し、選択したデータ構造によってアルゴリズムが変化しうることを説明できる。 | 2 | |
リスト構造、スタック、キュー、木構造などの基本的なデータ構造の概念と操作を説明できる。 | 1 | |
ソースプログラムを解析することにより、計算量等のさまざまな観点から評価できる。 | 3 | |
同じ問題を解決する複数のプログラムを計算量等の観点から比較できる。 | 3 | |