python实现之初等函数一
初等函数是由基本初等函数经过有限次的四则运算和复合运算所得到的函数。基本初等函数和初等函数在其定义区间内均为连续函数。高等数学将基本初等函数归为五类:幂函数、指数函数、对数函数、三角函数、反三角函数。
比较头疼的是numpy中的幂函数不支持负数定义域,所以找了很多办法来解决该问题。
主函数代码如下:
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
# _ooOoo_
# o8888888o
# 88" . "88
# ( | - _ - | )
# O\ = /O
# ____/`---'\____
# .' \\| |// `.
# / \\|||:|||// \
# / _|||||-:- |||||- \
# | | \\\ - /// | |
# | \_| ''\---/'' | _/ |
# \ .-\__ `-` ___/-. /
# ___`. .' /--.--\ `. . __
# ."" '< `.___\_<|>_/___.' >'"".
# | | : `- \`.;`\ _ /`;.`/ - ` : | |
# \ \ `-. \_ __\ /__ _/ .-` / /
# ==`-.____`-.___\_____/___.-`____.-'==
# `=---='
'''
@Project :pythonalgorithms
@File :basicfunction.py
@Author :不胜人生一场醉
@Date :2021/7/19 17:39
'''
import matplotlib.pyplot as plt
import numpy as np
import math
import mpl_toolkits.axisartist as axisartist # 导入坐标轴加工模块# -----------------函数------------------
# 给定一个数集A,对A施加一个对应的法则/映射f,记做:f(A),那么可以得到另外一个数集B,也就是可以认为B=f(A);
# 那么这个关系就叫做函数关系式,简称函数。
# 三个重要的因素: 定义域A、值域B、对应的映射法则f。if __name__ == "__main__":# 一次函数Linearfunction()# 二次函数Quadraticfunction()# 幂函数powerfunction()# 指数函数exponentialfunction()# 对数函数Logarithmicfunction()
一次函数代码如下:
# ---------------一次函数------------------
# 一次函数是函数中的一种,一般形如y=ax+b(a,b是常数,a≠0),其中x是自变量,y是因变量。
# 当b=0时,y=kx(k为常数,k≠0),y叫做x的正比例函数
# 当a=0时,y=b,则为常函数
def Linearfunction():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]for a in alist:for b in blist:plt.subplot(3, 3, i)y = x * a + blabel = '{}*x+{}'.format(a, b)plt.plot(x, y, label=label)plt.legend()i += 1plt.show()for a in alist:for b in blist:y = x * a + blabel = '{}*x+{}'.format(a, b)plt.plot(x, y, label=label)i += 1plt.title("一次函数")plt.legend()plt.show()
二次函数代码如下:
# 二次函数(quadratic function)的基本表示形式为y=ax²+bx+c(a≠0)。
# 二次函数最高次必须为二次, 二次函数的图像是一条对称轴与y轴平行或重合于y轴的抛物线。
# 其中a称为二次项系数,b为一次项系数,c为常数项。x为自变量,y为因变量。等号右边自变量的最高次数是2。
# 如果令y值等于零,则可得一个二次方程。该方程的解称为方程的根或函数的零点。
# 顶点坐标 = (-b/2a,(4ac-b²)/4a
def Quadraticfunction():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]for a in alist:for b in blist:for c in clist:y = a * x * x + b * x + clabel = '{}*x*x+{}*x+{}'.format(a, b, c)plt.plot(x, y, label=label)plt.title("二次函数")plt.legend()plt.show()
幂函数代码如下:
# 幂函数是基本初等函数之一。
# 一般地,y=xα(α为有理数)的函数,即以底数为自变量,幂为因变量,指数为常数的函数称为幂函数。
# 例如函数y=x0 、y=x、y=x²、y=x³。
# a = 正数
# a 为>0 的自然数 x定义域(-∞,∞)
# a 为<0 的整数 X定义域(-∞,0),(0,∞)
#
# a >0 的分数
# a=n/m m为奇数,n为偶数,x定义域(-∞,∞),y定义域[0,+∞)
# a=n/m m为奇数,n为奇数,x定义域(-∞,∞),y定义域(-∞,∞)
# a=n/m m为偶数,n不限,x定义域[0,∞),y定义域[0,+∞)
#
# a <0 的分数
# a=n/m m为奇数,n为偶数,x定义域(-∞,0),(0,∞),y定义域(0,+∞)
# a=n/m m为奇数,n为奇数,x定义域(-∞,0),(0,∞),y定义域(-∞,0),(0,∞)
# a=n/m m为偶数,n不限,x定义域(0,∞),y定义域(0,+∞)
def powerfunction():plt.figure(figsize=(10, 8))ax = plt.gca() # 通过gca:get current axis得到当前轴plt.rcParams['font.sans-serif'] = ['SimHei'] # 绘图中文plt.rcParams['axes.unicode_minus'] = False # 绘图负号x = np.linspace(-2, 2, 100)alist = [1, 2, 3, 4]for a in alist: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轴的位置,将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()plt.figure(figsize=(10, 8))ax = plt.gca() # 通过gca:get current axis得到当前轴plt.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]for a in alist: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轴的位置,将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 >0 的分数# a=n/m m为奇数,n为奇数,x定义域(-∞,∞),y定义域(-∞,∞) 4/3# a=n/m m为奇数,n为偶数,x定义域[0,+∞),y定义域[0,+∞)4/3# a=n/m m为偶数,n不限,x定义域(-∞,∞),y定义域[0,+∞) 1/2,3/2plt.figure(figsize=(10, 8))ax = plt.gca() # 通过gca:get current axis得到当前轴plt.rcParams['font.sans-serif'] = ['SimHei'] # 绘图中文plt.rcParams['axes.unicode_minus'] = False # 绘图负号x = np.linspace(-2, 2, 100)alist = [1 / 3, 5 / 3, 7 / 3]for a in alist:# y = np.power(x, a)# RuntimeWarning: invalid value encountered in 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轴的位置,将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("幂指数,分子分母为奇数")plt.legend()plt.show()plt.figure(figsize=(10, 8))ax = plt.gca() # 通过gca:get current axis得到当前轴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]for a in alist: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表示通过值来设置x轴的位置,将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("幂指数,分母为偶数")plt.legend()plt.show()plt.figure(figsize=(10, 8))ax = plt.gca() # 通过gca:get current axis得到当前轴plt.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]for a in alist: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轴的位置,将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("幂指数,分子为偶数分母为奇数")plt.legend()plt.show()# 关于负数就不再重复叙述了
# a <0 的分数
# a=n/m m为奇数,x定义域(-∞,0),(0,∞),y定义域(0,+∞)
# a=n/m m为偶数,x定义域(-∞,0),(0,∞),y定义域(-∞,0),(0,∞)
# a=n/m m为偶数,n为不限,x定义域(0,∞),y定义域(0,+∞)
指数函数代码如下:
# 指数函数是重要的基本初等函数之一。# 一般地,y=ax函数(a为常数且以a>0,a≠1)叫做指数函数,函数的定义域是 R 。 [1]
# 注意,在指数函数的定义表达式中,在ax前的系数必须是数1,自变量x必须在指数的位置上,且不能是x的其他表达式,
# 否则,就不是指数函数
def exponentialfunction():plt.figure(figsize=(10, 8))ax = plt.gca() # 通过gca:get current axis得到当前轴plt.rcParams['font.sans-serif'] = ['SimHei'] # 绘图中文plt.rcParams['axes.unicode_minus'] = False # 绘图负号# a>0 a!=1# 定义域为((-∞,∞),值域为(0, +∞),都通过(0, 1)点x = np.linspace(-2, 2, 100)alist = [1 / 4, 1 / 3, 1 / 2, 2, 3, 4]for a in alist: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表示通过值来设置x轴的位置,将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("指数指数")plt.legend()plt.show()
对数函数代码如下:
# 一般地,对数函数是以幂(真数)为自变量,指数为因变量,底数为常量的函数。
# 对数函数是6类基本初等函数之一。其中对数的定义:
# 如果ax =N(a>0,且a≠1),那么数x叫做以a为底N的对数,记作x=logaN,读作以a为底N的对数,其中a叫做对数的底数,N叫做真数。
# 一般地,函数y=logaX(a>0,且a≠1)叫做对数函数,也就是说以幂(真数)为自变量,指数为因变量,底数为常量的函数,叫对数函数。
# 其中x是自变量,函数的定义域是(0,+∞),即x>0。它实际上就是指数函数的反函数,可表示为x=ay。因此指数函数里对于a的规定,同样适用于对数函数。
def Logarithmicfunction():plt.figure(figsize=(10, 8))ax = plt.gca() # 通过gca:get current axis得到当前轴plt.rcParams['font.sans-serif'] = ['SimHei'] # 绘图中文plt.rcParams['axes.unicode_minus'] = False # 绘图负号# a>0 a!=1# 定义域为((-∞,∞),值域为(0, +∞),都通过(0, 1)点# 当a>1时,单调递增# 当0<a<1时,单调递减x = np.linspace(0.0001, 2, 100)alist = [1 / 4, 1 / 3, 1 / 2, 2, 3, 4]for a in alist:y = np.log(x) / np.log(a)
label = 'np.log(x) / np.log({})'.format(a)
plt.plot(x, y, label=label)# 设置图片的右边框和上边框为不显示ax.spines['right'].set_color('none')ax.spines['top'].set_color('none')# 挪动x,y轴的位置,也就是图片下边框和左边框的位置# data表示通过值来设置x轴的位置,将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("对数指数")plt.legend()plt.show()
python实现之初等函数一相关推荐
- 使用python绘制基本初等函数
文章目录 使用python绘制基本初等函数 幂函数 指数函数 对数函数 三角函数 反三角函数 使用python绘制基本初等函数 基本初等函数{幂函数:xa,指数函数:ax(a>0,a≠1)对数函 ...
- python实现之初等函数三——三角函数
三角函数在python和numpy中实现的不够全面,主要包括cos, cosh, sin sinh, tan, tanh三角函数和arccos, arccosh, arcsin, arcsinh, a ...
- python绘制基本初等函数(一)
python绘制数学函数图形 基本初等函数概念 常数函数 幂函数 指数函数 对数函数 三角函数 反三角函数 完整代码 代码解释 之前用python绘制了笛卡尔直角坐标系,绘制了指数函数,绘制了对数函数 ...
- 用python画基本初等函数的图像(未完成)
要用到matplotlib库 一.绘制 y=x 图像 import numpy as np import matplotlib.pyplot as plt x = np.linspace(-50, 5 ...
- python实现数学函数图像
python实现数学函数图像 预备知识 使用python绘制基本初等函数 在数学里,基本初等函数包括幂函数.指数函数.对数函数.三角函数.反三角函数.常数函数.不同函数的定义: python标准库[注 ...
- 二进制人工智能 博客精选
文章目录 博客精选 机器学习的数学基础 机器学习 Pytorch Python 信号与系统 图像处理与计算机视觉 OpenCV C++ Python 博客精选 机器学习的数学基础 [机器学习的数学基础 ...
- python中arcsec_python绘制基本初等函数图像
之前用python绘制了笛卡尔直角坐标系,绘制了指数函数,绘制了对数函数,有了这三个基础工作的积累,本期,将研究如何利用python把六类基本初等函数一劳永逸的绘制出来. 基本初等函数概念 简单的说基 ...
- python求分段函数值_高中数学知识点整理(2)——函数概念及基本初等函数篇(上)...
大家好!我是高考数学易老师,今天是我来知乎的第二天,今天更新函数概念及基本初等函数知识点.如果有任何关于高中数学知识点,可随时询问呢. 函数 1. 函数与映射(1) 函数的概念 设 是两个非空的数集, ...
- Python Scipy 科学计算库
Python机器学习及分析工具:Scipy篇 原文:https://www.jianshu.com/p/6c742912047f Scipy是一个用于数学.科学.工程领域的常用软件包,可以处理插值 ...
最新文章
- 【转摘】Word中查找与替换的妙用
- 目标检测中召回率(Recall),精确率(Precision),平均正确率(Average_precision(AP) ),交除并(Intersection-over-Union(IoU))
- SAP Spartacus打印Occ endpoint请求的url
- ABB 机器人 通信指令(人机对话):
- Python - 排序( 插入, 冒泡, 快速, 二分 )
- orcale可视化建立用户_建立动态可视化的新方法
- 想入职AI算法岗?BAT的工程师去学了这门课
- 钉钉 ISV 应用开发的一些心得
- 风控人最容易被误解的一个风险管理板块
- 单片机c语言延时1ms函数,单片机c语言延时函数用int与char有延时差吗?
- 【大数据】分布式机器学习平台
- chkdsk 后数据丢失的恢复方法chkdsk 后数据丢失的恢复方法
- 微信小程序组件开发——可视化电影选座
- 视场(FOV)补偿与分辨率(Resolution)补偿
- 美赛数模论文之优缺点写作
- DOM 详细 一篇就够【重点】
- Html调用手机打电话功能
- An improved Otsu method using the weighted object variance for defect detection-论文阅读笔记
- HDRP UI上渲染模型的解决方式及常见问题
- c++基础二(基本知识-基本内置 类型)