python中的反三⾓函数_⽤python画所有三⾓函数和反三⾓函
数图像
之前对三⾓函数的理解仅局限于sin,cos,tan。但是⽬前考研过程中遇到的都是些csc,sec,cot,arctan,arccos,arcsin。
积分和求导还有⼀堆公式,很容易记混。我就想能不能⽤图像帮助记忆,就算记不起来,也能猜出来⼀些公式。
对于sin和cos,根据图像就可以猜出他们之间的关系。
sin(x)在-pi/2到+pi/2,单增,-pi/2到0增速由慢到快,0到pi/2增速由快到慢。根据导数定义,在0点处导数lim(x->0)sinx/x=1。在
pi/2和-pi/2处切线斜率为0,所以导数为0。把sin(x)每⼀点导数值在脑海⾥浮现⼀下,那么在脑海⾥就可以⼤致想象出sin(x)的导函数图像,就是cos(x)。
原以为⽤python画图很简单,但是画了⼏次,发现图像都不是我想要的,有的坐标轴刻度是1,但是我想让他变成pi。有的y轴缩到⼀块了,但是我想让他间距变⼤点。查了好多资料,才拼出来⼀个还凑合的图像。这⾥⾯趋于⽆穷的时候python⾃动画了⼀个渐近线。
1.三⾓函数及其倒数
sin(x)和csc(x)
cos(x)和sec(x)
tan(x)和cot(x)
分析其特点:
这⼏个三⾓函数两两之间是倒数的关系。
他们共同特点:
1.在同⼀点处他们函数值相乘为1
他们有共同交点在y=1和y=-1这两条直线上
2.在同⼀区间他们同号。
其中⼀个函数->0+,那么另⼀个函数->+⽆穷
其中⼀个函数->0-,那么另⼀个函数->-⽆穷
3.在y=1和y=-1处对应的x坐标记为a。
在a的左右邻域他们增减性相反
2.三⾓函数及其反函数
sin(x)和arcsin(x)
注:
正弦函数y=sinx,x∈R因为在整个定义域上没有⼀⼀对应关系,所以不存在反函数。
反正弦函数对这样⼀个函数y=sinx,x∈[-π/2,π/2]成⽴,这⾥截取的是正弦函数靠近原点的⼀个单调区间。y=arcsinx 的定义域:[-1,1],值域:[-π/2,π/2]
cos(x)和arccos(x)
y=cosx,x∈R因为在整个定义域上没有⼀⼀对应关系,所以不存在反函数。
arccos(x)对这样⼀个函数y=cosx,x∈[0,π]成⽴,这⾥截取的是余弦函数靠近原点的⼀个单调区间,arccosx 值域是 :[0,π],定义域[-1,1]。
tan(x)和arctan(x)
注:
由于正切函数y=tanx在定义域R上不具有⼀⼀对应的关系,所以不存在反函数。
选取正切函数的⼀个单调区间。⽽由于正切函数在开区间(-π/2,π/2)中是单调连续的,因此,反正切函数是存在且唯⼀确定的。arctanx 的值域是:(-π/2,π/2)。
分析其特点
他们的特点其实就是原函数和反函数的特点,
关于y=x对称。函数与其反函数在其对应区间内单调性相同。
3.源代码
import matplotlib.pyplot as plt
#import pandas as pd
import numpy as np
from mpl_toolkits.axisartist.axislines import SubplotZero
import numpy as np
from matplotlib.ticker import MultipleLocator, FuncFormatter
fig = plt.figure(1, (10, 6))
ax = SubplotZero(fig, 1, 1, 1)
fig.add_subplot(ax)
"""新建坐标轴"""
ax.axis["xzero"].set_visible(True)
#ax.axis["xzero"].label.set_text("新建y=0坐标")
#ax.axis["xzero"].label.set_color('green')
ax.axis['yzero'].set_visible(True)
# ax.axis["yzero"].label.set_text("新建x=0坐标")
# 新建⼀条y=2横坐标轴
#ax.axis["新建1"] = ax.new_floating_axis(nth_coord=0, value=1,axis_direction="bottom")
#ax.axis["新建1"].toggle(all=True)
#ax.axis["新建1"].label.set_text("y = 1横坐标")
#ax.axis["新建1"].label.set_color('blue')
反三角函数的所有公式
"""坐标箭头"""
ax.axis["xzero"].set_axisline_style("-|>") ax.axis["yzero"].set_axisline_style("-|>") """隐藏坐标轴"""
# ⽅法⼀:隐藏上边及右边
# ax.axis["right"].set_visible(False)
# ax.axis["top"].set_visible(False)
#⽅法⼆:可以⼀起写
ax.axis["top",'right'].set_visible(False) # ⽅法三:利⽤ for in
# for n in ["bottom", "top", "right"]:
# ax.axis[n].set_visible(False)
x = np.arange(-2*np.pi, 2*np.pi, 0.01) def pi_formatter(x, pos):
"""
将数值转换为以pi/4为单位的刻度⽂本"""
m = np.round(x / (np.pi / 4))
n = 4
if m % 2 == 0: m, n = m / 2, n / 2
if m % 2 == 0: m, n = m / 2, n / 2
if m == 0:
return "0"
if m == 1 and n == 1:
return "$\pi$"
if n == 1:
return r"$%d \pi$" % m
if m == 1:
return r"$\frac{\pi}{%d}$" % n
return r"$\frac{%d \pi}{%d}$" % (m, n) # 设置两个坐标轴的范围
plt.ylim(-3 , 3)
plt.xlim(-2*np.pi, np.max(x))
# 设置图的底边距
plt.subplots_adjust(bottom=0.15)
# 主刻度为pi/4
ax.xaxis.set_major_locator(MultipleLocator(np.pi / 4))
# 主刻度⽂本⽤pi_formatter函数计算
ax.xaxis.set_major_formatter(FuncFormatter(pi_formatter))
# 副刻度为pi/20
ax.xaxis.set_minor_locator(MultipleLocator(np.pi / 20))
# 设置刻度⽂本的⼤⼩
for tick in _major_ticks():
tick.label1.set_fontsize(16)
"""设置刻度
ax.set_ylim(-3, 3)
ax.set_yticks([-1,-0.5,0,0.5,1])
ax.set_xlim([-5, 8])
"""
# ax.set_xticks([-5,5,1])
#设置⽹格样式
'''
ax.plot(x, 1/np.sin(x),color='lightskyblue', label="$csc(x)$")
ax.plot(x, np.sin(x),color='red', label="$sin(x)$")
ax.plot(x, np.cos(x),color='orange', label="$cos(x)$")
ax.plot(x, s(x),color='green', label="$sec(x)$")
ax.plot(x, np.sin(x)/np.cos(x),color='orange', label="$tan(x)$")
ax.plot(x, np.cos(x)/np.sin(x),color='skyblue', label="$cot(x)$")
'''
ax.plot(x, x,color='black', label="$y=x$")
x3 = np.arange(-np.pi/2, np.pi/2, 0.01)
ax.plot(x, np.sin(x),color='red', label="$sin(x)$")
ax.plot(x3, np.sin(x3),color='green', label="$sin(x),x∈[-π/2,π/2]$") ax.plot(np.sin(x3), x3 ,color='blue', label="$arcsin(x)$")
x2 = np.arange(0, np.pi, 0.01)
ax.plot(x, np.cos(x),color='green', label="$cos(x)$")
ax.plot(x2, np.cos(x2),color='red', label="$cos(x),x∈[0,π]$")
ax.s(x2), x2 ,color='brown', label="$arccos(x)$")
'''
x4=np.arange(-np.pi/2, np.pi/2, 0.01)
ax.plot(x, np.tan(x),color='red', label="$tan(x)$")
ax.plot(x4, np.tan(x4),color='green', label="$tan(x),x∈(-π/2,π/2)$") ax.plot(np.tan(x4), x4 ,color='blue', label="$arctan(x)$")
'''
plt.legend()
plt.show()
# 存为图像
# fig.savefig('test.png')

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。