質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

444閲覧

[Python] e^xの高速フーリエ変換を行い,グラフに表示したい

-_sora.

総合スコア12

Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/11/17 12:22

編集2020/11/17 17:46

前提・実現したいこと

題名通りです.以下にあるe^xの高速フーリエ変換(FFT)の計算から,それをグラフにプロットする方法が知りたいです.

該当のソースコード

以下が高速フーリエ変換(FFT)の計算を行うプログラムです.大学の講義で例として挙げられたものなので,計算としては合っているのだと思います.つまるところ,これをグラフにプロットできれば大丈夫です.

import numpy as np import matplotlib.pyplot as plt N = 8 k = np.arange(0,N,1) wj = np.exp(2*np.pi*1j/N*(k)) fj = np.exp(wj) Fk = np.fft.fft(fj)

発生している問題・エラーメッセージ

1つ目が講義で挙げられた出力例です.本来はこれのオレンジ線のようになるはずなのですが,私が実行すると2つ目のようなグラフになってしまいました.また,1つ目の青線にあるOriginalですが,これはe^xそのものを表しており,この部分のプログラムは挙げられておらず,各々追加するようにという指示でした.
イメージ説明
イメージ説明

試したこと

グラフをプロットするのはplt.plot()でできると知っていたので以下のコードを加えたのですが,結果は上の通りです.高速フーリエ変換では何か別の命令が必要なのでしょうか?

plt.plot(k,Fk) plt.savefig('sample.png')

補足情報(FW/ツールのバージョンなど)

現在講義の教員が質問応答不可とのことで,こちらに質問させていただきました.
使用しているのはpython3です

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

「この部分のプログラムは挙げられておらず,各々追加するようにという指示でした」が追記されたため、大学授業での不明点質疑ではなく、一種の学校課題であることが判明しました。よって、今後の質疑・回答の追記は停止いたします。

terateil 推奨していない質問
学校の課題を解いてほしい等の質問は、具体的にプログラミングで困っている質問ではないと考え、推奨していません。


グラフは合っていますので、プログラムが間違っているか、計算そのものが間違っています。

  • そもそも正解例のグラフでOriginalのe^xに相当するのは、プログラムだと、どこでしょうか?
  • wj = np.exp(2*np.pi*1j/N*(k))は、数式からプログラムに変換するのを間違えていそうな雰囲気が高いです。*1jというのはギリギリエラーにならなかっただけで普通書かない書き方です。どう解釈されているのか謎な式になっています。また(k)と単発でカッコがあるのも不自然です。

投稿2020/11/17 14:08

編集2020/11/17 22:26
toast-uz

総合スコア3266

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

-_sora.

2020/11/17 14:51

すみません.Originalに当たる部分のプログラムは実際存在せず,これは各々追加するようにという指示でした. 確かに1jという表記は私も疑問を感じていました.元のプログラムが間違っていたんですかね…
toast-uz

2020/11/17 15:01

高速フーリエ変換なので、オリジナルな式が無いと、プログラム全体として機能しないのではないでしょうか? 1jのところは実はlj (えるじぇー)ではないでしょうか?オリジナルとして、lj=何かを書き加える仕組みになっているのではないでしょうか?
toast-uz

2020/11/17 22:27

一種の学校課題であることが判明しました。よって、今後の質疑・回答の追記は停止いたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問