• 締切済み

Maximaのフーリエ変換について

Maximaでフーリエ変換するために、 load(fft); で読み込んでから、 fft(exp(-t^2/18),t,w); を実行したところ、 Maxima encountered a Lisp error: Error in $FFT [or a callee]: $FFT [or a callee] requires less than three arguments. Automatically continuing. To reenable the Lisp debugger set *debugger-hook* to nil. というエラーが出てきて計算が出来ません。 どうしたら計算できるんでしょうか? わかる方教えてください。

みんなの回答

  • rabbit_cat
  • ベストアンサー率40% (829/2062)
回答No.3

Maximaには、直接、フーリエ変換を計算するコマンドはないので、 フーリエ変換の定義式通り積分計算をすることになります。 http://ja.wikipedia.org/wiki/%E3%83%95%E3%83%BC%E3%83%AA%E3%82%A8%E5%A4%89%E6%8F%9B Maximaでの積分の方法はいいですか? http://www.bekkoame.ne.jp/~ponpoko/Math/maxima/maxima_3.html それから、 f(x)=Bx^2 (x<x1) Cx (x1≦x≦x2) Dx^2+Ex (x2<x≦x3) Nx^2 (x>x3) て関数ですが、これは2乗可積分関数ではないので、そもそも普通の意味でのフーリエ変換は定義できません。無理やりフーリエ変換すると、超関数になります。

  • rabbit_cat
  • ベストアンサー率40% (829/2062)
回答No.2

FFTは、「離散フーリエ変換」の高速計算法です。「離散」ってついてるので、普通の(連続の)フーリエ変換とは、全く違います。まあ、もちろん無関係ではありませんが、実際の計算は全く別物です。 で、フーリエ変換と、離散フーリエ変換のどちらをやりたいのか教えてください。

rokopon
質問者

補足

似てるようで違うんですね。 えーと、フーリエ変換がやりたいです。 そこで、次のようなf(x)があった場合に、フーリエ変換の定義式では どのように表されますか? f(x)=Bx^2 (x<x1) Cx (x1≦x≦x2) Dx^2+Ex (x2<x≦x3) Nx^2 (x>x3) xの領域毎に具体的に示していただけると助かります。 上式のように領域で式が異なるときにどうすればよいかよくわかりません。

  • rabbit_cat
  • ベストアンサー率40% (829/2062)
回答No.1

FFTとフーリエ変換って別物なんですけど、どっちをやりたいんですか? とりあえず、フーリエ変換したいなら、Maximaにはなぜかフーリエ変換を計算するコマンドはないので、定義式の積分をそのまま計算させてください。

rokopon
質問者

補足

FFTとフーリエ変換ってどう違うんですか? FFTって高速フーリエ変換だから根本的には一緒じゃないんですか? フーリエ変換がやりたいです。

