2020年度情報処理演習(2年,前期/水曜・3限)

2020年度情報処理演習(2年,前期・水・3限)の講義に関するページです。

7/15 第10回 並び替え,記述統計の基礎

講義スライド

課題(2020/07/15)

  1. 0~1の範囲の15個の一様な実数の乱数を生成し,小さい順に並び替えるプログラムを作成する。
  2. 0~1の範囲の15個の一様な実数の乱数を生成し,15個の実数を母集団としたとき,その平均値,中央値,最小値,最大値,分散,標準偏差を求めるプログラムを作成する。

7/8 第9回 サブルーチン副プログラム SUBROUTINE

講義スライド

課題(2020/07/08)

  1. 極座標から直交座標への変換プログラムを,サブルーチンを用いて作成する。

7/1 第8回 関数副プログラム FUNCTION

講義スライド

課題(2020/07/01)

  1. 異なるm個の中からn個とった組み合わせ総数mCnを計算するプログラムを副プログラムを用いて作成する。
  2. 3次元ベクトルのスカラ三重積,ベクトル三重積を求めるプログラムを副プログラムを用いて作成する。

6/24 第7回 多次元配列

講義スライド

課題(2020/06/24)

  1. 3元連立1次方程式の解をガウスの消去法で求めるプログラムを作成する。

6/17 第6回 配列,一様乱数

講義スライド

課題(2020/06/17)

  1. 2つのベクトルu = (1.2, 3.5),v = (4.1, 2.6)の和,差,積,商,内積を求めるプログラムを作成する。
  2. 1から100までの整数の一様乱数を,配列を用いて20個生成し,その最大値と最小値を求めるプログラムを作成する。ただし,組み込み関数MAX, MINは用いないこと。

6/10 第5回 繰り返し,フラグ

講義スライド

課題(2020/06/10)

  1. 正の整数Nまでの素数の個数を求めるプログラムを作成すること。N=1,000,000のときの素数の個数とそのときの最大の素数を求めよ。
  2. 2を1番目とした,n番目の素数を求めるプログラムを作成すること。n=300,000番目の素数を求めよ。

模範解答

  1. ソースコード(pdf)。
  2. ソースコード(pdf)。

6/3 第4回 数値解析の精度

講義スライド

課題(2020/06/03)

  1. 二次方程式を根の公式を使って求めるプログラム(kadai2_1.f90)を,4acが0に近い場合や判別式Dの値が0に近い場合においても,精度よい解が得られるようにプログラムを修正すること。
  2. ニュートン法を用いて,aの平方根を求めるプログラムを作成すること。2, 5, 16の平方根を示せ。有効数字は10桁以上。

模範解答

  1. ソースコード(pdf)
  2. ソースコード(pdf)。誤差の許容値を小さくすれば,より精度,すなわち有効数字の桁数が大きくなります。

5/27 第3回 繰り返し(DOループ)

講義スライド

課題(2020/05/27)

  1. フィボナッチ数列を用いて,n番目(n>2)のフィボナッチ数,ならびに黄金比の値を求めるプログラムを作成する。n=10,n=20のときのフィボナッチ数,黄金比を示すこと。
  2. 台形公式を用いて定積分の近似解を求めるプログラムを作成する。台形公式の分割数nが,n=100,n=1000,n=10000のときの定積分の近似解を示すこと。

模範解答

  1. ソースコード(pdf)。DOループの制御変数,Fibonacci数の変数は整数型で,黄金比を計算する場合には,real関数とすること。Fibonacci数は,n=2以降は,1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393, 196418, 317811, 514299, 832040, 1346269, 2178309, 3524578, 5702887, 9227465, 14930352, 24157817, 39088169, 63245986, 102334155, 165580141, 267914296, 433494437, 701408733, 1134903170, 1836311903, 2971215073, 4807526976, 7778742049, 12586269025,…と続いていきます。黄金比は0.5(SQRT(5)+1)なので,1.6180339887498948482…です。nが大きくなるにつれて,黄金比の精度が上がりますが,n=10で誤差は0.000386929926365,n=20で2.5583188×10E-8となります。
  2. ソースコード(pdf)。i=0もしくはi=nのときに,yの値に0.5を乗算するのですが,IF ELSE IF 構文を用いると実行速度が遅くなります。.OR.を用いて,IF (i==0 .OR. i==n) THENを用いるほうがよい。なお,実行環境によって異なりますが,n=10000の計算では,.OR.構文を用いると,0.033577s,IF ELSE IF構文を用いると,0.036184sとなります。ちなみに,0.5を乗算するのと,2で除算するのとでは,0.33577sと0.34499sと除算のほうが実行速度は落ちます。

