フーリエ級数展開 ~矩形波について~ 長江 栞 中島 涼 中村 勇樹

Slides:



Advertisements
Similar presentations
情報処理演習 (9)グラフィックス システム科学領域 日浦 慎作.
Advertisements

プログラムのパタン演習 解説.
復習.
情報基礎演習B 後半第5回 担当 岩村 TA 谷本君.
数理情報工学演習第一C プログラミング演習 (第3回 ) 2014/04/21
プログラミング入門2 第7回 文字列 数学関数 ファイルの入出力 芝浦工業大学情報工学科 青木 義満
数個、数十個のデータ点から その特徴をつかむ
解答 1 複素数を構造体として定義し、二つの複素数の積(結果は複素数)を返す 関数 を定義せよ。
解析的には解が得られない 方程式を数値的に求める。 例:3次方程式
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
GRAPESで学ぶフーリエ級数 GRAPESで学ぶ フーリエ級数 立命館高等学校 早苗雅史.
情253 「ディジタルシステム設計 」 (2)modem2
16.3 関数と構造体 構造体ポインタ 地底探査ゲーム
プログラミング演習(2組) 第12回
第13回 プログラミングⅡ 第13回
基礎プログラミング (第五回) 担当者: 伊藤誠 (量子多体物理研究室) 内容: 1. 先週のおさらいと続き (実習)
問題 1 キーボードから入力した数の合計を計算するプログラムを 作成せよ。最初に、何個の数を入力するかその数を入力 するようにする。
数値解析シラバス C言語環境と数値解析の概要(1回) 方程式の根(1回) 連立一次方程式(2回) 補間と近似(2回) 数値積分(1回)
第7回 条件による繰り返し.
第2回 Microsoft Visual Studio C++ を使ってみよう
アーランの即時式モデル.
ニュートン法の解の計算 情報電子工学系学科 電気電子工学コース・情報通信システム工学コース
プログラムの制御構造 選択・繰り返し.
Cプログラミング演習 第6回 ファイル処理と配列.
プログラミング 2 ファイル処理.
プログラミング論 ファイル入出力
繰り返し計算 while文, for文.
Cプログラミング演習.
数値積分.
第10回関数 Ⅱ (ローカル変数とスコープ).
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第2回 ファイル処理 情報・知能工学系 山本一公
LU分解を用いた連立一次方程式.
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
知能情報工学演習I 第12回(後半第6回) 課題の回答
第7回 条件による繰り返し.
第10回 FIR回路とIIR回路.
第9回関数Ⅰ (簡単な関数の定義と利用) 戻り値.
プログラミング論 ファイル入出力
Cの実行モデル.
四則演算,変数 入力文,出力文,代入文, ライブラリ関数
関数の再帰呼び出しとは ハノイの塔 リダイレクト レポート課題
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
2分法のプログラム作成方法 2分法のプログラム(全体構成) プログラム作成要領 2分法のメイン関数(変数宣言)
第14章 ファイル操作 14.1 ファイルへの書き込み 14.2 ファイルからの読み込み 14.3 ファイルへの追加書き込み
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
疑似乱数, モンテカルロ法によるシミュレーション
実数列を生成する際の注意 数学関数の利用 Excel によるリサージュ図形描画 Excel による対数グラフ描画
Cプログラミング演習資料.
第14章 ファイル操作 14.1 ファイルへの書き込み 14.2 ファイルからの読み込み 14.3 ファイルへの追加書き込み
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
プログラミング序論演習.
フーリエ級数.
復習 Cにおけるループからの脱出と制御 break ループを強制終了する.if文と組み合わせて利用するのが一般的. continue
ファイルの読み込み, ファイルからのデータの取り出し, ファイルの書き出し
11.1 標準ライブラリ関数 11.2 関数呼び出しのオーバーヘッド 11.3 大域変数 11.4 プロトタイプ宣言 11.5 関数引数
精密工学科プログラミング基礎 第7回資料 (11/27実施)
ニュートン法による 非線型方程式の解.
実数列を生成する際の注意 数学関数の利用 Excel によるリサージュ図形描画 Excel による対数グラフ描画
cp-15. 疑似乱数とシミュレーション (C プログラミング演習,Visual Studio 2019 対応)
ファイル操作について (1).
cp-3. 計算 (C プログラミング演習,Visual Studio 2019 対応)
プログラミング入門2 第6回 関数 情報工学科 篠埜 功.
Cp-1. Microsoft Visual Studio 2019 C++ の使い方 (C プログラミング演習,Visual Studio 2019 対応) 金子邦彦.
精密工学科プログラミング基礎Ⅱ 第2回資料 今回の授業で習得してほしいこと: 配列の使い方 (今回は1次元,次回は2次元をやります.)
Cプログラミング演習資料.
四則演算,変数 入力文,出力文,代入文, ライブラリ関数
コンピュータープログラミング (C言語)(10) 1.ファイル入出力
第14章 ファイル操作 14.1 ファイルへの書き込み 14.2 ファイルからの読み込み 14.3 ファイルへの追加書き込み
= 55 課題6-1 #define _CRT_SECURE_NO_WARNINGS
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
Presentation transcript:

