1 / 21

Excel との連携 2

Excel との連携 2. 実数列を生成する際の注意 数学関数の利用 Excel によるリサージュ図形描画 Excel による対数グラフ描画. 今日のポイント. 関数グラフ描画のためのテクニックを身につける. CSV ファイルとは ( 再掲 ). コンマ区切り ( Comma Separated Values ) 形式 のテキストファイル データをコンマ ( , ) で区切り、改行を用いて 2 次元的に配列 コンマを含むデータは 二重引用符 ( " ) でくくられる。. ファイル出力例.

alec
Télécharger la présentation

Excel との連携 2

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Excelとの連携 2 実数列を生成する際の注意 数学関数の利用 Excel によるリサージュ図形描画 Excel による対数グラフ描画 今日のポイント 関数グラフ描画のためのテクニックを身につける

  2. CSVファイルとは(再掲) • コンマ区切り(Comma Separated Values)形式のテキストファイル • データをコンマ(,)で区切り、改行を用いて2次元的に配列 • コンマを含むデータは二重引用符(")でくくられる。 ファイル出力例 fprintf(fp,"%f, %f, %f\n", a, b, sum); ファイル入力例 fscanf(fp,"%lf, %lf, %lf", &a, &b, &sum);

  3. オプション 例14.1.1 CSVファイルへの出力(コマンドプロンプトを使わない場合) /* ex14_1_1.c */ #include <stdio.h> int main(void) { double a, b, sum; FILE *fp; a = 2.345; b = 5.678; sum = a + b; fp=fopen("foo.csv","w"); fprintf(fp,"%f, %f, %f\n", a, b, sum); fclose(fp); return 0; } 教科書p.129参照 コンマがなければCSVじゃない

  4. 実数列を生成するプログラム(悪い例) /* forflt1.c */ #include <stdio.h> int main(void) { float x; // double にするとどうなる? for (x = 0; x <= 1; x += 0.01) { printf(" x = %g\n", x); } return 0; } %gは%fと%eのいいとこどり

  5. 実行結果(悪い例) Z:\nyumon2>cl forflt1.c ... Z:\nyumon2>forflt1 x = 0 x = 0.01 ... x = 0.999999 0.84 あたりから誤差が蓄積

  6. 実数列を生成するプログラム(よい例) /* forflt2.c */ #include <stdio.h> int main(void) { int i; float x; for (i = 0; i <= 100; i++) { x = i/100.0; // 100 にするとどうなる? // 100. では? printf(" x = %g\n", x); } return 0; }

  7. 実行結果(よい例) Z:\nyumon2>cl forflt2.c ... Z:\nyumon2>forflt2 x = 0 x = 0.01 ... x = 1

  8. オプション 数学関数の利用例 /* pi.c */ #include <stdio.h> #include <math.h> int main(void) { printf("PI = %.20g\n", 4.0*atan(1.0)); return 0; } 教科書pp.16~18参照 小数以下20桁 atan(x):arctan(x), すなわち tan-1(x)を計算(ラジアン)

  9. リサージュ図形を生成するプログラム1 /* Lissaje1.c */ #include <stdio.h> #include <math.h> int main(void) { int i; double th, x, y, PI=3.14159265358979; for (i = 0; i <= 200; i++) { th = PI*(i/100.0); x = cos(5*th); y = sin(7*th); printf("% .5f, % .5f\n", x, y); } return 0; } 数字の組み合わせを変えてみると… 空白を入れておくと 負の数のときも揃う

  10. コマンドプロンプトで実行 Z:\nyumon2>cl lissaje1.c ... ... Z:\nyumon2>lissaje1 > lissaje1.csv

  11. Excelによるリサージュ図形描画 • CSVファイルをダブルクリックして、Excelを起動 • Microsoft Excelブック(*.xls)形式で保存 • プロットしたいデータ列を2列分選択 • 「グラフウィザード」をクリック • 「散布図」を選択し、「形式(T)」でマーカーなしの折れ線グラフを選択 • 「次へ>」を2回クリックし、「タイトルとラベル」タブを表示 • 「X/数値軸(A)」に x、「Y/数値軸(V)」に yを記入 • 「完了」をクリック 忘れない うちに保存 最後に上書き保存

  12. Excelにおけるリサージュの修正 • 必ずグラフエリアを選択した状態で行う • 「グラフ(C)」メニューの「グラフオプション(C)...」に よる変更 • 「目盛線」タブでY軸の目盛線の削除 • 「凡例」タブで凡例の削除 • 右クリックでの「~書式設定(O)…」による変更 • 「軸の書式設定(O)...」の「目盛」タブでX(Y)/数値軸との交点(C)変更 • 「プロットエリアの書式設定(O)...」で領域の背景色削除

  13. 修正前と修正後

  14. オプション リサージュ図形を生成するプログラム2 /* Lissaje2.c */ #include <stdio.h> #include <math.h> int main(void) { int i; double th, x, y, PI=3.14159265358979; for (i = 0; i <= 200; i++) { th = PI*(i/100.0); x = (cos(5*th)+sin(7*th))/2; y = (sin(5*th)+cos(7*th))/2; printf("% .5f, % .5f\n", x, y); } return 0; }

  15. 対数グラフに表示させる例 /* sinc2.c */ #include <stdio.h> #include <stdlib.h> #include <math.h> int main(void) { int i; double x, y, PI=3.14159265358979; for (i = 1; i <= 300; i++) { x = i/10.; y = sin(PI*x)/(PI*x); y += (0.01*rand())/RAND_MAX; printf("%.5g, %.5g\n", x, y*y); } return 0; } RAND_MAXに必要 ノイズを加えている (省略してもよい)

  16. コマンドプロンプトで実行 Z:\nyumon2>cl sinc2.c ... ... Z:\nyumon2>sinc2 > sinc2.csv

  17. Excel で対数グラフを描く • CSVファイルを開き、*.xls形式で保存 • 「グラフウィザード」により「散布図」の折れ線 グラフを描く • X軸またはY軸の数値軸(目盛)を右クリック • 「軸の書式設定(O)...」をクリック • 「目盛」タブを選択 • 下方の「対数目盛を表示する(L)」をチェック • 「 OK 」をクリック

  18. Excel における対数グラフの修正 • 「グラフオプション(O)…」で目盛線、補助目盛線を描く • 補助目盛線を右クリックして「目盛線の書式設定(O)...」を開き、「パターン」タブで線スタイルを点線にする • X軸またはY軸の数値軸(目盛)を右クリックして「軸の書式設定(O)...」を開き、「目盛」タブ内でX(Y)/数値軸との交点(C)を調節する • 「目盛」タブの最大値、最小値を調節する

  19. 修正前と修正後

  20. スキルアップタイム • x を対数軸上で等間隔になるように生成し、 y= 1/(1+x2)を計算してx, y を標準出力するプログラム lorentz.cを作成せよ。 • lorentz.cをコンパイルし、その実行結果を lorentz.csv に保存せよ。 • 上記の結果を両対数グラフにせよ。

  21. ヒント • xを等比数列にする (x = ari, i = 0,1,2... ) • x の初項は xmin(= 0.1)、公比 rは (xmax/xmin)1/N(Nは総データ点数) または 101/N(Nは1桁あたりのデータ点数) • r = pow(xmax/xmin, 1.0/N) orr = pow(10, 1.0/N) • x = xmin*pow(r,i) pow(x,y):べき乗関数 xy

More Related