本文转载自微信公众号《python与大数据分析》,作者是一只小鸟。转载本文请联系python与大数据分析公众号。初等函数是由基本初等函数经过有限次数的四次算术运算和复合运算得到的函数。基本初等函数和初等函数是定义区间内的连续函数。高等数学将基本的初等函数分为五类:幂函数、指数函数、对数函数、三角函数和反三角函数。比较麻烦的是numpy中的幂函数不支持负数域,所以找了很多方法解决这个问题。主要函数代码如下:#!/usr/bin/envpython#-*-coding:UTF-8-*-#_ooOoo_#o8888888o#88"."88#(|-_-|)#O\=/O#____/`---'\____#.'\\||//`.#/\\|||:|||//\#/_|||||-:-||||||-\#||\\\-///||#|\_|''\---/''|_/|#\.-\__`-`___/-./#___`。.'/--.--\`..__#.""'<`.___\_<|>_/___.'>'"".#||:`-\`.;`\_/`;.`/-`:||#\\`-.\___\/___/.-`//#==`-.____`-.___\_____/___.-`____.-'==#`=---=''''@Project:pythonalgorithms@File:basicfunction.py@Author:Invinciblelifeisadrunk@Date:2021/7/1917:39'''importmatplotlib.pyplotaspltimportnumpyasnpimportmathimpl_toolkits.axisartistasaxisartist#导入坐标轴处理模块#----------------函数----------------#给定一个数集A,对A应用一个对应的规则/映射f,记为:f(A),则可以得到另一个数集B,即可以认为B=f(A);#那么这种关系就叫做函数关系,简称函数。#三个重要的因素:域A,范围B,对应的映射规则f。if__name__=="__main__":#A函数Linearfunction()#SecondfunctionQuadraticfunction()#Powerfunctionpowerfunction()#Exponentialfunctionexponentialfunction()#LogarithmicfunctionLogarithmicfunction()一次函数的代码如下:#-----------------Primaryfunction----------------#Primaryfunction是函数的一种,一般是y=ax的形式+b(a,b为常数,a≠0),其中x为自变量,y为因变量。#当b=0时,y=kx(k为常数,k≠0),y称为x的比例函数#当a=0时,y=b时,为常数函数defLinearfunction():fig=plt.figure(figsize=(10,8))plt.rcParams['font.sans-serif']=['SimHei']#画中文plt.rcParams['axes.unicode_minus']=False#画负号x=np.linspace(-10,10,100)i=1alist=[-1,0,1]blist=[-1,0,1]forainalist:forbinblist:plt.subplot(3,3,i)y=x*a+blabel='{}*x+{}'.format(a,b)plt.plot(x,y,label=label)plt.legend()i+=1plt.show()forainalist:forbinblist:y=x*a+blabel='{}*x+{}'.format(a,b)plt.plot(x,y,label=label)i+=1plt.title("一次性函数")plt.legend()plt.show()二次函数的代码如下:#二次函数的基本表达形式为y=ax2+bx+c(a≠0)。#二次函数的最高阶一定是二次函数,二次函数的像是一条抛物线,其对称轴与y轴平行或重合。#其中a称为二次项系数,b为一阶项系数,c为常数项。x是自变量,y是因变量。等号右边的自变量的最高次是2。#如果y值等于0,可以得到一个二次方程。该方程的解称为方程的根或函数的零点。#顶点坐标=(-b/2a,(4ac-b2)/4adefQuadraticfunction():fig=plt.figure(figsize=(10,8))plt.rcParams['font.sans-serif']=['SimHei']#绘图中文plt.rcParams['axes.unicode_minus']=False#绘图负号x=np.linspace(-2,2,100)alist=[-1,1]blist=[-1,0,1]clist=[-1,0,1]forainalist:forbinblist:forcinclist:y=a*x*x+b*x+clabel='{}*x*x+{}*x+{}'.format(a,b,c)plt.plot(x,y,label=label)plt.title("Quadraticfunction")plt.legend()plt.show()幂函数代码如下:#幂函数是其中的一个基本初等函数。#一般把y=xα(α为有理数)的函数,即以底为自变量,幂为因变量,指数为常数的函数称为a幂函数。#例如函数y=x0,y=x,y=x2,y=x3。#a=正数#a是>0自然数x域(-∞,∞)#a是<0整数X域(-∞,0),(0,∞)##a>0小数#a=n/mm为奇数,n为偶数,x的定义域为(-∞,∞),y的定义域为[0,+∞)#a=n/mm为奇数,n为奇数,x的定义域为(-∞,∞),y定义域(-∞,∞)#a=n/mm为偶数,n不限,x定义域[0,∞),ydomain[0,+∞)##a<0分数#a=n/mm为奇数,n为偶数,x的定义域(-∞,0),(0,∞),则y的定义域(0,+∞)#a=n/mm为奇数,n为奇数,x的定义域为(-∞,0),(0,∞),y的定义域为(-∞,0),(0,∞)#a=n/mm为偶数,n不限,x域(0,∞),y域(0,+∞)defpowerfunction():plt.figure(figsize=(10,8))ax=plt.gca()#获取当前坐标轴plt.rcParams[通过gca:getcurrentaxis['font.sans-serif']=['SimHei']#绘图中文plt.rcParams['axes.unicode_minus']=False#绘制负号x=np.linspace(-2,2,100)alist=[1,2,3,4]forainalist:y=np.power(x,a)label='math.pow(x,{}'.format(a)plt.plot(x,y,label=label)#设置图片的右边框和上边框不是显示ax.spines['right'].set_color('none')ax.spines['top'].set_color('none')#移动x轴和y轴的位置,也就是图片的位置lowerborder和leftborder#data表示x轴的位置由value设置,x轴绑定到y=0的位置ax.spines['bottom'].set_position(('data',0))#axes表示以百分比的形式设置坐标轴的位置,即绑定y轴到x轴50%position#ax.spines['left'].set_position(('axes',0.5))ax.spines['left'].set_position(('data',0))plt.title("幂指数,a是正整数")plt.legend()plt.show()plt.figure(figsize=(10,8))ax=plt.gca()#通过gca获取当前坐标轴:getcurrentaxisplt.rcParams['font.sans-serif']=['SimHei']#画中文plt.rcParams['axes.unicode_minus']=False#画负号x=np.append(np.linspace(-1,-0.01,100),np.linspace(0.01,1,100))alist=[-1,-2,-3]forainalist:y=np.power(x,a)label='math.pow(x,{}'.format(a)plt.plot(x,y,label=label)#设置图片右边框和上边框不显示ax.spines['right'].set_color('none')ax.spines['top'].set_color('none')#移动x轴和y轴的位置,即图片下边框和左边框的位置#data表示x轴的位置由value设置,而x轴绑定到y=0的位置ax.spines['bottom'].set_position(('data',0))#axes表示以百分比的形式设置轴的位置,即将y轴绑定到x轴的50%#ax.spines['left'].set_position(('axes',0.5))ax.spines['left'].set_position(('data',0))plt.title("幂指数,a为负整数")plt.legend()plt.show()#a>0fraction#a=n/mm为奇数,n为奇数,x的定义域(-∞,∞),y的定义域(-∞,∞)4/3#a=n/mm为奇数,n为偶数,定义域x的为[0,+∞),y的定义域为[0,+∞)4/3#a=n/mm为偶数,n不限,x的定义域为(-∞,∞),y的定义域为[0,+∞)1/2,3/2plt.figure(figsize=(10,8))ax=plt.gca()#通过gca获取当前轴:getcurrentaxisplt.rcParams['font.sans-serif']=['SimHei']#绘图中文plt.rcParams['axes.unicode_minus']=False#绘制负号x=np.linspace(-2,2,100)alist=[1/3,5/3,7/3]forainalist:#y=np.power(x,a)#RuntimeWarning:在powery=np.float_power(abs(x),a)*np.sign(x)label='math.pow(x,{}'.format(a)plt.plot(x,y,label=label)#设置右边框和上边框图片不显示ax.spines['right'].set_color('none')ax.spines['top'].set_color('none')#移动x轴和y轴的位置,也就是图片的下边框和左边框#data表示x轴的位置由value设置,x轴绑定到y=0的位置ax.spines['bottom'].set_position(('data',0))#axes表示以百分比形式设置轴Position,即绑定y轴为x轴的50%#ax.spines['left'].set_position(('axes',0.5))ax.spines['left'].set_position(('data',0))plt.title("幂指数、分子、分母均为奇数")plt.legend()plt.show()plt.figure(figsize=(10,8))ax=plt.gca()#passgca:getcurrentaxis得到current轴plt.rcParams['font.sans-serif']=['SimHei']#画中文plt.rcParams['axes.unicode_minus']=False#画负号x=np.linspace(0,2,100)alist=[1/8,1/4,1/2]forainalist:y=np.power(x,a)#y=np.float_power(abs(x),a)*np.sign(x)label='math.pow(x,{}'.format(a)plt.plot(x,y,label=label)#设置图片右边框和上边框不显示ax.spines['right'].set_color('none')ax.spines['top'].set_color('none')#移动x轴和y轴的位置,即图片下边框和左边框的位置#data表示通过值Position设置x轴,在y=0的位置绑定x轴ax.spines['bottom'].set_position(('data',0))#axes表示设置的位置轴的百分比形式,即绑定y轴在x轴50%的位置#ax.spines['left'].set_position(('axes',0.5))ax.spines['left'].set_position(('data',0))plt.title("幂指数,分母为偶数")plt.legend()plt.show()plt.figure(figsize=(10,8))ax=plt.gca()#通过gca获取当前坐标轴:getcurrentaxisplt.rcParams['font.sans-serif']=['SimHei']#绘图中文plt.rcParams['axes.unicode_minus']=False#绘制负号x=np.linspace(-2,2,100)alist=[2/3,4/5,6/7,4/3,8/5]forainalist:y=np.power(abs(x),a)label='math.pow(x,{}'.format(a)plt.plot(x,y,label=label)#设置图片右边框和上边框不显示ax.spines['right'].set_color('none')ax.spines['top'].set_color('none')#移动x轴和y轴的位置,即图片的下边框和左边框的位置#data表示x轴的位置由值设置,xaxis绑定到y=0ax.spines['bottom'].set_position(('data',0))#axes表示以百分比的形式设置坐标轴的位置,即绑定y轴到x轴的50%#ax。spines['left'].set_position(('axes',0.5))ax.spines['left'].set_position(('data',0))plt.title("幂指数,分子为偶数且分母是奇数”)plt.legend()plt。show()#关于负数我不再重复描述#a<0分数#a=n/mm为奇数,x的定义域为(-∞,0),(0,∞),定义域y的为(0,+∞)#a=n/mm为偶数,x的定义域(-∞,0),(0,∞),y的定义域(-∞,0),(0,∞)#a=n/mm为偶数,n无限大,x域(0,∞),y域(0,+∞)指数函数代码如下:#指数函数是重要的函数之一基本初等函数#一般把y=ax函数(a为常数,a>0,a≠1)称为指数函数,函数的定义域为R。[1]#注意在指数函数的定义表达式中,ax之前的系数必须是数字1,自变量x必须在索引的位置,不能是x的其他表达式,#否则,它不是索引函数defexponentialfunction():plt.figure(figsize=(10,8))ax=plt.gca()#通过gca获取当前坐标轴:getcurrentaxisplt.rcParams['font.sans-serif']=['SimHei']#绘图中文plt.rcParams['axes.unicode_minus']=False#绘图负号#a>0a!=1#定义域为((-∞,∞),取值范围为(0,+∞),全部通过(0,1)点x=np.linspace(-2,2,100)alist=[1/4,1/3,1/2,2,3,4]forainalist:y=np.power(a,x)label='math.pow(x,{}'.format(a)plt.plot(x,y,label=label)#设置图片右边框和上边框不显示ax.spines['right'].set_color('none')ax.spines['top'].set_color('none')#移动x轴和y轴的位置,即下边框的位置图片的左边框#data表示设置xaxis按值定位,在y=0的位置绑定x轴ax.spines['bottom'].set_position(('data',0))#axes的意思是设置轴的位置,形式为一个百分比,即绑定y轴在x轴50%的位置#ax.spines['left'].set_position(('axes',0.5))ax.spines['left'].set_position(('data',0))plt.title("Exponentexponent")plt.legend()plt.show()对数函数代码如下:(真数)是自变量,指数是因变量,底是常数。#对数函数是6种基本初等函数之一。对数的定义:#若ax=N(a>0,且a≠1),则数x称为以a为底的以N为底的对数,记为x=logaN,读作底的对数N,其中a称为对数的底,N称为实数。#一般把函数y=logaX(a>0,且a≠1)称为对数函数,也就是说以幂(真数)为自变量,指数为因变量的函数,以底为常数的函数称为对数函数。#其中x为自变量,函数的定义域为(0,+∞),即x>0。它实际上是指数函数的反函数,可以表示为x=ay。因此,指数函数中对a的规定也适用于对数函数。defLogarithmicfunction():plt.figure(figsize=(10,8))ax=plt.gca()#通过gca获取当前坐标轴:getcurrentaxisplt.rcParams['font.sans-serif']=['SimHei']#画中文plt.rcParams['axes.unicode_minus']=False#画负号#a>0a!=1#定义域为((-∞,∞),取值范围为(0,+∞),allpass(0,1)point#当a>1时,单调递增#当0
