実数列を生成する際の注意 数学関数の利用 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回) 岩村雅一
第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実施)
実数列を生成する際の注意 数学関数の利用 Excel によるリサージュ図形描画 Excel による対数グラフ描画
標準入出力、変数、演算子、エスケープシーケンス
知能情報工学演習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