内容 ◆ 分散(標準偏差)を、メモリ上に「標本値」を記憶させることなく求めます。 |
●PDFを表示 ●コードをダウンロード ●登録モニタをダウンロード |
◆ 初期化ルーチン このサンプルの実験用の値を定義します。 ![]() ・乱数の発生範囲は1〜20。それに50を加算します。 ・初期起動時は[Element]が"0"なので、標本数は10個発生します。 ◆ 乱数発生ルーチン このサンプルの実験用の乱数を発生させます。 ![]() ・「基本編」ソートで使用したルーチンをそのまま使っているので、"0"は生成されません。 ・発生した数値に[OFSET]("50"を定義)を加算して[FM0]から[Element]分(10個)作ります。 |
◆ テスト操作![]() ・PLC起動時に初期乱数をセットしますが、[乱数生成]をTrueにする(デバイスをダブルクリック)すると、違った乱数をセットします。 ![]() ・[Start]をTrueにする(デバイスをダブルクリック)するとテストを開始します。 ![]() ・標準偏差は10倍されて整数化しています。必要に応じて小数部の桁を調整してください。 ・「サブルーチン10」は、インクリメンタルに「分散」と「標準偏差」を演算するルーチンです。 ・1個目〜の結果はEM0から「分散」。EM500〜「標準偏差」が順次代入されます。 ・「サブルーチン11」はメモリ上にある標本の値から、いちいち計算します。 ・1個目〜の結果はDM0から「分散」。DM500〜「標準偏差」が順次代入されます。 ・割算やべき乗計算を行うので「浮動小数点」または「倍精度浮動小数点」で演算してください。 ● インクリメンタルの計算(サブルーチン10) ![]() ● 蓄積した標本からの計算(サブルーチン11) ![]() ![]() ・上 の画面にある登録モニタウィンドウを用意しています。 ●登録モニタをダウンロード からダウンロードしてください。 ・ シミュレートモードで実行してください。 ・確認用に「サブルーチン11」で、( 標本値 - 平均値 )の自乗の値を、@FM0から代入しています。 |
◆
なぜインクリメンタルに計算できるのか![]() ・上記の様な理由で標本データを全て保持していなくても、各標本データの総和と、自乗の総和、標本数を把握していれば、分散が導きだせます。 ・如何でしたか。これで、メモリの節約とMPUパワーを無駄に使わなくて済みます。 |
●PDFを表示 ●コードをダウンロード ●登録モニタをダウンロード |