関連するQ&A

  • Maximaでグラフを描くために

    http://www1.bbiq.jp/kougaku/maxima.htmlのサイトにしたがって、file:///C:/Documents%20and%20Settings/サムソン/Local%20Settings/Temporary%20Internet20Files/Content.IE5/2TC7QXU5/maxima_plot3d_graph%5B1%5D.png (z=√(x2+y2))のグラフを描こうとしたのですが、wxMaximaでplot3d(sqrt(x^2+y^2),[x,-100,100],[y,-100,100],[grid,20,20]);と入力すると ____ Maxima encountered a Lisp error: Error in PROGN [or a callee]: Cannot create the file C:/Documents and Settings/サム・ン/maxout.gnuplot.Automatically continuing.To reenable the Lisp debugger set *debugger-hook* to nil. ____ に出てきて、出力できませんでした。 ファイル名の途中にある「サム・ン」がいけないのかと思い、コマンドプロンプトをつたって「samson」に使用者名を変更して再度試してみたのですがやっぱりダメでした。 どなたかお教え下されば幸いです。

  • maximaで数値積分

    maximaで数値積分をしなくてはならず、「ニュートン=コートの8次多項式による求積法」を行おうと思い、読み込もうとしたところ、 (%i1)load("qq"); (%o1)Could not find `qq' using paths in file_search_maxima,file_search_lisp. -- an error. To debug this try: debugmode(true); とエラーが表示されてしまいました。 本やネットで調べましたが、よくわかりません。どうしてこのようになってしまったのでしょうか?また、解決法はありますか?教えていただきたくよろしくお願い致します。

  • Emacs Lisp: consセルと引用符?

    お世話になります。 Emacs Lispについて勉強しています 今は、リスト、consセルについて勉強しています。 以下、拙い質問になるかと思いますが、よろしくお願いします。 Lisp Interactionモードのバッファに、 '(1 2 3) というリストを書いて行末でC-jを押下すると (1 2 3) という式を返します。 しかし、 (1 2 3) という式を書いて行末でC-jを押下すると Debugger entered--Lisp error: (invalid-function 1) というエラーになります。 これは、1が関数、2と3が引数として評価されるからですね。 さて、リストではなく「consセル」を作るとします。 (1 . 2) と書いてC-jを押下すると、やはり Debugger entered--Lisp error: (invalid-function 1) というエラーになります。 '(1 . 2) であれば (1 . 2) と、正しくconsセルが出来ます。 '(1 . nil) であれば (1) というリストを返します。 これは、cdr部がnilであるconsセルはリストになるからですね。 では、3と、「1とnilからなるリスト」のconsセルを作って、結果的に(3 1)というリストにしようとします。 '(3 . '(1 . nil)) この場合は、予想に反して (3 quote (1)) となります。 '(3 . (1 . nil)) であれば、 (3 1) となります。一方、 (3 . (1 . nil)) とすると、 Debugger entered--Lisp error: (invalid-function 3) となります。 まとめると、 3と、「1とnilからなるリスト」のconsセルを作って、結果的に(3 1)というリストにしようとした場合は、 '(3 . (1 . nil)) のように外側のconsセルはクォートし、内側のconsセルはクォートしない、ということになりますね。 このクォートの振る舞いの違いはなぜでしょうか。 よろしくお願いします。

  • xmaximaがつかえない

    こんばんは、質問よろしくお願いします。Xmaximaという、数式処理システムを興味があって、使ってみようとPlamolinux3.0にインストールしました。でも、ウインドウは $xmaxima で開くのですが、 --------------------------------------------------------------------- Maxima 5.6 2002年 8月 3日 (土) 16:04:19 JST (with enhancements by W. Schelter). Licensed under the GNU Public License (see file COPYING) Error: Caught fatal error [memory may be damaged] Fast links are on: do (si::use-fast-links nil) for debugging Error signalled by CATCH. Broken at MACSYMA-TOP-LEVEL. Type :H for Help. MAXIMA>> LISP-QUIET is not break command NIL MAXIMA>> LISP-QUIET is not break command NIL ---------------------------------------------------------------- などとエラーがでて、実際の計算ができません。メモリーがダメージをおう? とかかれても、それでどうすればいいのかわかりません。Lispがなにか関係あるのでしょうか。解決策がありましたら、是非御指導よろしくお願い致します。

  • 逆行列(Maxima)

    行列の逆行列を求めようとすると、エラーが出ます。 (%i1) A:matrix([1,2,3],[4,5,6],[7,8,9]); invert(A); (%o1) matrix([1,2,3],[4,5,6],[7,8,9]) Division by 0 -- an error. To debug this try debugmode(true); (%i2) A^^(-1); Singular -- an error. To debug this try debugmode(true); 行列の加減乗、べき乗、成分の加減乗、べき乗などはできるのに、invert函数、(-1)乗の計算ができません。 Maxima-5.17.1でwxMaxima0.8.0です。

  • Maximaの順次出力

    Basic言語などで、例えば10までの整数の和を求めるとき、 for i=1 to 10 a=a+i print i next i とでもすれば、iが1まで、2まで、3まで…10までの計算結果が得られますよね。ところが、Maximaの場合は、for函数の中に出力命令は入れられないようなんですが?これは、仕方のないことなのでしょうか? それぞれの計算結果は、配列に覚えこませてやるよりないのでしょうか。やろうとしていることは、複雑な式の展開なので、できるだけこの方法は避けたいのですが。

  • format関数が使えません(Lisp)

    Emacs23でformat関数を評価してもエラーが出て使うことができません。*scratch*で評価してもloadしても同じです。 例えば (format t "ddd") で Debugger entered--Lisp error: (wrong-type-argument stringp t) format(t "ddd") eval((format t "ddd")) eval-last-sexp-1(t) eval-last-sexp(t) eval-print-last-sexp() call-interactively(eval-print-last-sexp nil nil) このようなエラーが出て実行できません。 一体どうしてwrong-type-augumentとでるのかさっぱりわかりません。どなたか知恵を貸してください。

  • エラー内容について

    WindowsXPS2で gclをつかって、 Lispでゲームプログラミングをしています。 ゲームプログラムを二つ作り、 ゲームプログラム同士を対戦させようと思います。 ゲームは完成し、 対戦をしてみると 次のようなエラーが発生しました。 具体的には、 Error in SYSTEM:TOP-LEVEL [or a callee]: Caught fatal error [memory may be damaged] Fast links are on: do (use-fast-links nil) for debugging Broken at MAIN-LOOP. Type :H for Help. 1 (Abort) Return to top level. dbl: と表示されます。 これは、 一体何が原因で発生したのでしょうか? よろしくお願いします。

  • maximaの積分に関する質問です

    maximaで積分を行っているのですが、 integrate(x,x,sqrt(y),y);と入力してその計算結果が返ってくるはずなのですが、 defint: lower limit of integration must be real; found sqrt(y) -- an error. To debug this try: debugmode(true); とエラー表示がされてこれ以上計算が進みません。どのように対処すれば うまくいくのでしょうか。

  • Elispで文字列がある文字列を含むかどうか判定

    Emacs lispで、ある文字列Aと文字列BがあってBがAを含むときにt, そうでないときにnilを返す関数はどのように書けますか?