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

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

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

Mathematicaは、ウルフラム・リサーチによって開発されている数式処理システムです。

Q&A

0回答

777閲覧

Mathematicaでスプライン曲線を複素フーリエ級数展開

kiritsukiR

総合スコア22

Mathematica

Mathematicaは、ウルフラム・リサーチによって開発されている数式処理システムです。

0グッド

0クリップ

投稿2019/11/02 14:16

編集2019/11/04 02:33

やろうとしていること

複素平面上でスプライン(閉)曲線を定義し、複素フーリエ級数展開を行おうとしています。
Mathematicaのバージョンは11.3で、raspberry pi 3B+上で動かしています。

取り組んだこと

手続き型であれば次のようになると思います。

  1. 制御点の定義(List)
  2. スプライン曲線を作成(BSplineFunction)
  3. 複素数に変換(Complex)
  4. 複素フーリエ級数展開(FourierSeries)

これを元に以下のようにコードを記述しました。

(* スプライン曲線を定義 *) pts = {{1,0},{0,1},{-1,0},{0,-1}}; f = BSplineFunction[pts, SplineClosed->True]; (* 確認のため曲線をプロット *) Manipulate[ Show[ ListPlot[{f[t]}, PlotMarkers->Automatic], ParametricPlot[f[t], {t,0,1}], PlotRange->{{-1,1},{-1,1}}, AspectRatio->1 ], {t,0,1} ] (* 複素数に変換 *) g[t_] := Complex @@ f[t] (* 正しいか確認 *) g[0] Trace[g[0]] (* フーリエ変換 *) Trace[FourierSeries[g[t],t,5]]

発生した問題

g[0]では以下のようにf[0]が先に評価されて正しく計算されました。

  • g[0]
  • Complex @@ f[0]
  • Complex @@ List[0, 0.666667]
  • Complex[0, 0.666667]
  • 0.+0.666667i

しかしFourierSeries[g[t],t,5]では以下のように@@が先に評価されてしまい、エラーとなりました。

  • g[t]
  • Complex @@ f[t]
  • Complex[t]

TL;DR

Mathematicaでスプライン曲線を複素フーリエ級数展開するにはどうすればいいですか?

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問