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に代入して計算と繰り返すことで、求めたい値に近い値を得られます。
有効桁数を指定して平方根を求める方法
有効桁数を指定する場合は、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や**を押さえて、平方根を計算できるようにしましょう。ニュートン法もよければ覚えてください。
筆者プロフィール
メンター金成さん
フリーランスエンジニア。 使える言語は、ruby python go。最近はgoにハマってます。 |
内容分かりやすくて良かったです!
ゆかりちゃんも分からないことがあったら質問してね!
分かりました。ありがとうございます!
TechAcademyでは、初心者でもRuby on Railsを使ったプログラミングを習得できるオンラインブートキャンプRuby講座を開催しています。
挫折しない学習方法を知れる説明動画や、現役エンジニアとのビデオ通話とチャットサポート、学習用カリキュラムを体験できる無料体験も実施しているので、ぜひ参加してみてください。