情報工学Ⅱ (第9回) 月曜4限 担当:北川 晃.

Slides:



Advertisements
Similar presentations
情報基礎実習 I (第6回) 木曜4・5限 担当:北川 晃. Stream クラスを用いたファイルの接続 … Dim インスタンス名 As New IO.StreamReader( _ “ ファイルの絶対パス ”, _ System.Text.Encoding.Default) … s = インスタンス名.
Advertisements

情報基礎実習 I (第3回) 木曜4・5限 担当:北川 晃. プログラミング演習 2 つの数を入力し,「計算」ボタンをクリック すると,それぞれの計算結果を次のように 表示するプログラムを作れ.
5.制御構造と配列 場合分け( If Then Else , Select Case ) 繰返し( Do While ) 繰返しその2( For Next )
放射線の計算や測定における統計誤 差 「平均の誤差」とその応用( 1H) 2 項分布、ポアソン分布、ガウス分布 ( 1H ) 最小二乗法( 1H )
プログラミング演習( 2 組) 第 9 回
数理統計学  第9回 西山.
数理統計学(第ニ回) 期待値と分散 浜田知久馬 数理統計学第2回.
数理統計学(第四回) 分散の性質と重要な法則
情報基礎実習I (第4回) 木曜4・5限 担当:北川 晃.
プログラミング言語としてのR 情報知能学科 白井 英俊.
VBAを通して プログラム言語の基本構造を学ぶ
情報基礎実習I (第7回) 木曜4・5限 担当:北川 晃.
VBA H106077 寺沢友宏.
情報基礎A 第13週 VBAプログラミング VBAの基本文法7・実際のデータ処理
情報基礎実習I (第5回) 木曜4・5限 担当:北川 晃.
情報基礎A 第10週 プログラミング入門 VBAの基本文法2 データ型・If ~Then~Else
プログラミング入門2 第6回 関数(2) 芝浦工業大学情報工学科 青木 義満
C言語 配列 2016年 吉田研究室.
流れ(3時間分) 1 ちらばりは必要か? 2 分散・標準偏差の意味 3 計算演習(例題と問題) 4 実験1(きれいな山型の性質を知ろう)
放射線の計算や測定における統計誤差 「平均の誤差」とその応用(1H) 2項分布、ポアソン分布、ガウス分布(1H) 最小二乗法(1H)
情報基礎A 第7週 プログラミング入門 VBAの基本文法2 データ型・If ~Then~Else
問題 1 フィボナッチ数列 xn は次で定義される。
確率・統計輪講資料 6-5 適合度と独立性の検定 6-6 最小2乗法と相関係数の推定・検定 M1 西澤.
情報基礎A 第14週プログラミング 実際のデータ処理での応用(2)
4.2 連立非線形方程式 (1)繰返し法による方法
情報基礎A 第11週 プログラミング入門 VBAの基本文法3 配列・For~Next
情報基礎実習I (第1回) 木曜4・5限 担当:北川 晃.
関数 関数とスタック.
テキストボックス、チェックボックス×2、コマンドボタンを配置する。 コマンドボタンに機能を与える
精密工学科プログラミング基礎Ⅱ 第3回資料 今回の授業で習得してほしいこと: 2次元配列の使い方 (前回の1次元配列の復習もします.)
実例で学ぶプログラミング VBAを用いて簡単なゲームを作ろう 徳山 豪 東北大学情報科学研究科 システム情報科学専攻 情報システム評価学分野.
本時の目標 「簡単なプログラム言語の意味を理解し、マクロ機能を使って簡単なプログラムを作ることができる。」
情報工学Ⅱ (第9回) 月曜4限 担当:北川 晃.
電気・機械・情報概論 VBAプログラミング 第2回 2018年7月2日
情報実習I (第6回) 木曜4・5限 担当:北川 晃.
地域情報学演習 VBAプログラミング 第3回 2017年10月24日
情報実習I (第7回) 木曜4・5限 担当:北川 晃.
復習 前回の関数のまとめ(1) 関数はmain()関数または他の関数から呼び出されて実行される.
プログラミング言語論 第五回 理工学部 情報システム工学科 新田直也.
地域情報学 C言語プログラミング 第5回 ポインタ、関数、ファイル入出力 2017年11月17日
情報基礎Ⅱ (第11回) 月曜4限 担当:北川 晃.
情報基礎Ⅱ (第5回) 月曜4限 担当:北川 晃.
情報実習I (第1回) 木曜4・5限 担当:北川 晃.
プログラミング言語論 第六回 理工学部 情報システム工学科 新田直也.
Cプログラミング演習資料.
情報とコンピュータ 静岡大学工学部 安藤和敏
先週の復習 2重ループを用いた、 表の記入と読み込み.
プログラミング序論演習.
基礎プログラミング演習 第6回.
最尤推定・最尤法 明治大学 理工学部 応用化学科 データ化学工学研究室 金子 弘昌.
IF文 START もしも宝くじが当たったら 就職活動する 就職活動しない YES END NO.
第6回レポート解説 条件1 条件2 条件3 月の入力 月、日、曜日の表示 日の入力 曜日の入力
情報基礎Ⅱ (第1回) 月曜4限 担当:北川 晃.
プログラミング入門2 第6回 関数 情報工学科 篠埜 功.
プログラミング入門2 第13回、14回 総合演習 情報工学科 篠埜 功.
情報工学Ⅱ (第2回) 月曜4限 担当:北川 晃.
オブジェクト指向言語論 第五回 知能情報学部 新田直也.
精密工学科プログラミング基礎 第7回資料 (11/27実施)
情報実習I (第6回) 木曜4・5限 担当:北川 晃.
情報工学Ⅱ (第8回) 月曜4限 担当:北川 晃.
情報実習I (第1回) 木曜4・5限 担当:北川 晃.
プログラミング入門2 第6回 関数 情報工学科 篠埜 功.
精密工学科プログラミング基礎Ⅱ 第2回資料 今回の授業で習得してほしいこと: 配列の使い方 (今回は1次元,次回は2次元をやります.)
Cプログラミング演習資料.
場合分け(If Then Else,Select Case) 繰返し(Do While) 繰返しその2(For Next)
プログラミング入門2 第3回 条件分岐(2) 繰り返し文 篠埜 功.
計算技術研究会 第5回 C言語勉強会 関数(function)を使う
プログラミング言語によっては,複素数が使えない。
情報基礎A 第14週プログラミング 実際のデータ処理での応用(2)
5.2 グレゴリー・ニュートン(Gregory-Newton)の補間式 (1)導入
Presentation transcript:

