lecture 7 1. 2....
TRANSCRIPT
Lecture 7
コンピュータその71
1. 配列とデータファイル2. 数値微分・数値積分3. 素数判定 (C & Matlab)
Tuesday, November 15, 16
ファイルからのデータを配列に入れてみよう
i. http://mmc01.es.hokudai.ac.jp/~eginder/Data/sensor.txt からsensor.txtをダウンロードする.ii. データの長さを求めよ.iii.データを配列に保存する.iv. データを微分して画面に表示せよ.
データを取得し,Cプログラムをセットアップする.
2
1.
Tuesday, November 15, 16
Black Boxmydata.dat
3
Tuesday, November 15, 16
#include <stdio.h> #include <stdlib.h> #include <math.h> #define NUMDATA 7 void readdata(double *arr){ int i; FILE *fp; fp = fopen("mydata.dat","r"); if (fp == NULL) { // report an error if unable to open the file. printf("Unable to open mydata.dat for reading.\n"); exit(0); // requires the stdlib.h header file } for(i=0;i<NUMDATA;i++){ // READ DATA FROM FILE fscanf(fp,"%lf",&arr[i]); } fclose(fp); } int main(void){ int i; double a[NUMDATA]; readdata(a); for(i=0;i<NUMDATA;i++){ // WRITE DATA TO SCREEN printf("%lf\n",a[i]); } return 0; }
データの数
exit(0) . . .
ファイルを開くr = “read”
数を一つずつ読み込むファイルを閉じる
配列を定義するreaddata()を呼ぶ
配列のデータを画面に表示する.
4
Black Box
Tuesday, November 15, 16
配列の復習
2.
a:
f(x)
1. 配列を作成.2. 配列にsensor.txtを格納する.3. 配列をGNUPLOTで表示する.4. 上のデータを関数として,[0,π] で数値積分しよう.但し, とする.
0 L
5
ヒント:
Z b
af(x)dx ⇡
N�1X
i=0
f(xi)(xi+1 � xi)
x0(= a), x1, x2, ..., xN (= b)
Riemann sums
�x = ⇡/121
Tuesday, November 15, 16
6
3.
素数判定
Pseudo code素数判定アルゴリズムを実行せよ.
Details
Tuesday, November 15, 16
7
素数判定(Matlab)
ループ中にbreak;を使うと,内側のループを直ちに抜けることができる.
isPrimeを1にセット
あるj<kで割り切れたら,isPrimeに0を代入(割り切れない場合なにもしない)
n = 50 n = input('Please input a positive integer:')a. b.5. 5.
ヒント:help rem
Tuesday, November 15, 16
8
素数判定(C言語)
ヒント:int n = 9;int m = 5;printf(“%d”,n%m)
Tuesday, November 15, 16
x
2 + y
2 = z
2x, y, z 2 Z
9
x,y,z をそれぞれ 1 から n まで個別に変化させて, ピタゴラス数になるかどうかを調べる。
1. n を int 型変数とし,自然数値を代入する.2. x,y,z を int 型変数として定義する.3. x,y,z それぞれを for 文により 1 から n まで変化させる.(a) x,y,z の組が,ピタゴラス数かどうか if 文で判定する.(b) ピタゴラス数であれば,printf により出力する.
ピタゴラス数(Pythagorean triples)
5.
Pseudo code
Tuesday, November 15, 16
10
ピタゴラス数(Pythagorean triples) 6. (C言語)
Tuesday, November 15, 16
11
ピタゴラス数(Pythagorean triples) 7. Matlab
ヒント:>> help fprintf
Tuesday, November 15, 16
12
エラトステネスの篩 (ふるい) (Sieve of Eratosthenes)
上のアルゴリズムを実行せよ.8.
Tuesday, November 15, 16
13
!
エラトステネスの篩 (ふるい) (Sieve of Eratosthenes)
Tuesday, November 15, 16