zoukankan      html  css  js  c++  java
  • 机器学习准备---3、模拟e^x的麦克劳林展开式

    机器学习准备---3、模拟e^x的麦克劳林展开式

    一、总结

    一句话总结:

    1、用麦克劳林展开式模拟函数,比如e^x,阶数越高就越接近
    2、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)
    3、画图的时候,求y就是算上前n项
    y = consY(i,x)
    
    # y值函数
    def consY(n,x):
        y = 1
        for i in range(1,n):
            y += x**i/factorial(i)
        return y

    二、使用matplotlib模拟e^x的麦克劳林展开式

    转自或参考:使用matplotlib模拟e^x的麦克劳林展开式
    https://www.cnblogs.com/thsk/p/8330009.html

    使用matplotlib模拟下e^x的麦克劳林展开式,用plt画图

    import matplotlib.pyplot as plt
    import numpy as np
    import random
    
    '''
    e^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) 
    '''
    
    
    # 阶乘函数
    def factorial(n):
        x = 1
        for i in range(1,n+1):
            x = x * i
        return x
    
    # y值函数
    def consY(n,x):
        y = 1
        for i in range(1,n):
            y += x**i/factorial(i)
        return y
    
    # 生成图像
    def moniPlot(n,x):
        # 定义一个颜色集合
        colors = ['g','b','black','cyan','lightgreen','yellow','deeppink','darkorchid']
        plt.figure()
        
        # 原函数
        y = np.e**x
        # 画原函数图像并进行标记
        plt.plot(x,y,'r-',linewidth=2,label='e^x')
        
        # 麦克劳林展开添加到图像上
        for i in range(2,n):
            y = consY(i,x)
            # 随机选择颜色
            color = colors[random.randint(0,len(colors)-1)]
            linestyle = '--'
            # 画图像,并对最后一个进行标记
            if i == n:
                plt.plot(x,y,color=color,linewidth=1,linestyle=linestyle,label="nearly e^x")
            else:
                plt.plot(x,y,color=color,linewidth=1,linestyle=linestyle)
            plt.plot(x,y,color=color,linewidth=1,linestyle=linestyle)
        #添加注释
        plt.text(1.2, consY(10,3.9),"Maclaurin's series of e^x ",size=12)
        
        # 将标记绘制图例,位置为于中间左侧
        plt.legend(['e^x',"nearly e^x"], loc = 'center left')  
        
        plt.show()
    
    
    # 定义 x , y
    x = np.linspace(1,4,80)
    # 原函数
    # y = np.e**x
    # Maclaurin展开 3项
    # y1 = consY(2,x)
    # 展开 4项
    # y2 = consY(3,x)
    # tylor 5项
    # y3 = consY(4,x)
    
    # 调用生成图像
    moniPlot(10,x)
    
    # 关闭图
    plt.close()

    运行代码,plt展示的结果如下(展开式的项数越多,越接近原函数):

     
    我的旨在学过的东西不再忘记(主要使用艾宾浩斯遗忘曲线算法及其它智能学习复习算法)的偏公益性质的完全免费的编程视频学习网站: fanrenyi.com;有各种前端、后端、算法、大数据、人工智能等课程。
    博主25岁,前端后端算法大数据人工智能都有兴趣。
    大家有啥都可以加博主联系方式(qq404006308,微信fan404006308)互相交流。工作、生活、心境,可以互相启迪。
    聊技术,交朋友,修心境,qq404006308,微信fan404006308
    26岁,真心找女朋友,非诚勿扰,微信fan404006308,qq404006308
    人工智能群:939687837

    作者相关推荐

  • 相关阅读:
    cocos2d-x学习记录5——CCTransition场景过渡
    cocos2d-x学习记录4——图形绘制
    cocos2d-x学习记录3——CCTouch触摸响应
    cocos2d-x学习记录2——CCAction动作
    cocos2d-x学习记录1——图片显示
    cocos2d-x环境搭建
    自定义CCNode
    cocos2d-x调度器原理
    cocos2d-x动作原理
    cocos2d-x触摸分发器原理
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/13363242.html
Copyright © 2011-2022 走看看