情報工学Ⅱ (第9回) 月曜4限 担当:北川 晃

データの統計処理に関する諸問題 データの分布の様子 データの期待値(平均値) データの分散,標準偏差(ばらつきの度合い) 回帰直線へのフィッティング(最小二乗法) 一様乱数の発生 正規乱数への変換 モンテカルロシミュレーション

例題:度数分布 n個のデータx1, x2, …, xnが与えられている. ‘normal_data.txt’よりデータを逐次読み込んで, 次の区分に従って度数分布を調べよ. x<-2.25 -2.25≦x<-1.75 -1.75≦x<-1.25 -1.25≦x<-0.75 -0.75≦x<-0.25 -0.25≦x< 0.25 0.25≦x< 0.75 0.75≦x< 1.25 1.25≦x< 1.75 1.75≦x< 2.25 2.25≦x

度数分布:考え方 それぞれ領域を以下のように定める. x<-2.25:領域0 -2.25≦x<-1.75:領域1 データを読み込んで,領域iに当てはまるとき, c(i)の値を1増やす. p(i)=c(i)/nの値を計算し,書き出す. x<-2.25:領域0 -2.25≦x<-1.75:領域1 -1.75≦x<-1.25:領域2 … :… 1.75≦x< 2.25:領域9 2.25≦x :領域10

出力例:度数分布

度数分布:プログラム例 読み込んだ値がどの領域に属するか判定 Dim n, c(100) As Integer, x, p(100) As Single Dim ReadText As New IO.StreamReader( _ "D:\…\normal_data.txt", System.Text.Encoding.Default) For i As Integer = 0 To 10 c(i) = 0 Next n = ReadText.ReadLine() For i As Integer = 1 To n x = ReadText.ReadLine() If x < -2.25 Then c(0) = c(0) + 1 ElseIf -2.25 <= x And x < -1.75 Then c(1) = c(1) + 1 ElseIf -1.75 <= x And x < -1.25 Then c(2) = c(2) + 1 読み込んだ値がどの領域に属するか判定

