スライドショー

【Python入門】Pythonの色々なルート計算方法をマスターしよう!

こんにちは! プログラマーのakiraです。

PythonではmathモジュールやNumPyを使用して、さまざまな演算やルート計算を行えます。

「Pythonでルートの計算はどうやるの?」
「NumPyのルートの計算はどうやるの?」

そのような悩みを抱えている人に向けて、この記事では以下の内容で解説していきます!


・ mathを使用したルートの計算方法
・ NumPyでのルート計算方法
・ mathとNumPyのルート計算の比較

mathモジュールやNumPyを使用すれば、複雑な計算も簡単に行えます!

是非参考にしてくださいね!

mathを使用してルートの計算をしてみよう!

mathモジュールは、標準で提供されている数学計算のモジュールです。

このmathを使用したルートの計算方法を詳しく見ていきましょう!

mathでよく使われている数学関数を詳しく知りたい!という方は以下の記事にまとめられていますので参考にしてください!

math.sqrtの使い方

Pythonでmathモジュール使用するには、まずimport文でmathを読み込む必要があります。

以下の実行書式を見てください!

まずプログラムの先頭で忘れずにmathをimportしてあげてください!
求めたいルートの値をxに入れることで、ルート計算の結果を得ることができます!

import math

math.sqrt(x)

次項で実際にサンプルコードを実行して、ルート計算をより詳しく見ていきましょう!

ルート計算の基礎

それでは実際にサンプルコードを実行してルートの計算を見ていきましょう!

以下のサンプルコードでは、「math.sqrtの使い方」の項で説明した書式のx部分に1〜5までの数値を入力しています。

実行結果では、入力した1〜5までのルートの計算結果が出力されていることがわかるかと思います!

import math

print("√1")
print(math.sqrt(1))

print("√2")
print(math.sqrt(2))

print("√3")
print(math.sqrt(3))

print("√4")
print(math.sqrt(4))

print("√5")
print(math.sqrt(5))

実行結果

√1
1.0
√2
1.4142135623730951
√3
1.7320508075688772
√4
2.0
√5
2.23606797749979

色々なルートの計算をしてみよう!

それでは、基礎で学んだことを応用して、様々なルートの計算をしてみましょう!

以下のルート計算mathでやってみましょう!
2√3 + 3√3
2√3 + 3√5

2√3 → 「2 * math.sqrt(3)」、 3√3 → 「3 * math.sqrt(3)」、3√5 → 「3 * math.sqrt(5)」とすることでPythonでルートの計算もできるのです!

import math

result1 = 2 * math.sqrt(3) + 3 * math.sqrt(3)
print("result1")
print(result1)

result2 = 2 * math.sqrt(3) + 3 * math.sqrt(5)
print("result2")
print(result2)

実行結果

result1
8.660254037844386
result2
10.172305547637123

次は、ルートの大小比較をやってみましょう!

以下の値の大小を不等号で表してみましょう!
・ 6√3、 3、 2√2

import math

x = 3
y = 2 * math.sqrt(2)
z = 6 / math.sqrt(3)

print(x)
print(y)
print(z)

実行結果

3
2.8284271247461903
3.464101615137755

実行結果より、

2√2 < 3 < 6√3
の大小関係であることがわかりましたね!

NumPyを使用してルートの計算をしてみよう!

今度はNumPyを使用してルートの計算をしていきましょう!

NumPyとは、Pythonの学術計算ライブラリになります!
ndarrayというNumPyの配列を使用し、高速に少ないコード量で様々な数値計算が行えます。

NumPyの四則演算や様々な数学計算はこちらの記事にも紹介されていますので参考にしてください!

np.sqrtの使い方

NumPyでルートの計算をするには、まずimport文でnumpyの読み込みを行います!

以下の実行書式のように、NumPyをimport後にx部分に値を入力することで、ルート計算の結果を得ることができます!

import numpy as np

np.sqrt(x)

次項でさっそくNumPyを使用したルート計算をやっていきましょう!

ルート計算の基礎

それでは、mathルート計算で学習したものと同様にサンプルコードを実行してNumPyルート計算も見ていきましょう!

np.sqrt(x)のx部分に1〜5までの数値を入力し、ルート計算を行っています!

