指数函数的反函数:

y = logax (a是常数,且a>0, a!=1)

叫做对数函数,它的定义域是区间(0,+∞)。

把指数函数y=a^x的x看作因变量,y看作自变量,就得到了一个新的函数,这个新的函数就是对数函数,指数函数称为对数函数的直接函数。

例1 绘制底为2的对数函数,观察图像的性质

# 导入sympy库

import sympy

from sympy import symbols,plot

# 定义对数函数

def log(y,x):

return sympy.log(x,y)

# 定义数学符号x,y

x=symbols('x')

y=symbols('y')

# 生成对数函数公式

flog = log(2,x)

# 绘制图形

plot(flog,(x,0.1,3))

代码解读

Sympy库提供了log(x,n)函数用于定义logn(x)函数,n是底数,x是自变量。


观察函数图像,图像位于Y轴的右侧,值域为(-∞,+∞),与X轴交点为(1,0),函数值随着x的增大而增大,当底数大于1时,函数单调增加,函数非奇非偶。

例2 绘制底为1/2的对数函数,观察图像的性质

修改例1的程序代码,将语句:

flog = log(2,x)

修改为:

flog = log(1/2,x)

运行程序,可得到底为1/2的函数图像。


观察函数图像,图像位于Y轴的右侧,值域为(-∞,+∞),与X轴交点为(1,0),函数值随着x的增大而减小,当底数大于0小于1时,函数单调减少,函数非奇非偶。

读者可以多次使用不同的底数来绘制对数函数图像,可以得到如下结论:

当底数a>1时,函数在区间(0,+∞)上单调增加,当底数0

例3 绘制底为自然常数e的对数函数

修改例1的程序代码,将语句:

flog = log(2,x)

修改为:

flog = log(sympy.E,x)

运行程序,可得到底为自然常数的的函数图像。


原本要在同一绘图区域绘制指数函数图像、其反函数对数函数图形,及两者图像的对称直线,但Sympy绘制的效果并不理想,为了适应指数函数的图像,Y轴负轴一侧被挤压,导致对数函数图像被拉伸,不能很好呈现指数函数和对数函数的对称效果。

绘制图像的代码如下:

# 导入sympy库
import sympy
from sympy import symbols,plot
# 定义对数函数
def log(y,x):
return sympy.log(x,y)
# 定义指数函数
def exp(y,x):
return y**x
# 定义数学符号x,y
x=symbols('x')
y=symbols('y')
# 生成对数函数公式
flog = log(sympy.E,x)
# 生成直线函数公式
fline = exp(x,1)
# 生成指数函数公式
fexp = exp(sympy.E,x)
plot((flog,(x,0.1,3)),(fline,(x,0.1,3)),(fexp,(x,0.1,3)))

Sympy库用于数值计算还是非常不错的,用于绘制函数图像确实有点小材大用了,后面将使用matplotlib绘制函数图像。