度数分布:プログラム例(続き) 読み込んだ値がどの領域に属するか判定 ElseIf -1.25 <= x And x < -0.75 Then c(3) = c(3) + 1 ElseIf -0.75 <= x And x < -0.25 Then c(4) = c(4) + 1 ElseIf -0.25 <= x And x < 0.25 Then c(5) = c(5) + 1 ElseIf 0.25 <= x And x < 0.75 Then c(6) = c(6) + 1 ElseIf 0.75 <= x And x < 1.25 Then c(7) = c(7) + 1 ElseIf 1.25 <= x And x < 1.75 Then c(8) = c(8) + 1 ElseIf 1.75 <= x And x < 2.25 Then c(9) = c(9) + 1 Else c(10) = c(10) + 1 End If Next 読み込んだ値がどの領域に属するか判定

度数分布:プログラム例(続き) 各領域の規格化度数を計算 For i As Integer = 0 To 10 p(i) = c(i) / n Console.WriteLine("p({0})={1}", i, p(i)) Next

出力例:度数分布(エクセルによる表示) 釣り鐘型(正規分布)

平均値と標準偏差 平均値: 標準偏差: n個のデータx1, x2, …, xnが与えられている. データを逐次読み込んで,その平均値と 標準偏差を求めよ. 平均値: 標準偏差:

平均値と標準偏差:具体例 (i) N≧2のとき :平均値 :標準偏差

プログラミング演習 外部データ’normal_data.txt’よりデータ点数および各データを読み込んで,それらの平均値を計算するプログラムを作れ. ‘normal_data.txt’を読み込みファイルとして接続する. データ点数を読み込み,nに代入する. すべてのデータを配列a(i)に代入する. すべてのデータの和sを計算する. 平均値aveを計算し,表示する.

出力例:平均値の計算

プログラム例:平均値の計算 データ点数の読み込み データを配列へ読み込む データの和の計算 平均値の計算 Dim a(10000), ave As Single, s As Single = 0, n As Integer Dim ReadText As New IO.StreamReader( _ "D:\…\normal_data.txt", System.Text.Encoding.Default) n = ReadText.ReadLine() For i As Integer = 1 To n a(i) = ReadText.ReadLine() Next s = s + a(i) ave = s / n Console.WriteLine("平均はE={0,8}", ave) ReadText.Close() データ点数の読み込み データを配列へ読み込む データの和の計算 平均値の計算

プログラミング演習 外部データ’normal_data.txt’よりデータ点数および各データを読み込んで,それらの平均値を計算するプログラムを作れ. 上記のプログラムをFunctionプロシージャに書き直し,平均値を計算するプログラムを作れ.

例題:平均値を求める関数副プログラム データ点数nとa(i) (i=1,…,n)を引数として,それらの 平均値を返す関数副プログラムを作れ. 関数プロシージャの引数には,配列を取ることも可能. 配列 Sub Main() Dim a(10), ave As Single, n As Integer … ave = ave_func(n,a) End Sub Function ave_func(n,a) Return ave End Function 配列 配列

平均値を求める関数副プログラム:プログラム例 Sub Main() Dim a(10000), ave As Single, n As Integer Dim ReadText As New IO.StreamReader( _ "D:\…\normal_data.txt", System.Text.Encoding.Default) n = ReadText.ReadLine() For i As Integer = 1 To n a(i) = ReadText.ReadLine() Next ReadText.Close() ave = ave_func(n, a) Console.WriteLine("平均はE={0,8}", ave) End Sub

平均値を求める関数副プログラム:プログラム例 Function ave_func(n, a) Dim s As Single = 0, ave As Single For i As Integer = 1 To n s = s + a(i) Next ave = s / n Return ave End Function 関数副プロシージャで, 以下のものは宣言不要 共通に宣言した変数 関数の仮引数

