問題タブ [complex-numbers]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
4434 参照

java - Javaでの離散フーリエ変換(FFTではない)

私はJavaでCSEクラスの割り当てを行っており、FFTと直接DFT(行列計算を使用)を実装しています。FFTは正常に機能しますが、直接DFTが機能しません。私のフーリエ行列は正しい値で出てこないので、それがユーザーエラーであるかどうか、または問題が代わりに使用しているComplexクラス(org.apache.commons.math.complex)にあるかどうかを知りたいです。そのような主流のクラスでは、それは単なるユーザーエラーだと思います。誰かがそれを指摘できれば、それは素晴らしいことです。

私のフーリエ行列の計算は次のように機能します。

デバッグの目的でいくつかの項目を変数に引き出していますが、コードはすべて私の理解から機能するはずです。

ただし、上記のコードは、長さ4のベクトルの場合、次の行列を生成します。

どんな助けでも大歓迎です。

0 投票する
2 に答える
1094 参照

python - Pythonに高精度の複素数用のライブラリはありますか?

Pythonに高精度の複素数用のライブラリはありますか?

0 投票する
2 に答える
4189 参照

c++ - C ++で複素数を使用する方法は?

C++コードで複素変数を書く方法を教えてください。

私は別々の実数部psi_rlと虚数部psi_imを持っています。ここで、psi = psi_rl +ipsi_imと記述する必要があります。このタスクを実行する方法を知っていますか?

ありがとう。

0 投票する
2 に答える
2578 参照

matlab - matlab 画像処理エラー

matlab で画像のフーリエ変換を見つけようとしています。ライブラリ関数の hep なしでこれを行っています。コードは次のとおりです。

このプログラムをコンパイルすると、次のエラーが発生します。

a=imread('lena128','bmp') の代わりに a=rand(1,128) を使用すると、そのエラーは発生しません。オンラインで検索したところ、同様の問題が見つかりました。しかし、解決策はありません。誰かが私のためにエラーを指摘できますか?

0 投票する
4 に答える
20312 参照

wolfram-mathematica - Mathematica で複雑な関数をプロットする

sage でcomplex_plotの動作をコピーする Mathematica グラフィックスを作成するにはどうすればよいですか? すなわち

... 1 つの変数の複素関数を取り、以下に示すように、指定された xrange と yrange で関数の出力をプロットします。出力の大きさは明るさで示され (ゼロは黒、無限大は白)、引数は色相で表されます (赤は正の実数で、引数が大きくなるにつれてオレンジ、黄色、... と増加します)。 .

絶対値の等高線を重ねたゼータ関数の例 ( Neutral Driftsの M. Hampton から盗んだもの) を次に示します。

ゼータ関数 complex_plot

Mathematica のドキュメンテーション ページFunctions Of Complex Variablesでは、複雑な関数を使用して視覚化し、「潜在的にフェーズごとに色付けする」ことができると書かれていContourPlotますDensityPlot。しかし、問題は両方のタイプのプロットにあり、ColorFunctionその点の等高線または密度に等しい単一の変数しかとらないため、絶対値をプロットするときにフェーズ/引数に色を付けることは不可能に思えます。Plot3Dこれは、 3 つのパラメータすべて(x,y,z)が に渡される場所の問題ではないことに注意してくださいColorFunction

Plot3D docsの「きれいな例」など、複雑な関数を視覚化する方法が他にもあることは知っていますが、それは私が望むものではありません。

また、以下に1 つの解決策がありますContourPlot(Wikipedia で使用されているグラフィックスを生成するために実際に使用されています) が、かなり低レベルの関数を定義しており、またはのような高レベルの関数で可能であると思いますDensityPlot。これは、より低いレベルの構造を使用するお気に入りのアプローチを提供することを妨げるものではありません!


編集: Mathematica ジャーナルに Michael Trott による素晴らしい記事がいくつかありました:
Visualizing Riemann surface of algebraic functions , IIa , IIb , IIc , IId .
リーマン面の視覚化デモ.
リーマン曲面の復活 (Mma v6 の更新)

