問題タブ [cmath]
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.
python - 絶対値計算機で予期しない構文エラーを受け取る
コード:
avsol に構文エラーがあります。はい、cmath をインポートしました。
c++ - cmath を使用する場合は math.h のがらくたを無効にします
なしで関数がオーバーロードされたため、以前に問題がありましたstd::
。そして、私はusing namespace std;
.
名前空間 std を使用して削除すると、プログラムはがらくたの結果を得る
cに由来し、名前空間の下のc ++関数でのみ動作する非std関数をすべて無効にする方法はありますかstd
(使用する必要はありusing namespace std;
ません)?
言い換えれば、その間違いをしないようにするのsin()
ではなく、使用するとエラーが発生したいのです。std::sin()
もちろん、sin だけでなく、 と競合するすべての関数についても同様math.h
です。
python - FFT 間違った値?
非常に簡単なサウンド スペクトラム アナライザーをランダムに作成します。
この python コードを考える:
http://rosettacode.org/wiki/Fast_Fourier_transform#Python
次のように実装:
次の結果が得られます。
これはかなり問題ありません。入力正弦波の周波数でおそらく 23 dB のピークがあり、すべて問題ないようです。
唯一のことは、最初の値は何ですか: 30.1160980385
? 非常に大きな低音が流れていますか?または、アルゴリズムの欠陥である可能性が高いです。この場合、どうすれば修正できますか。
最後の質問。fft に負の値を入力しても問題ありませんか? 上記の例では、[0,1] の範囲で常に正の正弦波を使用しました。[-1,1] の範囲の値を渡したい場合、すべてを台無しにしますか?
編集:
ネタバレでしたので編集を削除しました。ここでそれが何であるかを読むことができます:
python - ウィンドウ関数適用後の FFT 予期しない周波数シフト
音声信号の FFT 計算用のこの python コードを取得しました。
次の結果が得られました。
ウィンドウ関数なし (コメントアウト):
ウィンドウ関数あり:
なんらかの理由でピークがずれているように見えます。2倍の周波数シフトです!結果を確認するために、次の Java アプレットを試してみまし
た
。スペクトル)。代わりに、Python スクリプトでウィンドウ関数を適用すると、ピークはスペクトルの 2/3 に表示されます。
これは起こるはずですか?どうすれば修正できますか?
c++ - cmath をインクルードしていないにもかかわらず、コンパイラが pow と sqrt を呼び出せるのはなぜですか?
答えはノーであるべきだと思いますが、今日、最初に追加するのを忘れていたにもかかわらず、完全にコンパイルされ、 pow と sqrt を使用して正しい答えを示したコードをいくつか書きまし
#include<cmath>
た ここに何が欠けていますか?
c++ - 2 より大きい根を取る
式の 11 乗根を取得しようとしていますが、 が返され-inf
ます。
wherej
は単なるlog
表現です。その番号が有効であることを確認しましたが、有効です。力の表現が実行されている方法だと思います。これを行うより良い方法はありますか?ありがとう。
そしてはい、私はcmath
自分の仕事に含めました。
c++ - 非再帰的な sqrt 関数が再帰的であるのはなぜですか?
test.cpp という次の C++ テスト プログラムがあります。
これはかなり不自然なコードであり、ご想像のとおり、Stroustrup を使って演習を行おうとしています。彼は double sqrt(double) を宣言し、読者にそれを定義してもらいたいと考えています。
g++ 4.8 (Qt 5.1 の MINGW リリースから) を使用して上記のコードをコンパイルしました。
結果の実行可能ファイルを実行すると、Windows 7 で「test.exe が動作を停止しました」と表示されました。
何が問題なのかを確認するために、GNU デバッガーで test.exe を実行しました。デバッガーのコマンドと出力:
動作と警告から、std::sqrt はグローバル名前空間から sqrt を呼び出す必要があると推測します。これにより、関数が繰り返し呼び出されます。
sqrt 関数の名前を変更するか、名前空間内に配置することで、不要な再帰を回避するのは簡単です。しかし、std::sqrt が ::sqrt が呼び出されるような方法で実装されている理由を理解したいと思います。std 名前空間の要点は、ユーザー コード内の修飾されていない名前との名前の衝突を防ぐことだと思いました。
<cmath> の GNU 実装のソース コードをのぞいてみました。ただし、チェーンのいくつかの #include をたどった後、トレイルを失いました。多分あなたはそれをもっと理解できるでしょう:
ちなみに、これは単なる GNU パズルではありません。g++ の代わりに Visual C++ コンパイラでコンパイルすると、次の警告が表示されます。
これは、StackOverflow で尋ねるのにふさわしい質問だと思います。:)
結果の実行可能ファイルを実行すると、期待どおりの結果が得られます: 「test.exe が動作を停止しました」。
c++ - x*y+z を一度に加算および乗算する cmath 関数
cmath
ライブラリに 3 つの数値を指定x
しy
て をz
返す関数はありますx*y+z
か?