Excel 2
This presentation is the property of its rightful owner.
Sponsored Links
1 / 21

Excel との連携 2 PowerPoint PPT Presentation


  • 76 Views
  • Uploaded on
  • Presentation posted in: General

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

Download Presentation

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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Excel 2

Excelとの連携 2

実数列を生成する際の注意

数学関数の利用

Excel によるリサージュ図形描画

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);


14 1 1 csv

オプション

例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じゃない


Excel 2

実数列を生成するプログラム(悪い例)

/* 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のいいとこどり


Excel 2

実行結果(悪い例)

Z:\nyumon2>cl forflt1.c

...

Z:\nyumon2>forflt1

x = 0

x = 0.01

...

x = 0.999999

0.84 あたりから誤差が蓄積


Excel 2

実数列を生成するプログラム(よい例)

/* 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;

}


Excel 2

実行結果(よい例)

Z:\nyumon2>cl forflt2.c

...

Z:\nyumon2>forflt2

x = 0

x = 0.01

...

x = 1


Excel 2

オプション

数学関数の利用例

/* 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)を計算(ラジアン)


Excel 2

リサージュ図形を生成するプログラム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;

}

数字の組み合わせを変えてみると…

空白を入れておくと

負の数のときも揃う


Excel 2

コマンドプロンプトで実行

Z:\nyumon2>cl lissaje1.c

...

...

Z:\nyumon2>lissaje1 > lissaje1.csv


Excel

Excelによるリサージュ図形描画

  • CSVファイルをダブルクリックして、Excelを起動

  • Microsoft Excelブック(*.xls)形式で保存

  • プロットしたいデータ列を2列分選択

  • 「グラフウィザード」をクリック

  • 「散布図」を選択し、「形式(T)」でマーカーなしの折れ線グラフを選択

  • 「次へ>」を2回クリックし、「タイトルとラベル」タブを表示

  • 「X/数値軸(A)」に x、「Y/数値軸(V)」に yを記入

  • 「完了」をクリック

忘れない

うちに保存

最後に上書き保存


Excel1

Excelにおけるリサージュの修正

  • 必ずグラフエリアを選択した状態で行う

  • 「グラフ(C)」メニューの「グラフオプション(C)...」に よる変更

    • 「目盛線」タブでY軸の目盛線の削除

    • 「凡例」タブで凡例の削除

  • 右クリックでの「~書式設定(O)…」による変更

    • 「軸の書式設定(O)...」の「目盛」タブでX(Y)/数値軸との交点(C)変更

    • 「プロットエリアの書式設定(O)...」で領域の背景色削除


Excel 2

修正前と修正後


Excel 2

オプション

リサージュ図形を生成するプログラム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;

}


Excel 2

対数グラフに表示させる例

/* 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に必要

ノイズを加えている

(省略してもよい)


Excel 2

コマンドプロンプトで実行

Z:\nyumon2>cl sinc2.c

...

...

Z:\nyumon2>sinc2 > sinc2.csv


Excel2

Excel で対数グラフを描く

  • CSVファイルを開き、*.xls形式で保存

  • 「グラフウィザード」により「散布図」の折れ線 グラフを描く

  • X軸またはY軸の数値軸(目盛)を右クリック

  • 「軸の書式設定(O)...」をクリック

  • 「目盛」タブを選択

  • 下方の「対数目盛を表示する(L)」をチェック

  • 「 OK 」をクリック


Excel3

Excel における対数グラフの修正

  • 「グラフオプション(O)…」で目盛線、補助目盛線を描く

  • 補助目盛線を右クリックして「目盛線の書式設定(O)...」を開き、「パターン」タブで線スタイルを点線にする

  • X軸またはY軸の数値軸(目盛)を右クリックして「軸の書式設定(O)...」を開き、「目盛」タブ内でX(Y)/数値軸との交点(C)を調節する

  • 「目盛」タブの最大値、最小値を調節する


Excel 2

修正前と修正後


Excel 2

スキルアップタイム

  • x を対数軸上で等間隔になるように生成し、

    y= 1/(1+x2)を計算してx, y を標準出力するプログラム lorentz.cを作成せよ。

  • lorentz.cをコンパイルし、その実行結果を lorentz.csv に保存せよ。

  • 上記の結果を両対数グラフにせよ。


Excel 2

ヒント

  • 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


  • Login