質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

4回答

2220閲覧

ruby で複素数の計算

manman

総合スコア233

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

1クリップ

投稿2017/04/25 12:46

1 + 2i
とすると、
=> (1+2i)
となりますが、

ruby

1(1..5).each{|a| 2 (1..5).each{|b| 3 p (a + bi) ** 2 4 } 5}

としてもうまくいかないのですが、どのように修正すればいいですか?
なお、Ruby のバージョンは2.1 以降です。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

Ruby

1(1..5).each{|a| 2 (1..5).each{|b| 3 p Complex(a, b) ** 2 4 } 5}

で、できます。

【解説】

まず1 + 2iですが、1.+(2i)と解釈されます。ここで、注目して欲しいのは、2iがこれでひとつのリテラルであるということです。2iを分離することはできません。

例えば、23を考えて下さい。

Ruby

1a = 2 2b = a3 3puts b

こんなことってできるでしょうか?もちろん、できませんよね。それと同じで

Ruby

1a = 2 2b = ai 3puts b

ということもできません。複素数の虚数を表すiは数字と分離して、変数にくっつけるなんて事はできないのです。

では、任意の数の変数に対して、これを虚数の値にするにはどうするのか?方法はいくつかあります。

Ruby

1a = 2 2puts Complex(0, a) 3puts Complex.rect(0, a) 4puts a * 1i 5puts a * Complex::I

最初の二つは複素数を作成するメソッドです(一番目はComplexクラスではなくKernelのComplexメソッドです)。残り二つは虚数単位を掛けることで虚数の値にしています。全て同じ値になります。

このように、リテラルでは書けない場合は、Complexメソッドを使ったり、虚数単位を掛けたりすることで、複素数を生成することができるようになります。

投稿2017/04/25 13:09

raccy

総合スコア21735

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

多分うっかりされているとおもうのですが、

biと書いてもrubyはそれが変数bの値に虚数単位を乗じた値とはみなしてくれず、
biという名前の変数だと解釈するのではないでしょうか・・・

Complex(a, b)と書けばよいと思います。

投稿2017/04/25 13:04

KSwordOfHaste

総合スコア18394

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

p (a + b*1i) ** 2
または、
p Complex(a,b)**2

投稿2017/04/25 13:07

otn

総合スコア84491

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

参考コードを示します。

イメージ説明

投稿2017/04/26 17:43

katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問