发布于2020-11-28 10:27 阅读(889) 评论(0) 点赞(16) 收藏(4)
import numpy as np
from numpy import random
import matplotlib.pyplot as plt
import random
%matplotlib inline
# 解决中文乱码
plt.rcParams["font.sans-serif"]=["KaiTi"]
plt.rcParams["font.family"]="sans-serif"
# 解决符号无法显示的问题
plt.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题
# 让图表变成矢量形式,,显示更清晰
%config InlineBackend.figure_format="svg"
f(x)=e^x
=f(0)+ f′(0)x+ f″(0)x ²/ 2!+...+ fⁿ(0)x^n/n!+Rn(x)
=1+x+x^2/2!+x^3/3!+...+x^n/n!+Rn(x)
其中 f(0)= f′(0)=...= fⁿ(0)=e^0=1。
如果f(x)在点x=x0具有任意阶导数,则幂级数
称为f(x)在点x0处的泰勒级数。
由泰勒公式的性质可知,y=e^x的图形其实是由许许多多其他函数的图形渐渐逼近,最终才形成了y=e^x函数的图形。
在绘图的时候,我们不仅要绘制出y=e^x的图形,还需要绘制出其他函数的图形,要将这个逼近的过程展现出来。
在生成其他函数的图像的时候,由于这些函数之间存在着一定的规律,一步一步地生成过于繁琐又显得愚蠢,所以我们可以采用循环的方式来实现。
# x轴数据
x=np.linspace(1,4,80) # 等差数列 1~4中间取80个点
def calcY(n,x):
"""y轴上的数据"""
y=1
for i in range(1,n):
y+=x**i/np.math.factorial(i) # x^i/i!
return y
def moniPlot(n,x):
"""生成图像"""
# 定义一个颜色集合
colors=["g","b","black","cyan","lightgreen","yellow","deeppink","darkorchid"]
"""绘制原函数的图像"""
# 原函数
y=np.exp(x)
# 画出原函数的图像并进行标记
plt.plot(x,y,"r-",linewidth=2,label="e^x")
# 麦克劳林展开添加到图像上
for i in range(2,n):
y=calcY(i,x)
# 随机选择一种颜色
color=random.choice(colors)
# 线型
line_style="--" # 虚线
# 画图像
plt.plot(x,y,color=color,linewidth=2,linestyle=line_style)
# 添加注释
plt.text(1.5,calcY(10,3.8),"Maclaurin series of e^x",size=12)
# 将标记绘制图例,位置位于中间左侧
plt.legend(["e^x","nearly e^x"],loc="center left")
plt.show()
# 调用生成图像
moniPlot(10,x)
# x轴数据
x=np.linspace(1,4,80) # 等差数列 1~4中间取80个点
"""绘制原函数的图像"""
# 原函数
y=np.exp(x)
# 画出原函数的图像并进行标记
plt.plot(x,y,"r-",linewidth=2,label="e^x")
# y轴上的数据
def calcY(n,x):
"""专门用来生成y轴上的数据
n:函数的最高次数+1=n
x:x轴上的数据
"""
y=1
for i in range(1,n):
y+=x**i/np.math.factorial(i) # x^i/i!
return y
2.绘制其他函数的图像
def moniPlot(n,x):
"""生成图像"""
# 定义一个颜色集合
colors=["g","b","black","cyan","lightgreen","yellow","deeppink","darkorchid"]
# 麦克劳林展开添加到图像上
for i in range(2,n):
y=calcY(i,x)
# 随机选择一种颜色
color=random.choice(colors)
# 线型
line_style="--" # 虚线
# 画图像
plt.plot(x,y,color=color,linewidth=2,linestyle=line_style)
# 添加注释
plt.text(1.5,calcY(10,3.8),"Maclaurin series of e^x",size=12)
# 将标记绘制图例,位置位于中间左侧
plt.legend(["e^x","nearly e^x"],loc="center left")
plt.show()
3.循环绘制其他函数的图像
import numpy as np
from numpy import random
import matplotlib.pyplot as plt
import random
%matplotlib inline
# 解决中文乱码
plt.rcParams["font.sans-serif"]=["KaiTi"]
plt.rcParams["font.family"]="sans-serif"
# 解决符号无法显示的问题
plt.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题
# 让图表变成矢量形式,,显示更清晰
%config InlineBackend.figure_format="svg"
# x轴数据
x=np.linspace(1,4,80) # 等差数列 1~4中间取80个点
# y轴上的数据
def calcY(n,x):
y=1
for i in range(1,n):
y+=x**i/np.math.factorial(i) # x^i/i!
return y
def moniPlot(n,x):
"""生成图像"""
# 定义一个颜色集合
colors=["g","b","black","cyan","lightgreen","yellow","deeppink","darkorchid"]
"""绘制原函数的图像"""
# 原函数
y=np.exp(x)
# 画出原函数的图像并进行标记
plt.plot(x,y,"r-",linewidth=2,label="e^x")
# 麦克劳林展开添加到图像上
for i in range(2,n):
y=calcY(i,x)
# 随机选择一种颜色
color=random.choice(colors)
# 线型
line_style="--" # 虚线
# 画图像
plt.plot(x,y,color=color,linewidth=2,linestyle=line_style)
# 添加注释
plt.text(1.5,calcY(10,3.8),"Maclaurin series of e^x",size=12)
# 将标记绘制图例,位置位于中间左侧
plt.legend(["e^x","nearly e^x"],loc="center left")
plt.show()
# 调用生成图像
moniPlot(10,x)
原文链接:https://blog.csdn.net/yuhui_2000/article/details/109727618
作者:听爸爸的话
链接:https://www.pythonheidong.com/blog/article/635127/9f7bfbe9cc9ce842a269/
来源:python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!