import numpy as np

print("√1")
print(np.sqrt(1))

print("√2")
print(np.sqrt(2))

print("√3")
print(np.sqrt(3))

print("√4")
print(np.sqrt(4))

print("√5")
print(np.sqrt(5))

実行結果

√1
1.0
√2
1.4142135623730951
√3
1.7320508075688772
√4
2.0
√5
2.23606797749979

色々なルートの計算をしてみよう!

それではNumPyを使用して、色々なルート計算をしてみましょう!

mathでルート計算をした時と同様に、2√3 → 「2 * np.sqrt(3)」、 3√3 → 「3 * np.sqrt(3)」とすることでNumPyでもルートの計算ができるのです!

またNumPyでは、NumPyとはで解説したndarrayを使用して簡単に多次元の配列の計算が可能となります。

ここでは、全要素が√2の行列(2 × 2)であるarrを掛け算して、各要素がそれぞれ2になっていることがわかるかと思います!

import numpy as np

result1 = 2 * np.sqrt(3) + 3 * np.sqrt(3)
print("result1")
print(result1)


arr = np.full((2,2), np.sqrt(2))
print("arr")
print(arr)

result2 = arr * arr
print("result2")
print(result2)

実行結果

result1
8.660254037844386
arr
[[1.41421356 1.41421356]
 [1.41421356 1.41421356]]
result2
[[2. 2.]
 [2. 2.]]

mathとNumPyのルート計算を比較してみよう!

これまでルート計算の方法について、mathとNumPyを使用する方法について見てきました!

今回は、両者の違いやどう使い分けるべきかについても見ていきましょう!

異なっている点を確認しよう!

これまでのルート計算で見てきましたがmathと比較して、NumPyルート計算では多次元配列の計算も簡単にできることがわかりましたね!

それでは、次は時間を計測して比較してみましょう!
timeモジュールは、時間計測に用いることができるモジュールです。

timeモジュールの詳しい説明はこちらの記事を見てみてください!

import time
import math
import numpy as np

start = time.time()
for _ in range(10000000):
    math.sqrt(100)
print('math time: {}'.format(time.time() - start))


start = time.time()
for _ in range(10000000):
    np.sqrt(100)
print('np time: {}'.format(time.time() - start))

実行結果

math time: 1.2254984378814697
np time: 9.516222953796387

実行速度についてはプログラムを実行する環境にも左右されますが、実行結果よりmathの方が早いのは確かであるかと思います。

それぞれの用途について確認しよう!

前項でmathNumPyの実行速度について確認し、mathの方が早いことがわかりました!
それでは、Pythonにおける計算は全てmathを使用した方が良いのでしょうか?

私はそれは計算の用途次第になるかと思います!

mathは単純な数値計算が高速な一方で、行列などの多次元配列の計算を行うには手間がかかり、Pythonで複雑な処理をすることになると結果的に遅くなってしまう場合もあるかと思います。

その点NumPyは多次元配列を簡単に扱うことができ、複雑な処理でも少ないコードで高速に計算できるようになっているのです。

つまり、単純な数値計算ではmath行列などの多次元配列を用いて計算する場合はNumPyとそれぞれの用途で使い分けるのが良いかと思います!

まとめ

いかがでしたでしょうか。
今回は、mathNumPyを使用したルートの計算について学習しました!

Pythonはルート計算などの数値計算ライブラリが充実していて様々な方法がありますが、それぞれの特徴を理解してうまく使い分けができるといいですね!

LINEで送る
Pocket

無料でSEからWebエンジニアへ転職しませんか?



侍エンジニア塾では、完全未経験の方から現在SEだけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、

  • システムエンジニアという職業だけどコードが書けない
  • 事務作業が多くスキルがないため将来が不安
  • スクールに通うと完全未経験者と同じスタートになるからレベルが合わない
という、すでに知識があるSEならではのお悩みがあることに気づきました。そんな方におすすめなのが、弊社の「転職コース 」です。

弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。さらにこちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。

既に知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。

まずは無料体験レッスンを予約する

書いた人

akira

akira

インフラエンジニア→プログラマー。趣味は3歳の子供にPCの使い方、タイピングを教えること。業務ではPython, PHP, Javaなどやってます。

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説