[解決済み] C言語で複素数を扱うには?
2022-06-19 14:17:24
質問
C言語で複素数を扱うにはどうしたらよいでしょうか。私は
complex.h
ヘッダーファイルがありますが、それをどう使うかについてあまり情報をくれません。実部や虚部に効率的にアクセスするにはどうしたらよいでしょうか?モジュールと位相を得るためのネイティブ関数はありますか?
どのように解決するのですか?
このコードはあなたの助けになりますし、それはかなり自明です。
#include <stdio.h> /* Standard Library of Input and Output */
#include <complex.h> /* Standard Library of Complex Numbers */
int main() {
double complex z1 = 1.0 + 3.0 * I;
double complex z2 = 1.0 - 4.0 * I;
printf("Working with complex numbers:\n\v");
printf("Starting values: Z1 = %.2f + %.2fi\tZ2 = %.2f %+.2fi\n", creal(z1), cimag(z1), creal(z2), cimag(z2));
double complex sum = z1 + z2;
printf("The sum: Z1 + Z2 = %.2f %+.2fi\n", creal(sum), cimag(sum));
double complex difference = z1 - z2;
printf("The difference: Z1 - Z2 = %.2f %+.2fi\n", creal(difference), cimag(difference));
double complex product = z1 * z2;
printf("The product: Z1 x Z2 = %.2f %+.2fi\n", creal(product), cimag(product));
double complex quotient = z1 / z2;
printf("The quotient: Z1 / Z2 = %.2f %+.2fi\n", creal(quotient), cimag(quotient));
double complex conjugate = conj(z1);
printf("The conjugate of Z1 = %.2f %+.2fi\n", creal(conjugate), cimag(conjugate));
return 0;
}
を使っています。
creal(z1)
:
実数部を取得する(float の場合
crealf(z1)
を、長二重の場合は
creall(z1)
)
cimag(z1)
:
虚数部を取得する(float の場合
cimagf(z1)
の場合、長二重の場合
cimagl(z1)
)
複素数を扱う際のもう一つの重要なポイントは、以下のような関数があることです。
cos()
,
exp()
と
sqrt()
は、その複合型に置き換えなければなりません。
ccos()
,
cexp()
,
csqrt()
.
関連
-
[解決済み] C++とCの融合 - #ifdef __cplusplus はどのように機能するのか?
-
[解決済み] C言語で%sを正しく使う - 超基本レベル
-
[解決済み] SQLiteのINSERT/per-secondのパフォーマンスを向上させる
-
[解決済み] 1ビットのセット、クリア、トグルはどのように行うのですか?
-
[解決済み] Cプリプロセッサはなぜ "linux "という単語を定数 "1 "と解釈するのですか?
-
[解決済み] ++iとi++の違いは何ですか?
-
[解決済み] CとC++でmain()は何を返すべきですか?
-
[解決済み] LD_PRELOADのトリックとは何ですか?
-
[解決済み】C言語の関数ポインタはどのように機能するのですか?
-
[解決済み】C言語でexternキーワードを正しく使用する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
g++が内部・外部コマンドソリューションとして認識されない、MinGWを初めて使うときの落とし穴
-
赤線の位置は必ずしも間違っていない:式は変更可能なlvalueでなければならないエラーは、この文とは別の場所に存在する可能性があります。
-
#137: 式は変更可能なlvalueでなければならない問題 // 文字列配列の代入問題
-
error: 'for' loop initial declaration is only allowed in C99 mode 原因と解決方法
-
[解決済み] Code::Blocks アプリケーションをコンパイルできない
-
[解決済み] 初期化でポインタ対象の型から修飾語を捨てる
-
[解決済み] PTHREAD_MUTEX_INITIALIZER vs pthread_mutex_init ( &mutex, param )
-
[解決済み] ソケットアクセプト - "開かれているファイルが多すぎる"
-
[解決済み] char s[]とchar *sの違いは何ですか?
-
[解決済み] C 言語の配列へのポインタ/ポインタの配列の曖昧さ解消