教材名 数値計算(C言語)
教材名2
教材ID 112
教材作成者名 長尾 孝一
教材作成日 1997-09-01
改訂情報
ジャンル名 高度教材
分野名 情報・通信系
業種名 情報サービス業
職務名 開発生産
職務構成名 プログラム開発
区分名 教材
職業名 機械技術者
 数値計算(C言語) 指導案


イ.使用機材・資材一覧
①テキスト
  1.ザ TURBO C (サイエンス社、戸川隼人著)、
  2.数値計算 (東京電機大出版、片桐重延著)
② 自作サブテキスト (表題:数値計算(C言語)、著者:長尾孝一 滋賀職能短大)
③ フロッピーディスク 1枚
内容:受講生にプログラム保存用に使ってもらう。Formatしておく。

ロ.訓練事前準備項目
BR>
① 配布するテキスト、サブテキスト、ディスクを人数分用意しておく。
② パソコンにC言語の開発環境を入れておく。
  1. ディレクトリー A:・Lsic86 およびA:・se3 を作り、そこにLsic86, と Se3のファイルを展開する。
  2. ディレクトリーA:・Lsic86・bin およびA:・se3にpathが通るように autoexec.bat を変更する。
  3. 必要ならば A:・Lsic86・bin・_Lcc を変更して、コンパイラーが動くように設定する。
  4. Cコンパイラーとエディターの起動を確認する。

ハ.訓練項目と訓練経過時間


  【1日目】


2h
2h
4h
C言語の復習
  1. 初歩の問題
  2. 条件処理、繰り返し処理
  3. 今までの応用プログラム (Taylor展開、Euclid互助法、素因数分解)

  【2日目】


4h



1h
4h
C言語の復習続き
  1. 配列
数値計算のC言語でのコーディング例
  1. Newton法で方程式を解く
  2. 行列の積と吐き出し法で逆行列を求める

  【3日目】


4h
1h
1h
1h
数値計算のC言語でのコーディング例
  1. 行列の積と吐き出し法で逆行列を求める続き
  2. ホーナー法で多項式の値を計算する
  3. Taylor展開で初等関数の値を計算する
  4. 多項式の組み立て除法

  【4日目】


2h
1h
1h
1h
数値計算のC言語でのコーディング例
  1. Lagrandre 補完公式
  2. Euler 法で微分方程式を解く
  3. Runge Kutta 法で微分方程式を解
  4. Simpson 法で定積分を計算する

ニ.指導展開法


  【1日目】
午前 受講生にこのセミナーで使用する Cコンパイラー、エディターの使い方を解説する。また、フロッピーディスクを配布する。 つぎに、C言語、及び数値解析についての経 験、理解等について質問をして、受講生のレベル等を判断しておく。
また、このセミナーでは前半ではテキスト「ザ TURBO C」にて数値計算に必要なC言語の理解を、後半ではテキスト「数値計算」にて数値計算の代表的なアルゴリズムを解説し、それをC 言語にてコーディングしてもらうコトを目標としていること 及びその演習として自作のサブテキスト(ここで提出の教材)を使う事を話し、テキスト及びサブテキストを配る。
次に、C言語の復習として、1 簡単なプログラム、2 条件処理、繰り返し処理について、テキスト ザ TURBO C を使って解説する。このセミナーでは 数値計算に必要なCの文法の部分のみが必要であるので、printf, scanf, for, if else, break, while、do while 文といった簡単な文の解説にとどめておく。
その後、自作サブテキストの練習問題のプログラムを作ってもらう。
午後 自作サブテキストの応用プログラムについて解説する。ここでは exp(x) をテイラー展開を使って求めるプログラム、Euclid 互助法で最大公約数を求めるプログラム、素因数分解を行うプログラムを書いてもらう。 まず、それぞれのプログラムについて、その数学的背景を黒板にて解説し、フローチャートを板書しそれからプログラミングをして頂く。ここで、プログラミングが早く終わった受講生には exp(x)では その精度をあげる工夫をプログラムに組み入れる(誤差の評価)、互助法では入力整数に0, や 負数が入ってきてもプログラムの動く工夫等のプログラムの改造をしてもらう。
また、LSIC-86 を使用する場合数学関数の使用にはoption 僕mathlib が必要であることを注意しておく。

  【2日目】
午前 配列についての解説をテキスト ザ TURBO C を使って行う。Fortran Basic と違い、C では配列の添え字が0 より始まり、int a[10] としても a[10] は定義されない事を注意する。 引き続き、配列を使った定石として、行列、ソート と言ったプログラミングで基本とされるパターンをこのテキストを使って解説する。次に、自作サブテキストに有るプログラミングを行ってもらう。プログラミングが早く終わった受講生にはquick, Merge 等の早いソートアルゴリズムについて解説し、ソートプログラムの改造を行ってもらう。
午後 引き続きはいれつのプログラミングを行ってもらう。(1時間程度)次に Newtonで方程式を解くアルゴリズムの解説をテキスト 数値計算を使って行う。そして、実習で そのCでのプログラムを作成してもらう。
また、行列の積、吐き出し法の解説を行う。ここでは行列の行と言う概念は英文の行と言う概念からきている事より、行とは横の並びであること、a[I][j] はI行j列の成分であることをまず注意しておく。

  【3日目】
午前 行列のプログラミングを行ってもらう。ここで、行列の積を求めるプログラムではそれが一般には三重ループとなることに注意をする。また、吐き出し法で逆行列を作るプログラムは自力では難しい場合が多いので、サブテキストを参照でやってもらうのが良いと思う。また、理解の早い受講生にはガウス-ザイデル法にて連立方程式を解くアルゴリズムを個別で解説する。
午後 ホーナー法で多項式の値を計算, taylor展開で初等関数の値の計算、多項式の組み立て除法 と言った項目についてテキスト数値計算 を使って アルゴリズムを解説し、それをCのプログラムにコーディングしてもらう。特に、Taylor 展開の項目では精度を上げる為の工夫について 理解の早い受講生にプログラムの改造をしてもらう。

  【4日目】
午前 Lagrandre 補完公式 、Euler 法での微分方程式の解法、Runge Kutta 法での微分方程式の解法、Simpson 法での定積分の計算 といった項目についてテキスト数値計算 を使って アルゴリズムを解説し、それをCのプログラムにコーディングしてもらう。
午後 セミナーもここで終わりであるので、それぞれの受講生のレベルに応じてプログラミングの目標を決めて プログラミングをやってもらう。ここで、理解の早い受講生からは以下のような質問が出た事を注意しておく。

(a) 線形計画法のアルゴリズムについて教えて欲しい。
(b) Lagrendre 補完を行う時に、プロットする点のx 座標をうまく
 取ると近似値が良くなる(Gauss)と教科書にあるが その理由は
 何か?

※上記以外の資料(「教材」と「実技関連説明書」など)は、 こちら(ユーザ名=ユーザIDとパスワードが必要です)。
ユーザ名とは会員登録時に発行されたユーザIDを指します。
ユーザ名とパスワードをお持ちでない方は教材作成支援情報メニュー一覧から会員登録を行って下さい。