{category}

Ruby - 数学ライブラリ

Complex

コンプレックス(標準ライブラリ

意味 複素数を扱うためのクラス


Complexとは?

Complexクラスは、Rubyの標準ライブラリに含まれる複素数を表現し操作するためのクラスです。実部と虚部を持つ数値を扱うことができ、複素数の四則演算や絶対値の計算などが可能です。

Complexの具体的な使い方

複素数の基本操作

require 'complex'

# 複素数の作成
z1 = Complex(3, 4)
z2 = Complex(1, 2)

# 基本的な演算
sum = z1 + z2
diff = z1 - z2
prod = z1 * z2
quot = z1 / z2

puts "z1 = #{z1}"
puts "z2 = #{z2}"
puts "和: #{sum}"
puts "差: #{diff}"
puts "積: #{prod}"
puts "商: #{quot.round(4)}"

# 絶対値と偏角
puts "z1の絶対値: #{z1.abs}"
puts "z1の偏角: #{z1.angle.round(4)} ラジアン"

👇出力結果

z1 = 3+4i
z2 = 1+2i
和: 4+6i
差: 2+2i
積: -5+10i
商: 2.2-0.4i
z1の絶対値: 5.0
z1の偏角: 0.9273 ラジアン

この例では、Complexクラスを使用して複素数を作成し、基本的な演算(加算、減算、乗算、除算)を行っています。また、複素数の絶対値と偏角(引数)も計算しています。

複素数の極形式と代数形式の変換

require 'complex'

# 極形式から複素数を作成
r = 2
theta = Math::PI / 4  # 45度
z = Complex.polar(r, theta)

puts "極形式 (r=#{r}, θ=π/4) から作成した複素数: #{z}"

# 代数形式に変換
a = z.real.round(4)
b = z.imag.round(4)

puts "代数形式: #{a} + #{b}i"

# 極形式に戻す
reconstructed_r = z.abs.round(4)
reconstructed_theta = z.angle.round(4)

puts "極形式に戻した場合:"
puts "r = #{reconstructed_r}"
puts "θ = #{reconstructed_theta} ラジアン"

👇出力結果

極形式 (r=2, θ=π/4) から作成した複素数: 1.4142135623730951+1.4142135623730951i
代数形式: 1.4142 + 1.4142i
極形式に戻した場合:
r = 2.0
θ = 0.7854 ラジアン

この例では、極形式(絶対値と偏角)から複素数を作成し、それを代数形式(実部と虚部)に変換しています。その後、再び極形式に戻す操作を行っています。Complex.polar メソッドを使用して極形式から複素数を作成し、real と imag メソッドで実部と虚部を、abs と angle メソッドで絶対値と偏角を取得しています。

Complexに関するよくある質問

Q. Complexクラスは何に使うの?
A. Complexクラスは、複素数を表現し操作するために使用します。複素数は実部と虚部を持つ数で、科学計算や信号処理など、様々な分野で利用されます。
Q. 複素数はどう作成するの?
A. 複素数は Complex(実部, 虚部) のように作成できます。例えば、Complex(3, 4) は 3+4i という複素数を表します。また、'1+2i'.to_c のように文字列から変換することもできます。
Q. 複素数の計算はどうやるの?
A. Complexクラスは通常の算術演算子(+, -, *, /)をサポートしているので、実数と同じように計算できます。また、絶対値(abs)、偏角(angle)、共役複素数(conj)などのメソッドも提供しています。
Q. 複素数を文字列に変換できる?
A. はい、to_s メソッドを使用して複素数を文字列に変換できます。例えば、Complex(1, 2).to_s は '1+2i' という文字列を返します。
Q. Complexクラスの利用に制限はある?
A. Complexクラスを使用するには、require 'complex' を使ってライブラリをロードする必要があります。また、無限大や非数(NaN)を含む複素数の操作には注意が必要です。

Complexが学べる書籍の紹介

「プログラミング単語帳」を使って、プログラミングの単語を英単語のように学習してみませんか?
プログラミング単語帳には、RubyのComplexやTCPSocket、Math、Tempfile、などのような実務でよく使われる単語が数百以上収録されています。
この書籍には、プログラミングの単語の意味や読み方、単語の使い方がわかる例文などが掲載されており、いつでもどこでもプログラミングの学習ができます。

よく使われる単語にだけ絞って学習することができるので、効率的にプログラミングが学習できます。

1日5分の暗記でプログラミンが身に付く!プログラミング単語帳 公式ストアで発売中!

HTML編、CSS編、JavaScript編、PHP編、Ruby編、その他単語編の6シリーズ分が公式ストアにて販売中です。気になった方はぜひ購入してみてください。


Rubyを学べる「プログラミング単語帳」アプリ

プログラミング単語帳がアプリになりました!Rubyはもちろん、10種類のプログラミング言語の中から、よく使われる単語をスマホで学習できます。

収録単語は2,000単語以上!
現在は、HTML、CSS、JavaScirpt、PHP、Laravel、Ruby、Python、MySQL、Linux、など10カテゴリーの単語帳が1つのアプリに収録されています。

いつでも、どこでも、隙間時間を有効活用して、プログラミングを効率的に学べるので、ぜひダウンロードしてみてください。

2024年7月アップデート情報:「Laravel」カテゴリーが追加されましました!

2024年8月アップデート情報:「MySQL」「Linux」カテゴリーが追加されましました!


関連するそのほかの単語

TCPSocket

TCP通信用のソケットクラス

種類: ネットワークプログラミング

Math

数学的な計算を行うモジュール

種類: 数学ライブラリ

Tempfile

一時ファイルを作成・管理

種類: ファイルシステム操作

<=

左が右以下か比較

種類: 演算子

bundle install

Gemfileのライブラリをインストール

種類: Bundler