解決済み

虚数の計算

  • 困ってます
  • 質問No.263301
  • 閲覧数958
  • ありがとう数1
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 22% (6/27)

学校の課題で虚数(Complex Number)の計算をしなければいけません。
虚数はi^2=-1, i^3=-i... ですよね? それをどういう風に表現したらいいのかまったくわからないのですが、その部分のヒントいただけないでしょうか?
一応、下のが問題です、、、、。

Write a class called complex to enable operations on complex numbers through the overloaded >> and << operators (to read in and output complex numbers).

Complex numbers are of the form: realPart + imaginaryPart*i, where i =sqrt(-1)

So overload <<, >>, +, -, *, ==, != to perform the appropriate operations.

i.e. Complex1 + Complex2 should add the real parts of both numbers and the two complex parts of both numbers.
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.2
レベル12

ベストアンサー率 40% (230/562)

Cですか? C++ですか?
C++ならクラスを定義して、+や/に虚数演算を定義できますが、Cでは虚数と虚数、虚数と実数の演算をするそれぞれの関数を作らなければなりません。

虚数という型はありません。
虚数はR^2のベクトルですから、
typedef struct _COMP{ double x, y; } COMP;
などとして、ベクトルのように扱いましょう。

あとはそのデータ型に対する関数を定義するのです。

/*z1 := z1 + z2 = (x1 + x2, y1 + y2)*/
void compadd(COMP *z1, COMP *z2){
z1->x += z2->x;
z1->y += z2->y;
}
/*z1 := z1 * z2 = (x1 * x2 - y1 * y2, x1 * y2 + x2 * y1)*/
void compsqr(COMP *z1, COMP *z2){
double s = z1->x, t = z1->y;
z1->x = s * z2->x - t * z2->y;
z1->y = s * z2->y + t * z2->x;
}
/*あと引き算とか割り算とか*/

虚数はi^2 = -1という定義のしかたもありますが、ベクトル演算として
z1 + z2 = (x1 + x2, y1 + y2)
z1 * z2 = (x1 * x2 - y1 * y2, x1 * y2 + x2 * y1)
などというものを定義する方法もあるのです。
お礼コメント
lilno

お礼率 22% (6/27)

返事が遅くなってすいません。haporunさんのHintで何とかできそうです。ありがとうございます。はじめ課題が出たとき「なんだめちゃかんたんじゃん!」とか思ってしまったのですが、いざやり始めたら結構難しかったです、、。
投稿日時 - 2002-05-13 09:35:48

その他の回答 (全1件)

  • 回答No.1
レベル8

ベストアンサー率 34% (20/58)

虚数の計算ではなくて複素数の計算ではないでしょうか?
real part と imaginary part をメンバ変数として持つ
complex というクラスを作り、<<, >>, +, -, *, ==, !=
といった演算子をオーバーロードして、いろいろな計算が
できるようなclassを作りましょう、という課題では
ないでしょうか。

たとえば i は実数部が 0 で虚数部が 1 で、これを
仮に {0, 1} と表したとき、{0, 1}ともう一つの{0, 1}
掛け算したとき、実数部が -1 で虚数部が 0 の{-1, 0}
という結果になるような計算を実装してみましょう、
ということだと思います。
このQ&Aで解決しましたか?
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する

特集


より良い社会へ。感謝経済プロジェクト始動

ピックアップ

ページ先頭へ