プログラミング演習 外部データ’normal_data.txt’よりデータ点数および各データを読み込んで,それらの平均値を計算するプログラムを作れ. 上記のプログラムをFunctionプロシージャに書き直し,平均値を計算するプログラムを作れ. さらに標準偏差を計算するプログラムを,Functionプロシージャを用いて作れ.

平均値を求める関数副プログラム:プログラム例 Sub Main() Dim a(10000), ave, sd As Single, n As Integer Dim ReadText As New IO.StreamReader( _ "D:\…\normal_data.txt", System.Text.Encoding.Default) n = ReadText.ReadLine() For i As Integer = 1 To n a(i) = ReadText.ReadLine() Next ReadText.Close() ave = ave_func(n, a) sd = sd_func(n, a, ave) Console.WriteLine("平均はE={0,8}", ave) Console.WriteLine(“標準偏差はσ={0,8}", sd) End Sub

平均値を求める関数副プログラム:プログラム例 Function ave_func(n, a) … Return ave End Function Function sd_func(a, ave, n) Dim s2 As Single = 0.0 Dim var, sd As Single For i As Integer = 1 To n s2 = s2 + a(i) ^ 2 Next var = s2 / n - ave ^ 2 sd = Math.Sqrt(var) Return sd

プログラミング演習 外部データ’normal_data.txt’よりデータ点数および各データを読み込んで,それらの平均値および標準偏差を計算するサブルーチン・プログラムを作れ.

Subプロシージャとは 主プログラムの一部を外部の副プログラムに移す 繰り返し同じ記述をする場合などに有効 Functionプロシージャとは異なり, 主プログラムに値は返さない 主プログラムと変数のやりとりをすることもできる プログラムで 共有する変数は,Mainよりも外で 宣言する Mainプログラムも, Subプロシージャの一つ Sub Main() … プロシージャ名(変数) End Sub Sub プロシージャ名(変数) 文ブロック 値は返さないので, “Return *”はいらない

平均値を求めるサブルーチン:プログラム例 Sub Main() Dim a(10000), ave, sd As Single Dim n As Integer Dim ReadText As New IO.StreamReader("d:\normal_data.txt", _ System.Text.Encoding.Default) n = ReadText.ReadLine() For i As Integer = 1 To n a(i) = ReadText.ReadLine() Next ReadText.Close() ave_sub(n,a) sd_sub(n,a,ave) End Sub サブルーチンは値を返さないので, サブルーチン内で結果を表示する (主プログラムの変数を書き換える ことはできる(’ByRef’))

平均値を求めるサブルーチン:プログラム例 Sub ave_sub(n,a) Dim s As Single = 0.0 For i As Integer = 1 To n s = s + a(i) Next ave = s / n Console.WriteLine("平均はE={0,8}", ave) End Sub Sub sd_sub(n,a,ave) Dim s2 As Single = 0.0, var As Single s2 = s2 + a(i) ^ 2 var = s2 / n - ave ^ 2 sd = Math.Sqrt(var) Console.WriteLine("標準偏差はσ={0,8}", sd) サブルーチンは,プログラムの 一部を外部に分割. 値を返さない.

平均値を求めるサブルーチン:プログラム例 Dim a(10000), ave, sd As Single Sub Main() Dim n As Integer Dim ReadText As New IO.StreamReader("d:\normal_data.txt", _ System.Text.Encoding.Default) n = ReadText.ReadLine() For i As Integer = 1 To n a(i) = ReadText.ReadLine() Next ReadText.Close() ave_sub(n) sd_sub(n) Console.WriteLine("平均はE={0,8}", ave) Console.WriteLine("標準偏差はσ={0,8}", sd) End Sub 主プログラムの外で変数を宣言する 主プログラムの変数を 書き換えているわけではない (サブルーチンで計算した 値が使える)

平均値を求めるサブルーチン:プログラム例 Sub ave_sub(n) Dim s As Single = 0.0 For i As Integer = 1 To n s = s + a(i) Next ave = s / n End Sub Sub sd_sub(n) Dim s2 As Single = 0.0, var As Single s2 = s2 + a(i) ^ 2 var = s2 / n - ave ^ 2 sd = Math.Sqrt(var)