もちろん、Michael Trott はMathematica のガイド ブックを書きました。これには多くの美しいグラフィックが含まれていますが、加速された Mathematica のリリース スケジュールに遅れをとっているようです!

0 投票する
1 に答える
3702 参照

python - インターリーブされたNumPy整数配列をcomplex64に変換する最速の方法は何ですか?

実数と虚数の整数がインターリーブされた受信データのストリームがあります。これらを complex64 値に変換することは、私のプログラムで最も遅い操作です。これは私の現在のアプローチです:

C 拡張を作成したり、cython のようなものを使用したりせずに、もっとうまくやることはできますか? 改善できない場合、これらのようなテクノロジを使用する最も簡単なアプローチは何ですか?

0 投票する
1 に答える
919 参照

iphone - iOS -- 複素数の実装

この質問のフォローアップとして:

Apple の複素数サポートを使用して電卓アプリを実装している最中に、そのサポートを使用して計算すると次のようになることに気付きました。

(1+i)^2=1.2246063538223773e-16 + 2i

もちろん、正しい単位は (1+i)^2=2i です。これは、より一般的な現象の具体的な例です。丸め誤差は、ゼロであるはずの部分をわずかにゼロ以外の値に丸める場合、非常に厄介です。

これに対処する方法についての提案はありますか? 他の方法で複素数の整数べき乗を実装することもできますが、一般的な問題は残り、私のソリューション自体が他の矛盾を引き起こす可能性があります。

0 投票する
2 に答える
1787 参照

c# - このフーリエ変換の実装の何が問題になっていますか

離散フーリエ変換を実装しようとしていますが、機能していません。おそらくどこかにバグを書いたと思いますが、まだ見つけていません。

次の式に基づきます。

テレレ

この関数は最初のループを実行し、X0-Xn-1..をループします。 ここに画像の説明を入力してください

そして実際の計算では、おそらくこれがバグの場所です。

次に、残りのコードの説明:

var sign = reverse ? 1.0: -1.0;逆DFTは引数に含まれませんが-1、通常のDFTは-1引数に含まれます。

ここに画像の説明を入力してください

var argument = sign*2.0*Math.PI*k/data.Length;アルゴリズムの引数です。この部分:

ここに画像の説明を入力してください

その後、最後の部分

transformed += data[i]*Complex.FromPolarCoordinates(1, argument*i);

アルゴリズムを注意深くコピーしたと思うので、どこで間違いを犯したのかわかりません...

追加情報

Adam Grittが彼の回答で示したように、AForge.netによるこのアルゴリズムの優れた実装があります。コードをコピーするだけで、おそらく30秒でこの問題を解決できます。しかし、私は自分の実装で何を間違えたのかまだわかりません。

私は自分の欠陥がどこにあるのか、そして私が間違って解釈したものに本当に興味があります。

0 投票する
2 に答える
1740 参照

c++ - std::transform と tr1::bind を使用して std::complex のベクトルを変換する

std::complex の std::vector が与えられた場合、複素数の実部のみを含むベクトルに変換し、一定の係数で除算したいと思います。今、私はそれをします:

これはもちろん問題なく動作しますが、 std::transform を使用して同じことを行う方法を探しています。私は試した:

しかし、それはうまくいきません。このエラーがあります:

「未解決のオーバーロードされた関数型」がある理由がわかりません。

誰かが私に何が悪いのか説明してもらえますか?

0 投票する
5 に答える
854 参照

c - C99:複素数の虚数部を負のゼロにすることができます

C99複素数floatの虚数部に負のゼロを格納することは可能ですか?

符号付き虚数部を使用して複素定数を静的に初期化するにはどうすればよいですか?

小さな例がありますが、なぜac同じで、なぜ-std=c99結果が変わるのか理解できません。

C99-TC3およびgccマニュアルからの引用を歓迎します。

C99(n1256.pdf)にもhttp://www.knosof.co.uk/cbook/にも関連するものが見つかりません