指数函数的反函数:
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绘制函数图像。