Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

C言語で2つの複素数の和を求めるプログラム

a1 + ib1 と a2 + ib2 の形式で表される2つの複素数が与えられたとき、これら2つの複素数の和を求めるのが本記事の目的です。

複素数とは「a + ib」の形で表すことのできる数のことです。ここで「a」と「b」は実数、「i」は虚数単位と呼ばれる虚数です。虚数単位 i は方程式 x² = −1 の解であり、この等式を満たす実数は存在しないため、虚数と呼ばれています。

入出力例

例1

入力

a1 = 3, b1 = 8
a2 = 5, b2 = 2

出力

複素数1: 3 + i8
複素数2: 5 + i2
複素数の和: 8 + i10

解説

(3+i8) + (5+i2) = (3+5) + i(8+2) = 8 + i10

例2

入力

a1 = 5, b1 = 3
a2 = 2, b2 = 2

出力

複素数1: 5 + i3
複素数2: 2 + i2
複素数の和: 7 + i5

解説

(5+i3) + (2+i2) = (5+2) + i(3+2) = 7 + i5

複素数の加算では、実部同士、虚部同士をそれぞれ足し合わせます。つまり (a1 + ib1) + (a2 + ib2) = (a1 + a2) + i(b1 + b2) となります。

問題を解くためのアプローチ

  • 複素数の実部と虚部を格納するための構造体(struct)を宣言します。

  • 入力を受け取り、各複素数の実部同士および虚部同士をそれぞれ加算します。

アルゴリズム

開始
以下の要素を持つ構造体 complexnum を宣言する
    1. real(実部)
    2. img(虚部)
関数 complexnum sumcomplex(complexnum a, complexnum b)
    ステップ1 → 構造体 complexnum c を宣言する
    ステップ2 → c.real に a.real + b.real を代入する
    ステップ3 → c.img に a.img + b.img を代入する
    ステップ4 → c を返す
関数 int main()
    ステップ1 → complexnum a = {1, 2} と b = {4, 5} を宣言・初期化する
    ステップ2 → complexnum c を宣言し、sumcomplex(a, b) の結果を代入する
    ステップ3 → 1つ目の複素数を出力する
    ステップ4 → 2つ目の複素数を出力する
    ステップ5 → c.real と c.img を用いて両者の和を出力する
終了

サンプルコード

#include <stdio.h>
// 複素数の実部と虚部を格納する構造体
struct complexnum{
    int real, img;
};
complexnum sumcomplex(complexnum a, complexnum b){
    struct complexnum c;
    // 2つの複素数を加算する
    c.real = a.real + b.real;
    c.img = a.img + b.img;
    return c;
}
int main(){
    struct complexnum a = {1, 2};
    struct complexnum b = {4, 5};
    struct complexnum c = sumcomplex(a, b);
    printf("Complex number 1: %d + i%d\n", a.real, a.img);
    printf("Complex number 2: %d + i%d\n", b.real, b.img);
    printf("Sum of the complex numbers: %d + i%d\n", c.real, c.img);
    return 0;
}

実行結果

上記のコードを実行すると、次のような出力が得られます。

Complex number 1: 1 + i2
Complex number 2: 4 + i5
Sum of the complex numbers: 5 + i7

まとめ

C言語で複素数を扱う場合、実部と虚部をまとめて管理できる構造体を定義すると、コードが読みやすく保守しやすくなります。加算処理も、構造体を引数として受け取り新しい構造体を返す関数として独立させることで、減算や乗算など他の演算への拡張も容易になります。なお、C99以降では標準ライブラリの <complex.h> を使えば、double complex 型による複素数演算も可能です。

  1. Pythonで2つの数値を加算するプログラム:ビット演算による実装方法

    この記事では、2つの数値を加算するという問題に対する解法とアプローチについて詳しく解説します。 問題の概要 2つの大きな数値が与えられ、それらを加算した結果を出力することが求められます。 最も単純なアプローチは、オペランド同士を「+」演算子で結ぶ方法です。また、2つの数値をリストなどのイテラブルに格納し、Python標準ライブラリに用意されている組み込み関数 sum() を利用する方法もあります。 しかし、これらのアプローチでは10進数に対して直接演算を行うため、計算コストが増大するという課題があります。 ビット演算を用いた別のアプローチ そこで次に、数値をビット単位で操作する別のアプローチを

  2. Pythonで複素数を扱う方法:complex型の基本からcmathモジュールまで

    複素数の基礎知識 正の数には必ず2つの実数平方根が存在します。たとえば x² = 25 のとき、x = ±5 です。しかし x² = -25 のような場合は実数解が存在しません。負の数の平方根は、絶対値の平方根に虚数単位 j = √−1 を掛けた形で定義されます。 したがって、√−25 = √25 × √−1 = 5j となります。 複素数は実部と虚部から構成され、「x + yj」という形式で表されます。x と y はどちらも実数であり、y に虚数単位 j を掛けた部分が虚部となります。 記述例:3+2j、10-5.5J、9.55+2.3j、5.11e-6+4j Pythonにおける複素数型