なぜPythonを計算機として使用すべきか(そしてどのように始めるか)
要約
- 計算機アプリやハンドヘルド計算機は扱いにくいですが、Pythonのインタラクティブモードは計算のための以前の結果を簡単に呼び出します。また、入力をスクロールして検索することもできます。
- Pythonは、携帯型計算機に似た基本的な算術機能を提供します。
- Pythonは、基本的な算術を超えたより複雑な数学演算のために、math、NumPy、SciPy、SymPyなどの高度なライブラリを利用できます。
Pythonプログラマーの間でよくあるジョークは、インタラクティブモードがデスクトップ計算機として素晴らしく機能するということです。これが現実に近い理由は以下の通りです。
計算機には設計上の欠陥があります
ハンドヘルド計算機を使用している場合、基本モデルを持っていると、イライラすることに気付くかもしれません:新しい計算で以前の結果を思い出すのが難しいのです。
一部の電卓では、後で呼び出すために数字をメモリに保存できますが、その仕組みを理解している必要があります。それにはマニュアルを読むことが含まれます。マニュアルは保存しましたよね?もちろん、通常はオンラインでマニュアルを見つけることができます。それはTIやカシオのユーザーには十分かもしれませんが、多くのハードウェア電卓、少なくとも今日購入できるものは、一般的なメーカーからのものです。彼らのための指示を見つけるのは大変でしょう!
電話やコンピュータの計算機アプリもあまり良くありません。これらのプログラムの主な問題は、ハンドヘルド計算機のように見え、機能しようとすることです。ユーザーインターフェースデザイナーの間では、これを「スキューモーフィズム」と呼びます。ソフトウェア計算機は、ボタンを手動でクリックしなければならないため、使いにくく感じます。
数学や科学のコースを受講している場合、試験では携帯型計算機のみが許可される可能性が高いです。自分で作業をする際には、Pythonのようなものを使用する方が良いでしょう。
Pythonのインタラクティブモードは使いやすいです
Pythonはプログラミングのために設計されていますが、ハンドヘルドおよびソフトウェア計算機の多くの問題を解決することができます。
Pythonをインストールし、システムのメニューからインタープリタを呼び出すか、コマンドラインでpythonと入力して実行すると、プロンプトでそれらを入力してEnterを押すだけで、Pythonのすべての標準算術関数を使用できます。
2 + 2
5 * 3
45 - 30
720 / 5
演算子は、加算と減算のための + と -、乗算と除算のための * と/のように、あなたが使ったことがある他の計算機と同様に機能します。
標準のPythonインタプリタはGNU Readlineライブラリを使用しており、以前に入力した内容を簡単に呼び出すことができます。上矢印キーと下矢印キーを使って入力を上下に移動できます。また、Ctrl+r(小文字のr)を押すことで入力を検索することもできます。その後、以前に入力した内容を見つけるために入力を始めることができます。矢印キーを使って入力を上下に移動できます。
_(アンダースコア)変数は前の結果を保存します。これを新しい計算に使用できます。たとえば、前の数を別の数で掛け算するために使用します。
_ * 42.
あるいはそれを二乗すること:
_**2
さらに強力なインタラクティブ操作のためにiPythonをインストールすることもできます。Pythonの使用が終わったら、セッションを終了するにはexit()と入力するか、LinuxまたはmacOSではCtrl+D、WindowsではCtrl+Zを押します(ただし、Windows Subsystem for LinuxでPythonを実行している場合は、他のUnix系システムと同様にCtrl+Dを使用します)。しかし、おそらくそのまま開いておきたいでしょう。計算を行いたい時がいつ来るかわからないし、Pythonを学ぶための素晴らしい口実にもなります。
より高度な数学のために強力なライブラリを活用する
Pythonは簡単な数学には最適ですが、適切なライブラリを使うことでさらに多くのことが可能です。
組み込みの数学ライブラリは、Pythonを科学計算機に変えます。インポート機能を使用して、その関数にアクセスできます。
import math
円周率の近似値が欲しいとします。数学ライブラリでそれを得ることができます。
math.pi
数学ライブラリには三角関数も含まれています。45度のサインを求めたいとします。三角関数はラジアンでの角度を期待しますが、数学ライブラリには両者の間で変換する関数もあります。角度をラジアンに変換するには:
math.radians(45)
そして、この結果のサインを計算するには:
math.sin(_)
関数の引数をチェーンすることで、行数を減らすことができます。
math.sin(radians(45))
さらに高度な数学を行う必要がある場合、インストールできる他の多くのライブラリがあります。これらのライブラリ、例えばNumPy、SciPy、SymPyは、統計から微積分、線形代数、微分方程式まで、あらゆることに取り組むことを可能にします。これらのライブラリの利点は、無料でオープンソースであることです。これがPythonが科学計算の選択言語になりつつある理由であり、言語を学ぶもう一つの理由です。
良い例はSymPyで、これはコンピュータ代数システムです。コンピュータ代数システムは、計算機が数値数学で動作するのと同じように、記号数学で動作します。
二つの主な違いは、平方根のようなものをどのように扱うかです。数学ライブラリのsqrt関数を使用して2の平方根を取ると、完全な平方ではなく、無理数であるため、浮動小数点近似が得られます。
SymPyで平方根を取ると、平方根でない平方根は教科書に見えるように印刷されます。また、自動的に完全平方数を因数分解します。
以下は、インタラクティブセッション向けに設計されたSymPyが提供する特別なインタラクティブインタープリタです。私は数学ライブラリとSymPyからの平方根操作を示しています。後者には平方根記号さえあることに注意してください?
SymPyはさらに強力で、方程式を解いたり、関数の導関数や積分を取ったりすることができます。これらのライブラリはすべて、取り組むための強力なツールです。SageMathは、Mathematica、Maple、MATLABと競争することを目的としたPythonに基づく完全な環境です。
これらの科目を学んでいるなら、Pythonは計算ではなく問題に集中できるようにしてくれます。