5 - iMetrics.co.jp

第5回 数とプログラミング 2016. 9. 11
数学の言葉とアルゴリズムで科学する力を子供たちへ
⬜ 循環小数の秘密、- 数は有理数で近似できるか?、
① 電卓で有理数と無理数の区別ができる、できない? (約 10分)
1.
4
1
4
2
1
3
5
6
2
1.
4
7
0
5
8
8
2
5
3
図は、鏡の国のアリスから
② エクセルを使い、分母が7, 11, 13の時の原始根の表を完成する (約 20分)
⬜ c言語プログラミング例題 2題 例1. 正多面体でオイラーの法則を計算する (はじめてのC言語体験)
(約 10分)
例2. ユークリッド互除法 (約 10分)
例3. エキスポセンターのH2ロケットの高さを測ろう (約 10分)
例4. 指定された年月日の曜日を計算する ( mod 7 ) (約 20分)
⬜ c言語プログラミング演習 選択3題 1. 国際情報オリンピア2014 の予選問題 (約 30分)
2. 水ロケットの飛行距離・飛行時間の計算 (約 30分)
3. 日出・日没時間の計算 (約 30分)
C言語演習3題 基礎知識 http://imetrics.co.jp/mathematics/c-language.pdf
1. 循環小数の秘密
① まず電卓に、”2”, “√ “と入力して結果を表示する
√2 = 1.41421356 2373095. . . . これは無理数だ!
次に、25を17で割ると1.470588235294118…が表示されるが、これは有理数だ
-->
25 / 17 = 1.470588235294118…
99 / 70 = 1.414285714285714…
47321 / 33461 = 1.414213562057320…
円周率 π = 3.14159265358979. . .も無理数だが、
-->
22 / 7 = 3.142857 142857…
223 / 71 = 3.140845070422535…
355 / 113 = 3.141592920353982…
245850922 / 78256779 = 3.141592653589793…
というように、数は有理数でいくらでも近似できそうだ!
でも、数だけ見ると、有理数か無理数かの区別はつかない. . . . .
② 繰り返し(循環)が現れる小数は、有理数だ!
1 / 3 = 0.33333333. . .
1 / 7 = 0.142857 142857 . . .
1 / 3 x 3= 0.999999999. . . . = 1
(6桁)
2 / 7 = 0.285714 285714 . . . .
(〃)
3 / 7 = 0.428571 428571 . . . .
(〃)
4 / 7 = 0.571428 571428 . . .
(〃)
4 / 11 = 0.36 36 36 36. . . .
(2桁)
1 / 13 = 0.076923 076923. . . (6桁)
1 / 17 = 0.0588235294117647 0588235294117647 058823 . . . (16桁)
25 / 17 = 1.4705882352941178 4705882352941178 47. . . . . . . . (16桁)
その繰り返しの長さ(桁数)はどうして決まるのか? 原始根が決めている
問題1-1: F7, F11, F13の原始根を、エクセルで計算しなさい
・循環小数解答編 http://imetrics.co.jp/mathematics/RecurringDecimal.pdf
3. c言語プログラミング演習3題
問題 3-1: IOI2014予選問題(c言語)
(約 20分)
JOI 君が住んでいる地域には水道会社が X 社と Y 社の 2 つある.2 つの会社の 1 ヶ月の水道料
金は,1 ヶ月の水道の使用量に応じて次のように決まる.
X 社: 1 リットル あたり A 円かかる.
Y 社: 基本料金は B 円である.使用量が C リットル以下ならば,料金は基本料金 B 円のみが
かかる.使用量が C リットルを超えると基本料金 B 円に加えて追加料金がかかる.追加料金は
使用量が C リットルを 1 リットル超えるごとに D 円である.
JOI 君の家では 1 ヶ月の水道の使用量が P リットルである.
水道料金ができるだけ安くなるように水道会社を選ぶとき,JOI 君の家の 1 ヶ月の水道料金を
求めよ.
入力は 5 行からなり,1 行に 1 つずつ整数が書かれている.
1 行目には X 社の 1 リットルあたりの料金 A が書かれている.
2 行目には Y 社の基本料金 B が書かれている.
3 行目には Y 社の料金が基本料金のみになる使用量の上限 C が書かれている.
4 行目には Y 社の 1 リットルあたりの追加料金 D が書かれている.
5 行目には JOI 君の家の 1 ヶ月の水道の使用量 P が書かれている.
書かれている整数 A, B, C, D, P はすべて 1 以上 10000 以下である.
・IOI2024予選問題の解説 http://imetrics.co.jp/mathematics/IOI2014_elucidation.pdf
・IOI2014問題解答編 http://imetrics.co.jp/mathematics/IOI2014.pdf
問題 3-2: 水ロケットの最大飛行到達距離と飛行時間を(微分方程式を使わずに)解く (c言語)
(約30分)
500 ml ペットボトル65g、水を約200ml, 空気圧を3気圧
初速度=20 m/s, 発射角=45度、重力加速度=9.8 m/s^2
<変数の定義>
#include <math.h>
/* 数学ライブラリ */
#define g 9.8
/* m/s^2 重力加速度のこと */
#define PI 3.141592653589793
/* 円周率 π*/
int V0;
/* 初速度 */
int a;`
/* 発射角度 */
double t;
/* 飛行時間 */
double D;
/* 飛行距離 */
<計算式>
/* 飛行時間 t 2 V0 sin θ /g */
t = 2*V0* sin(a)/g;
/* t時間後のx, y方向の変位は、x = Vt cos θ, y = Vt sin θ - 1/2 g t*2 */
D = (V0*V0/g)*sin(2*a);
< 計算結果の表示 >
例: printf(“\n発射角度 = %d”,a);
printf("\n到達距離 = %.2f",D);
・水ロケットの性能計算 http://imetrics.co.jp/academy/水ロケットの性能計算書.pdf
・水ロケット飛距離 C言語解答編 http://imetrics.co.jp/mathematics/WaterRocket.pdf
問題3-3 : 日出・日没時間を計算(c言語)
(30分)
日付、緯度、経度だけを入力条件にして、日出と日没の時間を求める.
日付(days)は、1月1日からのl通算日 Intで定義.
緯度経度は、a度b分c秒を 、a. 0000 + b / 60 + c / 3600 doubleで定義.
均時差(Et) は、太陽時 - 平均太陽時. 天球上を一定な速さで動くと考えた平均太陽と視太陽(真
太陽)との移動の差で、.単位は経度での角 度(分)で表示
太陽の南中時間(hour)、高度(CA)、太陽の赤緯(delta)、太陽の時角(H)、doubleで定義.
日出(Sunrise)・日没時間(Sunset)、doubleで定義.
Sunrise = (DEG(-H) + (9.0 - Et + 12.0) * 15.0 - DEG(L)) / 15.0
Sunset = (DEG( H) + (9.0 - Et + 12.0) * 15.0 - DEG(L)) / 15.0
・日出・日没の計算プログラミング (C言語) 解説編 http://imetrics.co.jp/mathematics/
CrossingTheMeridian.pdf
・日出・日没計算プログラム解答編 http://imetrics.co.jp/mathematics/Sunriseset.pdf