.NETエンジニア・プログラマ向けの技術情報・業界ニュースをお届けします。

  1. FEnet.NETナビ
  2. .NETコラム
  3. プログラミング言語
  4. Python
  5. Pythonでsqrtを扱う方法とは?ルートを計算するためのsqrt関数の使用方法について紹介!

Pythonでsqrtを扱う方法とは?ルートを計算するためのsqrt関数の使用方法について紹介!

  • Python
  • プログラミング言語
公開日時:   更新日時:
Pythonでsqrtを扱う方法とは?ルートを計算するためのsqrt関数の使用方法について紹介!
この記事でわかること
    基本情報技術者試験の試験対策はこちら>>
    システム
    エンジニア
    Pythonでsqrtをどう使うか教えてください。
    プロジェクト
    マネージャー
    はい。ルートを計算するためのsqrt関数の使い方についてご紹介しましょう。

    Pythonでsqrt関数を使って、ルートを計算する4つの方法


    Pythonのsqrt関数を使ってルートを計算する方法として、mathモジュール、numpyモジュール、sympyモジュール、scipyモジュールを紹介します。実際にPythonのソースコードを書きながら確認していきましょう。

    mathモジュールのsqrt関数を使って、ルートを計算する方法

    Pythonの標準ライブラリに含まれているmathモジュールは、以下のように書いてルートを計算します。


    この例では、まずmathモジュールをimportしています。それからsqrt関数を呼び出して、4を引数としてわたしています。その結果として、2.0が返されていることがわかります。

    また、mathモジュールのsqrt関数に配列や負数の引数をわたすとエラーとなってしまうので注意しましょう。

    numpyモジュールのsqrt関数を使って、ルートを計算する方法

    Pythonの外部ライブラリに含まれているnumpyモジュールの使用方法は、mathモジュールと同じです。以下のように書いて、ルートを計算します。


    また、numpyモジュールのsqrt関数では、mathモジュールとは異なり、配列や負数を引数としてわたすことができます。


    この例では、配列[9,8,7]を引数としてわたすと、各要素に対してルートが計算され、配列型で返されていることがわかります。また、負数-9を引数としてわたした場合は、nanが返されています。

    sympyモジュールのsqrt関数を使って、ルートを計算する方法

    Pythonの外部ライブラリに含まれているsympyモジュールの使用方法も、mathモジュールと同じです。以下のように書いて、ルートを計算します。


    ここでmathモジュールやnumpyモジュールと異なる点は、小数点以下が表示されていないということです。別の例もあわせて確認してみましょう。


    これまでmathモジュールやnumpyモジュールのsqrt関数でルート計算で割り切れない場合、無限小数が返されていました。ですが、sympyモジュールでは無理数として返すという特徴があります。

    また、sympyモジュールは、負数を引数としてわたすと虚数単位をつけて結果を返します。


    配列を引数としてわたした場合は、mathモジュールと同様にエラーとなります。

    scipyモジュールのsqrt関数を使って、ルートを計算する方法

    Pythonの外部ライブラリに含まれているscipyモジュールの使用方法は、mathモジュールと同じです。以下のように書いて、ルートを計算します。


    また、scipyモジュールは、配列と負数のルート計算ができます。


    ここで、負数計算の結果にsympyモジュールと違いがあります。それは、scipyモジュールの虚数単位がjとなっていることです。

    Pythonでsqrtを使わずに、ルートを計算する2つの方法

    Pythonでは、べき乗計算をするための算術演算子である**や組み込み関数pow()を使って、ルートを求めることができます。

    算術演算子**を使って、ルートを計算する方法

    以下のように書いて、ルートを計算します。


    36をルート計算(0.5乗)した結果である6.0が返されてることがわかります。また、負数を引数としてわたした場合は、複素数の形式で結果を返します。


    配列を引数としてわたした場合は、エラーとなります。

    組み込み関数pow()を使って、ルートを計算する方法

    以下のように書いて、ルートを計算します。


    49をルート計算(0.5乗)した結果である7.0が返されてることがわかります。また、負数を引数としてわたした場合は、算術演算子**と同様に複素数の形式で結果を返します。


    配列を引数としてわたした場合は、エラーとなります。

    それぞれのルート計算方法の違いは?

    Pythonにおける、sqrt関数を使った4つのルート計算方法と、sqrt関数を使わない2つのルート計算方法を紹介しました。それぞれの計算手法において、算出できる引数のデータ型や、戻り値の形式に違いが見られました。

    それらを以下の表に整理しました。なお、横列は引数のデータ型、縦列は使用モジュール、○×は計算が可能かどうかを表しています。()内は戻り値の形式を表しており、()がない場合は浮動小数点型が戻り値となっています。

    正数 負数 配列
    math × ×
    numpy 〇(nan)
    sympy 〇(整数 or 無理数) 〇(*I) ×
    scipy 〇(j)
    ** 〇(複素数) ×
    pow() 〇(複素数) ×

    計算速度の測定

    いくつかの計算方法がある場合、計算速度は選択の指標になります。以下の表にテストプログラムの実行時間をまとめました。

    計算速度は環境によって変わりますので、この記事の結果は目安としてください。なお、テストプログラムではルート計算を10000*7回実行しています。結果には10000回のルート計算にかかった時間の平均が表示されています。

    測定結果を確認すると、正数のルート計算はmathモジュールや、算術演算子**がより高速だとわかります。

    負数のルート計算は、モジュールによって計算結果の形式が異なりますが、形式は問わないのであれば算術演算子**を使う方法が高速だとわかります。

    配列の計算ができるモジュールはnumpyかscipyのみですが、今回のテストで用いた程度の配列であれば、numpyがより高速だとわかります。

    正数 負数 配列
    math 485 ns - -
    numpy 2.01 µs 6.38 µs 10.5 µs
    sympy 3.16 µs 2.54 µs -
    scipy 21.2 µs 21.9 µs 27.1 µs
    ** 324 ns 556 ns -
    pow() 538 ns 616 ns -
    システム
    エンジニア
    Pythonでsqrt関数を使ったルートの計算方法、よく分かりました。
    プロジェクト
    マネージャー
    Pythonでsqrt関数を使った計算可能な引数や実行速度についてもご参考にしてください。

    まとめ

    いかがでしたでしょうか。Pythonでは、ルートを計算するためのsqrt関数が、標準ライブラリや外部ライブラリにいくつも用意されています。この記事ではそのうち4つの使用方法を紹介しました。また、sqrt関数を使用しないルート計算の方法も2つ紹介しました。

    sqrt関数の引数には注意が必要です。使用するモジュールごとに、エラーにならない引数をわたしているか確認しましょう。また、計算結果の形式がモジュールごとに異なることもあります。返してほしい形式にあわせて、使用するモジュールを選択しましょう。

    ぜひご自身でソースコードを書いて、動作を確認してみてください。実行速度が意識できると、より高速なプログラムの開発に役立ちます。また、エラーメッセージも含めて確認しておくと、今後の開発で同様のエラーメッセージを見たときのヒントになります。

    FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
    株式会社オープンアップシステムロゴ

    株式会社オープンアップシステムはこんな会社です

    秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
    数多くのエンジニアが集まります。

    秋葉原オフィスイメージ
    • スマホアプリから業務系システムまで

      スマホアプリから業務系システムまで

      スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。

    • 充実した研修制度

      充実した研修制度

      毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。

    • 資格取得を応援

      資格取得を応援

      スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。

    • 東証プライム上場企業グループ

      東証プライム上場企業グループ

      オープンアップシステムは東証プライム上場「株式会社夢真ビーネックスグループ」のグループ企業です。

      安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。

    株式会社オープンアップシステムに興味を持った方へ

    株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。

    年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
    まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。

    株式会社オープンアップシステムへのご応募はこちら↓
    株式会社オープンアップシステムへのご応募はこちら↓

    Python新着案件New Job