実数列を生成する際の注意 数学関数の利用 Excel によるリサージュ図形描画 Excel による対数グラフ描画

Slides:



Advertisements
Similar presentations
JMP version5(以上) 日本語版のScripting Languageによる プログラミング
Advertisements

配列の宣言 配列要素の初期値 配列の上限 メモリ領域 多次元配列 配列の応用
初年次セミナー 第8回 データの入力.
プログラミング入門 電卓番外編 ~エクセルで関数表示~.
情報基礎演習B 後半第5回 担当 岩村 TA 谷本君.
初年次セミナー 第4回 整数と実数の取り扱い.
数理情報工学演習第一C プログラミング演習 (第3回 ) 2014/04/21
グラフ描画ソフト gnuplot を体験してみよう
コンピュータプラクティスⅠ グラフと表 水野嘉明
ファーストイヤー・セミナーⅡ 第8回 データの入力.
リダイレクト パイプ 標準入出力プログラム コマンド行引数 関数 system()
システムプログラミング 第5回 情報工学科 篠埜 功 ヒアドキュメント レポート課題 main関数の引数 usageメッセージ
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
16.3 関数と構造体 構造体ポインタ 地底探査ゲーム
第14章 ファイル操作 (コマンドプロンプト版)
第13回 プログラミングⅡ 第13回
Excelによる3-D/等高線グラフの描画 2変数関数の描画 Excel によるグレイスケールマップ風描画
Excelによる3-D/等高線グラフの描画 2変数関数の描画 Excel によるグレイスケールマップ風描画
基礎プログラミング (第五回) 担当者: 伊藤誠 (量子多体物理研究室) 内容: 1. 先週のおさらいと続き (実習)
理由:文字数より要素数の多い配列を用いた時に,文字列の最後を示すため
理由:文字数より要素数の多い配列を用いた時に,文字列の最後を示すため
初年次セミナー 第2回 文字の出力.
CSVファイルとは? CSVとは、Comma Separated Value(カンマで区切られた値)の頭文字をとったものです。つまり、CSVファイルとは、値(数値や文字等)をカンマ(,)で区切って書いたテキストファイルのことを指しています。 メリットは、異なるソフト間でデータの受け渡しをする時によく使われます。
グラフ描画ソフト gnuplot を体験してみよう
第2回 Microsoft Visual Studio C++ を使ってみよう
情報工学科 3年生対象 専門科目 システムプログラミング 第5回、第6回 ヒアドキュメント レポート課題 情報工学科 篠埜 功.
第10回:Microsoft Excel (2/2)
関数とポインタ 値呼び出しと参照呼び出し swapのいろいろ 関数引数 数値積分
関数と配列とポインタ 1次元配列 2次元配列 配列を使って結果を返す 演習問題
プログラミング応用 printfと変数.
フーリエ級数展開 ~矩形波について~ 長江 栞 中島 涼 中村 勇樹
リダイレクト パイプ 標準入出力プログラム コマンド行引数 関数 system()
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
前回の練習問題.
第14章 ファイル操作 (コマンドプロンプト版)
四則演算,変数 入力文,出力文,代入文, ライブラリ関数
復習 2次元配列 4列 j = 0 j = 1 j = 2 j = 3 i = 0 i = 1 i = 2 3行
関数の再帰呼び出しとは ハノイの塔 リダイレクト レポート課題
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
第14章 ファイル操作 14.1 ファイルへの書き込み 14.2 ファイルからの読み込み 14.3 ファイルへの追加書き込み
整数データと浮動小数データ.
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
実数列を生成する際の注意 数学関数の利用 Excel によるリサージュ図形描画 Excel による対数グラフ描画
第14章 ファイル操作 14.1 ファイルへの書き込み 14.2 ファイルからの読み込み 14.3 ファイルへの追加書き込み
第10回:Microsoft Excel (2/2)
C言語 はじめに 2016年 吉田研究室.
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
プログラミング序論演習.
x y 復習 変数とその種類 変数とは何か? →データ(数値)を入れておく箱 変数名 変数名とは何か?
復習 breakとcontinueの違い int i; for (i = 1; i <= 100; i++) { ・・・処理1・・・・
復習 Cにおけるループからの脱出と制御 break ループを強制終了する.if文と組み合わせて利用するのが一般的. continue
Excelによる3-D/等高線グラフの描画 2変数関数の描画 Excel によるグレイスケールマップ風描画
11.1 標準ライブラリ関数 11.2 関数呼び出しのオーバーヘッド 11.3 大域変数 11.4 プロトタイプ宣言 11.5 関数引数
復習 breakとcontinueの違い int i; for (i = 1; i <= 100; i++) { ・・・処理1・・・・
精密工学科プログラミング基礎 第7回資料 (11/27実施)
標準入出力、変数、演算子、エスケープシーケンス
知能情報工学演習I 第8回(後半第2回) 課題の回答
cp-3. 計算 (C プログラミング演習,Visual Studio 2019 対応)
Cp-1. Microsoft Visual Studio 2019 C++ の使い方 (C プログラミング演習,Visual Studio 2019 対応) 金子邦彦.
精密工学科プログラミング基礎Ⅱ 第2回資料 今回の授業で習得してほしいこと: 配列の使い方 (今回は1次元,次回は2次元をやります.)
四則演算,変数 入力文,出力文,代入文, ライブラリ関数
コンピュータープログラミング (C言語)(10) 1.ファイル入出力
プログラミング入門2 第5回 配列 変数宣言、初期化について
printf・scanf・変数・四則演算
第14章 ファイル操作 14.1 ファイルへの書き込み 14.2 ファイルからの読み込み 14.3 ファイルへの追加書き込み
知能情報工学演習I 第10回( C言語第4回) 課題の回答
プログラミング演習I 補講用課題
第1章 文字の表示と計算 printfと演算子をやります.
= 55 課題6-1 #define _CRT_SECURE_NO_WARNINGS
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
Presentation transcript:

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

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

実数列を生成するプログラム(悪い例) /* 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 のいいとこどり

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

実数列を生成するプログラム(よい例) /* 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;

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

数学関数の利用例 /* pi.c */ #include <stdio.h> #include <math.h> オプション /* 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) を計算(ラジアン)

リサージュ図形を生成するプログラム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; 数字の組み合わせを変えてみると… 空白を入れておくと 負の数のときも揃う

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

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

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

修正前と修正後

リサージュ図形を生成するプログラム2 /* Lissaje2.c */ #include <stdio.h> オプション リサージュ図形を生成するプログラム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;

対数グラフに表示させる例 /* 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に必要 ノイズを加えている (省略してもよい)

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

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

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

修正前と修正後

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

ヒント x を等比数列にする (x = a ri , 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) or r = pow(10, 1.0/N) x = xmin*pow(r,i) pow(x,y): べき乗関数 xy