5/20 第2回 論理式,選択構造(IF構文,CASE構文)

講義スライド

課題(20200520)

  1. 二次方程式を根の公式を使って求める。実根がある場合には,2つの実根を表示し,実根がない場合には,判別式の値と実根がないこと(”There are no real roots.”)を表示するプログラムを作成する。提出物:プログラム
  2. 名古屋市上下水道局の水道料金を計算する。水道メーターの前回の指示値と今回の指示値を入力し,今回の使用水量および水道料金を計算し,使用水量と水道料金(小数点以下は切り捨て)を表示する.提出物:プログラムと実行画面のスクリーンショット

模範解答

  1. ソースコード(pdf)
  2. ソースコード(pdf)。CASE構文では,想定した値とならなかった場合について,DEFAULTを用いることで,思わぬ計算ミスを防ぐことができます。

5/13 第1回 gfortranの実行環境整備,データ型,定数,変数,演算規則

講義スライド

課題(20200513)

  1. 「sample0513.f90」を実行する.提出物:なし
  2. 3.0+8/5と3+8.0/5の計算結果の違いをプログラムを作成し,実行し,演算優先規則と整数型,実数型を理解する.提出物:実行結果のスクリーンショット
  3. 摂氏温度を対応する華氏温度に変換するプログラムを作成する.0℃(32℉),100℃(212℉)でプログラムが正しく変換されることを確認する.提出物:プログラム

模範解答

  1. スクリーンショット 2020-05-21 22.19.39.png
  2. ソースコード(pdf)。3.0+8/5は,3.0+1で4.0となり,3+8.0/5は,3+1.6で,4.6となる。出力結果は,計算機により,4.6ではなく,4.59999990となる.
  3. ソースコード(pdf)。Farhenheit = 9/5 *Celsius +32の摂氏と華氏の変換式で,整数,実数,演算優先規則を正しく理解すること。

Farhenheit = 9/5 *Celsius +32 とすれば,正しく変換できない。9/5の演算結果は1.8ではなく整数の1となる.Farhenheit = 9*Celsius/5 +32 では,正しく変換できる。ソースコードを読みやすくするには,Farhenheit = 9./5. *Celsius +32. あるいは,Farhenheit = 1.8 *Celsius +32. と記述する.

Note: ideoneでは,read文を用いる場合,read文で読み込むデータを,コンパイルする前にあらかじめinput(#stdin)に入力することが必要.入力データが2つ以上の場合には,スペースで区切るか改行する.read文が2つ以上の場合には,改行すること.


本講義の概要

担当:平山 修久(減災連携研究センター)

講義時間:前期・水曜3限 13時00分~14時30分

教室:Zoom

課題の提出方法:NUCT

本演習の目的

  1. プログラムのアルゴリズムを理解する
  2. Fortranの文法を理解し,プログラムの読み書きができる
  3. 与えられた課題を解くためのアルゴリズムを考えることができる
  4. Fortranによるコンピューターでの数値解析(方程式,モンテカルロ法)ができる

第1回の講義までに,gfortranの実行環境を整備してください。

Windows

  1. gfortran – the GNU Fortran complier, part of GCCのwebsiteにアクセスし,DownloadからBinaries for Windows, Linux, MacOS and much more!のBinariesをクリックする。
  2. TDM GCCをクリックし,TDM GCCのwebsiteからgfortranをインストールする。tdm64-gcc-9.2.0.exeを保存し,実行する。インストール時に,「New Installation:Choose Components」の時に,gcc/fortran に必ずチェックをつけてインストールする。

macOS

  1. まず,Xcodeをインストールする。もし,macOSのバージョンにより最新のXcodeがインストールできない場合には,Apple Developerにサインインすることで,macOSのバージョンに合うXcodeを見つけることができる。
  2. command line toolsをインストールする。
  3. gfortran – the GNU Fortran complier, part of GCCのwebsiteにアクセスし,DownloadからBinaries for Windows, Linux, MacOS and much more!のBinariesをクリックする。
  4. macOSにあるhttps://github.com/fxcoudert/gfortran-for-macOS/releasesから自分のmacOSのバージョンのdmgファイルをダウンロードし,インストールする。

Windows, macOSでのgfortranの実行環境が構築できない場合

ideone.comでfortranが実行できます。本講義の課題は,ideoneで実行できることを確認しています。