Rubyで平方根を求める方法を現役エンジニアが解説【初心者向け】
初心者向けにRubyで平方根を求める方法について現役エンジニアが解説しています。xを二乗するとyになるとき、xはyの平方根になります。平方根を求めるには、Mathクラスのsqrtメソッドを使います。また**演算子やニュートン法でも求めることが出来ます。
テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日 調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名 調査手法:インターネット調査
Rubyで平方根を求める方法について解説します。
そもそもRubyについてよく分からないという方は、Rubyとは何なのか解説した記事を読むとさらに理解が深まります。
なお本記事は、TechAcademyのオンラインブートキャンプRuby講座の内容をもとに紹介しています。

今回は、Rubyに関する内容だね!

どういう内容でしょうか?

Rubyで平方根を求める方法について詳しく説明していくね!

お願いします!
平方根を求める方法
Rubyで平方根を計算する場合は、大きく分けて3つ方法があります。通常はsqrtと**が扱えれば十分です。
興味があれば、ニュートン法も知っておきましょう。
- Mathモジュールのsqrtメソッドを使用する
- 指数の計算に利用する演算子「**」を使用する
- ニュートン法で計算する
1.のsqrtメソッドを使用する場合は、平方根を求めたい数値を引数に渡すことで計算できます。
以下のように使用します。
Math.sqrt(2) #=> 1.4142135623730951
2.のように**で平方根を計算する場合は、計算する数値を1/2乗することで求められます。
1/2とすると、2の1乗になってしまうので、1/2.0と書きましょう。
2**(1/2.0) #=> 1.4142135623730951
ちなみに **1/3.0とすれば3乗根が、**1/4.0とすれば4乗根が計算できます。
ニュートン法で平方根を求める方法
3つ目の方法としてニュートン法があります。
f(x)=0になるようなxを求めるアルゴリズムの1つで、方程式の近似値(解に近い値)を算出できます。
手順としては、方程式を作る->ニュートン法の漸化式に当てはめる->計算を繰り返す、と言った形になります。
計算を繰り返すたびに求める値に近づいていきます。
√2を求める場合であれば、求める関数をf(x)=x^2 – 2 とおきます。
ニュートン法の漸化式
Xn+1 = Xn – f(Xn)/f’(Xn)に当てはめて
Xn+1 = Xn – (Xn^2 -2)/2Xn という関係式を算出します。
最後に適当なXnを代入して計算して、Xn+1を計算。
その計算結果をまたXnに代入して計算と繰り返すことで、求めたい値に近い値を得られます。
[PR] Rubyのプログラミングで挫折しない学習方法を動画で公開中
有効桁数を指定して平方根を求める方法
有効桁数を指定する場合は、floor/ceil/roundを押さえておきましょう。
floorで切り捨て、ceilで切り上げ、roundで四捨五入ができます。引数で桁数を指定できます。
使い方は、以下の通りです。
1.2345.floor(3) 1.2345.ceil(3) 1.2345.round(3)
実際に書いてみよう
まずは、sqrtや**からみていきます。以下のように書いてみてください。
# √2を計算 puts Math.sqrt(2) puts 2**(1/2.0) # floor/ceil/roundで桁数を指定 puts Math.sqrt(2).floor(3) puts Math.sqrt(2).ceil(3) puts Math.sqrt(2).round(3)
計算結果は以下のようになります。
1.4142135623730951
1.4142135623730951
1.414
1.415
1.414
次にニュートン法を使用した計算をみていきます。
以下のようにコーディングしましょう。
# 適当な初期値の設定 x = 5.0 10.times {|i| # 漸化式を元に計算する # この時x2の方がxより求める値に近くなる x2 = x - (x * x - 2) / (x * 2) # x2をxに代入する x = x2 puts "#{i}回目: #{x}" }
実行結果は以下の通りです。繰り返すたびに値が√2に近づきます。
0回目: 2.7
1回目: 1.7203703703703703
2回目: 1.44145536817765
3回目: 1.414470981367771
4回目: 1.4142135857968836
5回目: 1.4142135623730951
6回目: 1.414213562373095
7回目: 1.4142135623730951
8回目: 1.414213562373095
9回目: 1.4142135623730951
ニュートン法はただ平方根を求めたい場合には向きませんが、複雑な関係式から解を算出する場合に必要です。
以上で解説を終わります。sqrtや**を押さえて、平方根を計算できるようにしましょう。ニュートン法もよければ覚えてください。
実は私も!?独学で損する人の特徴
「スクールは高いから独学で成功する」という気持ちの方は多いと思います。
もちろんその方が金額は低く抑えられるでしょう。
ただ
独学には向き不向きがあり、実はスクールが向いている人も大勢います。
そんな方のために参考として、
テックアカデミー卒業生がスクールを選んだ理由
をご紹介します。
- ・困って挫折しそうなときに、質問や相談できる相手がいる環境で学んでいきたいなと思った
- ・わかった気になっているだけだったので、自分を追い込む環境に置いた方がいいと感じた
- ・スクールのカリキュラムで市場に求められるスキルを学ぶべきと思った

少しでも当てはまる部分があれば、
スクールが向いているかもしれません。
お試しのつもりで、まずは一度
無料相談
に参加してみませんか?
現役エンジニア・デザイナーに何でも気軽に相談できる30分
を
すべて無料で
できます。
無理な勧誘は一切ない
ので、お気軽にご参加ください。
筆者プロフィール
メンター金成さん
フリーランスエンジニア。 使える言語は、ruby python go。最近はgoにハマってます。 |

内容分かりやすくて良かったです!

ゆかりちゃんも分からないことがあったら質問してね!

分かりました。ありがとうございます!
TechAcademyでは、初心者でもRuby on Railsを使ったプログラミングを習得できるオンラインブートキャンプRuby講座を開催しています。
挫折しない学習方法を知れる説明動画や、現役エンジニアとのビデオ通話とチャットサポート、学習用カリキュラムを体験できる無料体験も実施しているので、ぜひ参加してみてください。

プログラミングを独学していて、このように感じた経験はないでしょうか?
- ・調べてもほしい情報が見つからない
- ・独学のスキルが実際の業務で通用するのか不安
- ・目標への学習プランがわからず、迷子になりそう
テックアカデミーでは、このような
学習に不安を抱えている方へ、現役エンジニア講師とマンツーマンで相談できる機会を無料で提供
しています。
30分間、オンラインでどんなことでも質問し放題です。
「受けてよかった」と感じていただけるよう
厳しい試験を通過した講師
があなたの相談に真摯に向き合います。
「ただ気になることを相談したい」
「漠然としているがプロの話を聞いてみたい」
こんな気持ちでも大丈夫です。
無理な勧誘は一切ありません
ので、まずはお気軽にご参加ください。
※体験用のカリキュラムも無料で配布いたします。(1週間限定)