# 泰勒公式和Gamma函数

### 泰勒公式

##### 就是我不知道那函数表达式，我想通过泰勒公式来计算值。

```import numpy as np
import math
import matplotlib as mpl
import matplotlib.pyplot as plt
def calc_e_small(x):
'''
计算前10个
:param x:
:return:
'''
n = 10
f = np.arange(1, n+1).cumprod() #阶乘
b = np.array([x]*n).cumprod() # 算的是x的n次方
# 这个就是公式
return np.sum(b / f) + 1
```

```t1 = np.linspace(-2, 0, 10, endpoint=False)
t2 = np.linspace(0, 4, 20)
t = np.concatenate((t1, t2))
print(t)     # 横轴数据
y = np.empty_like(t)
for i, x in enumerate(t):
y[i] = calc_e(x)
print('e^', x, ' = ', y[i], '(近似值)\t', math.exp(x), '(真实值)')
plt.figure(facecolor='w')
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False
plt.plot(t, y, 'r-', t, y, 'go', linewidth=2, markeredgecolor='k')
plt.title('Taylor展式的应用 - 指数函数', fontsize=18)
plt.xlabel('X', fontsize=15)
plt.ylabel('exp(X)', fontsize=15)
plt.grid(True, ls=':')
plt.show()
```

### 绘制正正弦函数

```import numpy as np
import math
import matplotlib as mpl
import matplotlib.pyplot as plt
def calc_sin_small(x):
x2 = -x ** 2
t = x
f = 1
sum = 0
for i in range(10):
sum += t / f
t *= x2
f *= ((2*i+2)*(2*i+3))
return sum
def calc_sin(x):
a = x / (2*np.pi)
k = np.floor(a)
a = x - k*2*np.pi
return calc_sin_small(a)
if __name__ == "__main__":
t = np.linspace(-2*np.pi, 2*np.pi, 100, endpoint=False)
print(t)     # 横轴数据
y = np.empty_like(t)
for i, x in enumerate(t):
y[i] = calc_sin(x)
print('sin(', x, ') = ', y[i], '(近似值)\t', math.sin(x), '(真实值)')
print('误差：', y[i] - math.sin(x))
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False
plt.figure(facecolor='w')
plt.plot(t, y, 'bo', t, y, 'r-', linewidth=2)
plt.title('Taylor展式的应用 - 正弦函数', fontsize=18)
plt.xlabel('X', fontsize=15)
plt.ylabel('sin(X)', fontsize=15)
plt.xlim((-7, 7))
plt.ylim((-1.1, 1.1))
plt.grid(True)
plt.show()
```

### Gamma函数

Γ函数是阶乘在实数上的推广

```import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
from scipy.special import gamma
from scipy.special import factorial

mpl.rcParams['axes.unicode_minus'] = False
mpl.rcParams['font.sans-serif'] = 'SimHei'

if __name__ == '__main__':
N = 5
x = np.linspace(0, N, 50)
y = gamma(x+1)
plt.figure(facecolor='w')
plt.plot(x, y, 'r-', x, y, 'mo', lw=2, ms=7)
z = np.arange(0, N+1)
f = factorial(z, exact=True)    # 阶乘
print(f)
plt.plot(z, f, 'go', markersize=9)
plt.grid(b=True)
plt.xlim(-0.1,N+0.1)
plt.ylim(0.5, np.max(y)*1.05)
plt.xlabel('X', fontsize=15)
plt.ylabel('Gamma(X) - 阶乘', fontsize=15)
plt.title('阶乘和Gamma函数', fontsize=16)
plt.show()
```

0 条评论

• ### 泰勒公式

泰勒公式是将一个在x=x0处具有n阶导数的函数f（x）利用关于（x-x0）的n次多项式来逼近函数的方法。 若函数f（x）在包含x0的某个闭区间[a,b]上具有n...

• ### 异常值检测

异常值（outlier）是指一组测定值中与平均值的偏差超过两倍标准差的测定值，与平均值的偏差超过三倍标准差的测定值，称为高度异常的异常值。

• ### 机器学习之决策树（上）

决策树(Decision Tree）是在已知各种情况发生概率的基础上，通过构成决策树来求取净现值的期望值大于等于零的概率，评价项目风险，判断其可行性的决策分析方...

• ### Python进阶之Matplotlib入门(八)

Matplotlib是Python的画图领域使用最广泛的绘图库，它能让使用者很轻松地将数据图形化以及利用它可以画出许多高质量的图像，是用Python画图的必备技...

• ### Matplotlib绘制六种可视化图表，值得收藏

可视化图表，有相当多种，但常见的也就下面几种，其他比较复杂一点，大都也是基于如下几种进行组合，变换出来的。对于初学者来说，很容易被这官网上众多的图表类型给吓着了...

• ### 一个不完全成熟的小想法--密度散点图

这种密度散点图可谓是高大上了，其实做法也不难，甚至可以做的更好看，这个图的配色一看就知道是R做的，我摒弃R，用python来一发！！！

• ### 100天搞定机器学习|Day33-34 随机森林

前言： 随机森林是一个非常灵活的机器学习方法，从市场营销到医疗保险有着众多的应用。它可以用于市场营销对客户获取和存留建模或预测病人的疾病风险和易感性。

• ### Python入门教程(三):史上最全的Numpy计算函数总结，建议收藏！

Numpy提供了灵活的、静态类型的、可编译的程序接口口来优化数组的计算，也被称作向量操作，因此在Python数据科学界Numpy显得尤为重要。Numpy的向量操...

• ### NumPy Beginner's Guide 2e 带注释源码 三、熟悉 NumPy 常用函数

离散卷积其实就是系数数组的多项式乘法。例如计算[1, 2, 0, 3]和[1, -2, 5]的卷积：