指数と対数について - グラフ描画

ICTTECH(工科)

 大ーきな数、小ーさな数の扱い方。
 1000を10×10×10=103、100万を106、10億を109と表して、103×106=109といった計算が指数計算。
 例えば5の5乗は、5×5×5×5×5で、55
 Excelだと5^5、Pythonだと5**5。R言語はどっちでも。
 Excelだと5^5^5で、3125^5 → 2.980E+17(=2.980×1017
 Pythonだと5**5**5で、

 オーマイ5-。3125の5乗ではなく5の3125乗で、2000桁超(2185桁)になる。超ー無量大数。R言語もPythonと同じだが、返り値はInf。Infinity=無限大 ∞。
 5の100乗が7.889E+69(=7.889×1069)。70桁。無量大数。
 Python Jupyterの場合、

%precision %.3E
5.0**100

で小数点以下3桁までのE+表記になる。

%precision

で元通り。 

 kのx乗 --- y=kx
 kの0乗 --- y=k0=1。
 kの-x乗 --- y=k-x=1/kx
 これら累乗(べき乗)。kが底(てい)。xが指数。
 kが同じならば、
 kx × kz = kx+z
といった具合にまとめられる。
 kx-z = kx × k-z = kx / kz
 10ー3/10ー6=103
といった具合。
 kxz = (kx)z

 指数の逆関数が対数。
 逆関数とは、まあ、逆です。例えば、y=kxの逆関数は、x=y/k。比例が反比例になるわけじゃない。
 y=kxもx=~の形にすればよいのだが……。
 logという記号を使って
 x=logk y
となる。
 ログはログでもblogのlogではなく、logarithmの略。
 突如妙な記号が現れて、だんだん消化不良を起こし始める。

 0=logk 1
 1=logk k
 n log k=log kn

 log xz = log x + log z
 log x/z = log x - log z
は、
 log kx・kz = (x+z)log k、log kx = x log k、log kz = z log k
といった具合に確かに成り立つ。

 x=10、z=2とか値を入れてみる。

import numpy as np
np.log(5)

 =1.6094379124341003
 np.log(10)=2.3025850929940459
 np.log(2)=0.69314718055994529
といった具合。
 コンピューターのおかげで気軽に計算できる。

 底のkが省略されているlogの場合、k=10かk=e。
 log10は常用対数、logeは自然対数。
 上記のnp.log()は、k=e。約2.7。
 log10 2は、np.log10(2)=0.3010299956639812。
 k=2の場合、np.log2()。

 NumPyライブラリは、底が2、10、eの場合しか対応した関数がない。
 Python標準ライブラリのmathモジュールなら、ある。
 例えばlog3 10の場合、

import math
math.log(10,3)

 =2.095903
 ExcelやR言語もlog(10,3)

 Numpyライブラリの場合、底の変換公式と呼ばれる
 loga b = logc b/logc a
を使う。底のcは何でもよいので、
 log3 10 = log 10/log 3 

import numpy as np
np.log(10)/np.log(3)

で、=2.095903。

グラフ

 下図は指数のグラフ。

import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-1,5,50)
z2 = 2**x
ze = np.e**x
z3 = 3**x
plt.plot(x,z2,"-",color="purple",label="2^x")
plt.plot(x,ze,"-",color="orange",label="e^x")
plt.plot(x,z3,"-",color="red",label="3^x")
plt.legend(loc="upper left")
plt.show()

 x=0でy=1。x<0のときy<1。y=0にはならない。

 下図は対数のグラフ。

x = np.linspace(0,10,50)
z2 = np.log2(x)
ze = np.log(x)
z3 = np.log(x)/np.log(3)
plt.plot(x,z2,"-",color="purple",label="log_2 x")
plt.plot(x,ze,"-",color="orange",label="ln x")
plt.plot(x,z3,"-",color="red",label="log_3 x")
plt.legend(loc="upper left")
plt.show()

 loge 2、loge e、loge 3、……のloge x(=ln x)など対数の曲線も右上がりだが、指数の曲線とは異なる。
 x=1でy=0。x<1のときy<0。x=0にはならない。

 つづく。

スポンサーリンク
ふシゼン
タイトルとURLをコピーしました