概要:
数値計算で生じる誤差、数値計算(実数計算)を行うにあたっての注意点,数値計算アルゴリズムの基礎を学習し、数値計算ライブラリを用いてプログラムを作成できる能力,工学問題に適用する基礎能力を身につける。
授業の進め方・方法:
プログラム言語としてC++を使う。C++はシステム記述言語であるが、数値計算ではfortranの次によく用いられる言語である。この授業では、C++で作成した数値計算ライブラリを用意している。数値計算法のアルゴリズムの基礎を理解してもらい、演習によって数値計算ライブラリを用いたプログラムを作成し、数値計算結果を求めてもらう。
関連科目:プログラミングⅠ、Ⅱ、Ⅲ
注意点:
得点配分は、中間試験50%、期末試験50%とし、100点法で評価する。
前期(後期)中間試験、前期(後期)期末試験の点数が60点に満たないとき、前期(後期)中間試験および前期(後期)期末試験の試験範囲でそれぞれ再試を実施する。前期の総合成績と後期の総合成績の平均が60点以上のとき、合格とする。再試の成績を反映させる場合、最終総合成績は最大60点として評価する。
次回の授業範囲を予習し、専門用語の意味等を理解しておくこと。
|
|
週 |
授業内容 |
週ごとの到達目標 |
前期 |
1stQ |
1週 |
エディタとC++コンパイラの使い方 |
エディタとC++コンパイラを使うことができる。
|
2週 |
C++の基礎Ⅰ(データ入出力、ファイル操作)
|
データ入出力を行うことができ、ファイルからの入出力の仕方を理解することができる。
|
3週 |
C++の基礎Ⅱ(ポインタと配列) |
ポインタと動的配列の作り方を理解できる。
|
4週 |
C++の基礎Ⅲ(ポインタとアドレス演算、関数の参照引数) |
ポインタによる配列へのアクセス、アドレス演算、関数の参照引数を理解できる。
|
5週 |
C++の基礎Ⅳ(行列クラスと演算子のオーバーロード) |
1次元動的配列による2次元配列(行列)の実装、演算子のオーバーロードを理解できる。
|
6週 |
行列の積、行列とベクトルのスカラー演算
|
行列の積、行列とベクトルの積などのスカラー演算プログラムを作成できる。
|
7週 |
実数のデータ表現、数値計算で生じる誤差 |
実数のデータ表現と数値計算で生じる誤差を理解できる。
|
8週 |
実数計算を行うにあたっての注意点 |
実数計算で陥りやすい注意点を理解できる。
|
2ndQ |
9週 |
教材用の数値計算ライブラリを用いた行列演算 |
教材用として開発した数値計算ライブラリを用いて行列演算ができる。
|
10週 |
2分法による代数方程式の求解 |
2分法による代数方程式の求解を理解し、プログラムを作成できる。
|
11週 |
ニュートン法による代数方程式の求解 |
ニュートン法による代数方程式の求解を理解し、数値計算ライブラリを用いてプログラムを作成できる。
|
12週 |
連立1次代数方程の解法Ⅰ(ガウス消去法と行列式の計算) |
ガウス消去法の前進消去、後退代入、行列式の計算法を理解できる。
|
13週 |
連立1次代数方程の解法Ⅱ(pivot選択付きのガウス消去法とランクの計算法) |
pivot選択付きのガウス消去法と行列のランクの計算法を理解できる。
|
14週 |
連立1次代数方程の解法Ⅲ(逆行列の計算、LU分解法) |
ガウス消去法による逆行列の計算法、LU分解法について理解できる。
|
15週 |
最小二乗法(直線近似,座標軸がlog10軸のときの直線近似) |
最小二乗法の原理について理解できる。
|
16週 |
|
|
後期 |
3rdQ |
1週 |
最小二乗法(曲線近似)、曲線補間(ラグランジュ補間) |
最小二乗法による曲線近似、曲線補間(ラグランジュ補間)を理解できる。
|
2週 |
曲線補間(スプライン補間) |
曲線補間(スプライン補間)を理解できる。
|
3週 |
プログラム演習 |
第1~2週のプログラムを数値計算ライブラリを用いて作成し、gnuplotで描画できる。
|
4週 |
数値積分(台形則とガウス求積法) |
数値積分(台形則とガウス求積法)を理解して数値計算ライブラリを用いたプログラムを作成できる。
|
5週 |
自動微分と自動微分クラス、ヤコビ行列の計算 |
自動微分と自動微分によるヤコビ行列の計算法を理解できる。
|
6週 |
自動微分を用いたニュートン法による非線形連立代数方程式の求解 |
自動微分を用いたニュートン法による非線形連立代数方程式の求解を理解できる。
|
7週 |
プログラム演習 |
第4~6週のプログラムを数値計算ライブラリを用いて作成し、正しい結果を得ることができる。
|
8週 |
常微分方程式の数値解法(ルンゲ・クッタ法) |
微分方程式の数値解法、ルンゲ・クッタ4次法について理解できる。
|
4thQ |
9週 |
振動系の運動方程式とLCR回路の回路方程式の数値解析 |
mck振動系とLCR回路の微分方程式をルンゲ・クッタ法で解くアルゴリズムを理解できる。
|
10週 |
プログラム演習 |
第8,9週のプログラムを数値計算ライブラリを用いて作成し、正しい結果を得ることができる。
|
11週 |
固有値の解法 |
固有値を求めるヤコビ法、QR法の概要を理解できる。
|
12週 |
固有ベクトルの解法 |
固有ベクトルを求めるべき乗法、逆反復法等の概要を理解できる。
|
13週 |
プログラム演習 |
第11,12週のプログラムを数値計算ライブラリを用いて作成し、正しい結果を得ることができる。
|
14週 |
離散フーリエ変換の基礎とサンプリング定理 |
離散フーリエ変換の基礎とサンプリング定理を理解できる。
|
15週 |
FFTライブラリを用いた演習(スペクトルと固有振動数の測定) |
数値計算ライブラリを用いてFFT解析を行うプログラムを作成し,スペクトルを求めて固有振動数を求めることができる。
|
16週 |
|
|
分類 | 分野 | 学習内容 | 学習内容の到達目標 | 到達レベル | 授業週 |
専門的能力 | 分野別の専門工学 | 情報系分野 | プログラミング | 変数の概念を説明できる。 | 3 | 後7,後8 |
データ型の概念を説明できる。 | 3 | 後2,後5,後7 |
代入や演算子の概念を理解し、式を記述できる。 | 3 | 後2,後8 |
制御構造の概念を理解し、条件分岐を記述できる。 | 3 | 後2 |
制御構造の概念を理解し、反復処理を記述できる。 | 3 | 後2 |
プロシージャ(または、関数、サブルーチンなど)の概念を理解し、これらを含むプログラムを記述できる。 | 3 | 後7,後8 |
与えられた問題に対して、それを解決するためのソースプログラムを記述できる。 | 3 | 後9,後10,後11,後12,後13,後14,後15 |
与えられたソースプログラムを解析し、プログラムの動作を予測することができる。 | 3 | 後1,後3 |
ソフトウェア生成に必要なツールを使い、ソースプログラムをロードモジュールに変換して実行できる。 | 3 | 後1,後3 |
ソフトウェア開発に利用する標準的なツールの種類と機能を説明できる。 | 3 | 後1 |
要求仕様に従って、いずれかの手法により動作するプログラムを設計することができる。 | 2 | 後3 |
要求仕様に従って、いずれかの手法により動作するプログラムを実装することができる。 | 3 | 後3,後14 |
情報数学・情報理論 | コンピュータ上での数値の表現方法が誤差に関係することを説明できる。 | 4 | 後3,後4 |
コンピュータ上で数値計算を行う際に発生する誤差の影響を説明できる。 | 4 | 後3,後4 |
コンピュータ向けの主要な数値計算アルゴリズムの概要や特徴を説明できる。 | 3 | 後12,後13,後14,後15 |
その他の学習内容 | 少なくとも一つの具体的なコンピュータシステムについて、起動・終了やファイル操作など、基本的操作が行える。 | 4 | 後1,後2,後14 |