【数学知识】函数与复合函数编程实现
- 1、函数定义
- 多项式
- 指数函数与对数函数
- 正弦函数
- 2、复合函数
本博客适合高中学生入门编程知识学习,从高中的数学概念转换到其python实现,提高自身对编程的学习兴趣。
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
# 在jupyter notebook显示图片
1、函数定义
我们可以将函数(functions)想象成一台机器f ,每当我们向机器提供输入x,这台机器便会产生输出y。
这台机器所能接受的所有输入x的集合称为定义域(domain),其所有可能输出y的集合称为值域(range)。函数的定义域和值域有着非常重要的意义,如果我们知道一个函数的定义域,便不会将不合适的输入丢给函数;知道函数的值域,便能判断一个值是否可能是这个函数所输出的。
多项式
# 多项式
# 初中:一元一次函数 y = k*x+b
def f1(x):
y = 2*x+3 # k=2, b=3
return y
x = 100
print(f1(100))
203
三次多项式:
# 三次多项式
def f3(x):
return x**3 - 5*x**2 + 9 # *:乘号 **:求次方
# 画图
x = np.linspace(-100, 100, num = 1000)
y = f3(x)
plt.plot(x,y)
结果如下:
# 5次多项式
def f5(x):
return 5*x**5+4*x**3+x**3 - 5*x**2 + 9 # *:乘号 **:求次方
y = f5(x)
plt.plot(x,y)
指数函数与对数函数
两个常用的常数:
欧拉常数e
圆周率pi
# 欧拉常数e
print(np.e) # e=2.71828
# pi
print(np.pi) # pi=3.1415926
# 指数函数
def exp(x):
y = np.e**x # np.e 就是欧拉常数
return y # y>0
y = exp(x)
plt.plot(x,y)
结果如下:
print(exp(0))
1.0
print(exp(-10000))
0.0
的本质:
对数函数是指数函数的反函数
如果
那么 , y>0
x = np.linspace(0.0001,100,1000,endpoint = False)
y1 = np.log2(x) # 以2为底
y2 = np.log(x) # 以e为底
y3 = np.log10(x) # 以10为底
plt.plot(x,y1,'red',x,y2,'yellow',x,y3,'blue')
正弦函数
正弦函数:
以及它的变形
x = np.linspace(-10, 10, num = 1000)
y = np.sin(x)
plt.plot(x,y)
结果如下:
余弦函数:
以及它的变形
y1 = np.sin(x) # sin(x)
y2 = np.cos(x) # cos(x)
plt.plot(x,y1,'red',x,y2,'blue')
下图中红色为sin(x),蓝色为cos(x):
2、复合函数
函数和的复合:,可以理解为首先将输入给函数获得输出y1后将其进而输入给函数,最终获得结果。例如:
这个复合函数实际上是
链式法则是微积分中的求导法则,用于求一个复合函数的导数
采用复合函数表示十分复杂的函数,有利于我们进行求导运算!
同时,在编程过程中,采用复合函数,将一个复杂的问题分解为若干个阶段的函数,有利于编程调试,容易发现逻辑错误!
def f(x):
y = 1/x
return y
def g(x):
y = np.exp(-x)+1
return y
# 这是一个复合函数
def sigmoid(x):
return f(g(x))
x = 1
print(sigmoid(x))
0.7310585786300049
x = np.linspace(-10, 10, num = 10000)
y = sigmoid(x)
plt.plot(x,y)
另一个常用的复合函数:
def f(x):
y = np.log(x)
return y
def g(x):
y = np.exp(x)+1
return y
# 这是一个复合函数
def softplus(x):
return f(g(x))
x = 1
print(softplus(x))
1.3132616875182228
x = np.linspace(-10, 10, num = 10000)
y = softplus(x)
plt.plot(x,y)
作者:陈艺荣