LoginSignup
1
2

More than 5 years have passed since last update.

Python(3)を関数電卓代わりに使用してみた

Last updated at Posted at 2016-02-23

準備

使用したPythonのバージョンは3.5.1です。パッケージとしてnumpy・(scipy・)matplotlib・sympyをインストールすると便利ですが、今回は使用しません。
LinuxでパッケージでPythonをインストールした場合は同じくパッケージからインストールできます。それ以外の人はpipを使用します。(Windowsの場合は予め管理者権限でコマンドプロンプト・パワーシェルを起動し、pipでwheelパッケージをインストール(pip install wheel)します。pipでのインストールに失敗する場合には https://pypi.python.org/pypi/wheel/ からPythonのアーキテクチャ(32/64ビット)・バージョンに合ったwheelを予めダウンロードしてから「pip install」に食わせてください)

関数電卓代わりに使用する

Unix系の場合は端末から起動します。(python3)
Windowsの場合はパスさえ通せばコマンドプロンプト・パワーシェルから起動できますが、鷗などShift-JISにない文字列が使用できません。

まずは基本的な演算です。

>>> 1 + 1
2
>>> 2**3
8
>>> 1/2
0.5
>>> 1 % 2
1
>>> 5 % 3
2
>>> 0.5 * 0.25
0.125

変数の設定・使用・削除は次のようになります。

>>> x = 5
>>> x ** 2
25
>>> del(x)

次に各種関数を使用します。

まず、
$\sin \frac{\pi}{4}$
を求めてみます。

>>> import math as MT
>>> MT.sin(MT.pi * 0.25)
0.7071067811865476

次に、610!を求めてみます。

$n! = \prod_{k=1}^n k = \prod_{k=2}^n k\qquad(n \geq 2)$

の両辺に常用対数を取って

$\log_{10} n! = \sum_{k=2}^n \log_{10} k$

$n = 610$を代入して

$\log_{10} 610! = \sum_{k=2}^610 \log_{10} k$

610!をそのまま求めると桁数がヤバイことになるので、$a\times 10^b\quad(1\leq a < 10 \wedge b \in \mathbb{Z})$の係数で求めます。

$610! = a \times 10^b $

の両辺に常用対数を取って

$\log_{10} 610! =\log_{10} a + b$

$0 \leq \log_{10} a < 1 \wedge b \in \mathbb{Z}$から、

$\begin{cases}
\log_{10} a & = \log_{10} 610! - \lfloor\log_{10} 610!\rfloor\newline
b & = \lfloor\log_{10} 610!\rfloor
\end{cases}$

すなわち、

$\begin{cases}
a & = 10^{\log_{10} 610! - \lfloor\log_{10} 610!\rfloor}\newline
b & = \lfloor\log_{10} 610!\rfloor
\end{cases}$

となります。

関連:
https://pbs.twimg.com/media/Cb4JVdcUEAANma0.jpg

これをPythonに書き下すと次のようになります。

>>> val = 0
>>> for i in range(2,611):
    val += MT.log10(i)


>>> print("610! = ", 10 ** (val - MT.floor(val)), "×10^", MT.floor(val), sep = "")
610! = 8.382616099017579×10^1435

うわ~マクドボッタクリだ~(棒読み)

numpy・scipy・sympy・matplotlib

numpy・scipyを使用すると行列・ベクトル演算をはじめさらに高度なことができます。(e.g. numpy.array)
また、sympyは変数式の変形・方程式の求解などができます。(e.g. sympy.symbols)
matplotlibはグラフの描画ができます。すなわちgnuplotの仕事を奪えます。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2