フーリエ級数展開 ~矩形波について~ 10024112 長江 栞 10024116 中島 涼 10024122 中村 勇樹 10024112 長江 栞 10024116 中島 涼 10024122 中村 勇樹 10024133 畑中 祥平

概要 ・電圧V、周期Tであらわせる交流波を sin (x),cos(x)であらわすことができる。 ・それをいろいろな波形(短形波、三角波等) にフーリエ級数展開を使うことによって グラフ化が可能になる。 ・今回は矩形波について考察する。

矩形波(0<=2π) #include <stdio.h> #include <math.h> int main(void){ int i; double x, y=0; FILE *fp; fp = fopen("h.dat", "w"); for (x=0; x<2*M_PI; x+=0.001) { if(x<=M_PI) { y=1; fprintf(fp, "%lf %lf\n", x,y); } else y=-1; fclose(fp); return 0;

アクティビティ図 <<file>> h.dat a.dat :波形データファイル <<executable>> gnuplot :可視化プログラム <<file>> hh.png :表計算用可視化ファイル サンプル点数 グラフ作成者

フーリエ級数展開によって求めた矩形波 #include <stdio.h> #include <math.h> #define N 1000 /* この値を変更 */ double term(int n, double x){ return sin((2*n-1)*x)/(2*n-1); } int main(void){ int i; double x, y=0; FILE *fp; fp = fopen("c.dat", "w"); for (x=0; x<2*M_PI; x+=0.001) { for (i=1; i<=N; i++) { y+=term(i,x); fprintf(fp, "%lf %lf\n", x, 4/M_PI*y); y=0; fclose(fp); return 0;

アクティビティ図 <<file>> a.dat c.dat d.dat f.dat :波形データファイル <<executable>> gnuplot :可視化プログラム <<file>> f.png :表計算用可視化ファイル サンプル点数 グラフ作成者

Pad図もしくは流れ図 #include <stdio.h> #include <math.h> #define N 1000 関数プロトタイプ宣言 Int I; double x,y=0; ファイルポインタ ファイル“c.dat”を書き取りように開く X=0;x<=2*M_PI;;x+=0.001; i=0;i<=1000;i++; y+=term(I,x); fprintf(fp, "%lf %lf\n", x, 4/M_PI*y); y=0; ファイルを閉じる return 0;

データ構造と簡単なファイル形式 #include <stdio.h> #include <math.h>  /*M_PIを使う*/ #define N 1000 /* この値を変更 */ double term(int n, double x){ /*関数プロトタイプ宣言*/ return sin((2*n-1)*x)/(2*n-1); /*矩形波のフーリエ級数展開した式を返す*/ } int main(void){ int i; double x, y=0; FILE *fp; /*ファイルポインタ*/ fp = fopen("c.dat", "w"); for (x=0; x<2*M_PI; x+=0.001) { /*より精密にするためxの値を小さくする*/ for (i=1; i<=N; i++) { /*xが2πになるまで+Nが1000になるまで繰り返し*/ y+=term(i,x); /*関数呼び出し式*/ fprintf(fp, “%lf %lf\n”, x, 4/M_PI*y); /*ファイルにそれぞれ書き込む*/ y=0; fclose(fp); /*ファイルを閉じる*/ return 0; 値の意味 データ形式 電圧値の個数(N) テキスト(整数) 改行 テキスト 電圧値V(y)(N=0.001) テキスト(実数) ・    ・ 電圧値V(y)(N=2π) EOF

結果・考察  フーリエ級数展開を使うことによって矩形波に近いグラフを描くことができた。(前の図を参照)より精密(Nの個数を無限増大)にしていけば矩形波に収束する。(今回はN=10,N=100N=1000の場合) また周期Tと振幅A(Vの電圧値)は電気回路で言う交流電圧に等しくなり、交流電圧を可視化するのに最適である。また今回は先にフーリエ級数展開の式を求めて、その式をプログラムしたもので実際に式まで求めるプログラムを作ることができればより多くの周期関数を求めることができる。

まとめ フーリエ級数展開はいろいろな周期関数(電圧、電流、周波数etc)に用いることができ可視化するのに最適。 工学的知識としてすべての周期関数のグラフはsin(x),cos(x)によってそれに近いグラフを限りなく描くことができる。 ただしnの個数によって値の誤差が生じ、nの個数が少ないほど誤差が増大してしまう。