最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python求離散序列導(dǎo)數(shù)的示例

 更新時間:2019年07月10日 09:33:25   作者:CaspianR  
今天小編就為大家分享一篇Python求離散序列導(dǎo)數(shù)的示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

有一組4096長度的數(shù)據(jù),需要找到一階導(dǎo)數(shù)從正到負的點,和三階導(dǎo)數(shù)從負到正的點,截取了一小段。

394.0
388.0
389.0
388.0
388.0
392.0
393.0
395.0
395.0
394.0
394.0
390.0
392.0

按照之前所了解的,對離散值求導(dǎo)其實就是求差分,例如第i點的導(dǎo)數(shù)(差分)為:

即在一個寬度為2m+1的窗口內(nèi)通過計算前后m個值加權(quán)后的和得到。但是在實際使用過程中效果不是很好。于是想到了同樣在一個寬度為2k+1的窗口內(nèi),將這2k+1個點擬合成一個函數(shù),然后求導(dǎo)就可以得到任意階數(shù)的導(dǎo)數(shù)值。

首先是函數(shù)擬合,使用from scipy.optimize import leastsq即最小二乘擬合

from scipy.optimize import leastsq
class search(object):
  def __init__(self, filename):
    self.filename = filename

  def func(self, x, p):
    f = np.poly1d(p)
    return f(x)

  def residuals(self, p, x, y, reg):
    regularization = 0.1 # 正則化系數(shù)lambda
    ret = y - self.func(x, p)
    if reg == 1:
      ret = np.append(ret, np.sqrt(regularization) * p)
    return ret

  def LeastSquare(self, data, k=100, order=4, reg=1, show=1): # k為求導(dǎo)窗口寬度,order為多項式階數(shù),reg為是否正則化
    l = self.len
    step = 2 * k + 1
    p = [1] * order
    for i in range(0, l, step):
      if i + step < l:
        y = data[i:i + step]
        x = np.arange(i, i + step)
      else:
        y = data[i:]
        x = np.arange(i, l)
      try: 
        r = leastsq(self.residuals, p, args=(x, y, reg))
      except:
        print("Error - curve_fit failed")
      fun = np.poly1d(r[0]) # 返回擬合方程系數(shù)
      df_1 = np.poly1d.deriv(fun) # 求得導(dǎo)函數(shù)
      df_2 = np.poly1d.deriv(df_1)
      df_3 = np.poly1d.deriv(df_2)
      df_value = df_1(x)
      df3_value = df_3(x)

fun = np.poly1d(r[0]),fun返回的是一個 polynomial class,具體使用可以見官方文檔numpy.poly1d
polynomial對象可以使用deriv方法求導(dǎo)數(shù),求得的依然是 polynomial對象。 df_value = df_1(x)所得到的就是x這個幾個點求得的導(dǎo)數(shù)值。

看似大功告成,但是求導(dǎo)的結(jié)果并不是很好,如下圖,實際最高點在100左右,但是擬合出來的曲線最高點在120左右,而原因在于使用多項式擬合很難準確擬合曲線。

于是想用高斯函數(shù)來實現(xiàn)對曲線的擬合,在matlab中試了下,三階高斯擬合可以很好的擬合曲線,

但是numpy以及sicpy中沒有找到類似poly1d這種對象,雖然可以自己定義高斯函數(shù),如下

  def gaussian(self, x, *param):
    fun = param[0]*np.exp(-np.power(x - param[2], 2.) / (2 * np.power(param[4],    2.)))+param[1]*np.exp(-np.power(x - param[3], 2.) / (2 * np.power(param[5], 2.)))
    return fun

但是,在通過最小二乘擬合得到函數(shù)參數(shù)后只能得到擬合后的點,無法直接求導(dǎo)數(shù)..所以并不適合。

所以還是只能回到多項式擬合,如果4階多項式不能表征的話,更高階的呢

總體來說,效果還是可以接受的。

如果下階段找到好的高斯函數(shù)擬合方法,會繼續(xù)更新。

以上這篇Python求離散序列導(dǎo)數(shù)的示例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python?pyecharts繪制條形圖詳解

    Python?pyecharts繪制條形圖詳解

    pyecharts是一個由百度開源的數(shù)據(jù)可視化,憑借著良好的交互性,精巧的圖表設(shè)計,得到了眾多開發(fā)者的認可。本文將利用其繪制多樣的條形圖,需要的可以參考一下
    2022-04-04
  • python操作MongoDB基礎(chǔ)知識

    python操作MongoDB基礎(chǔ)知識

    MongoDB支持好多語言,今天我們就寫一寫python操作MongoDB的知識,從安裝MongoDB到操作MongoDB全都有了。
    2013-11-11
  • Python實現(xiàn)TOPSIS分析法的示例代碼

    Python實現(xiàn)TOPSIS分析法的示例代碼

    TOPSIS法是一種常用的綜合評價方法,其能充分利用原始數(shù)據(jù)的信息,其結(jié)果能精確反應(yīng)各評價方案之間的差距。本文將利用Python實現(xiàn)這一方法,感興趣的可以了解一下
    2023-02-02
  • Pytorch dataloader在加載最后一個batch時卡死的解決

    Pytorch dataloader在加載最后一個batch時卡死的解決

    這篇文章主要介紹了Pytorch dataloader在加載最后一個batch時卡死的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • Python中__init__的用法和理解示例詳解

    Python中__init__的用法和理解示例詳解

    在Python中定義類經(jīng)常會用到__init__函數(shù)(方法),首先需要理解的是,兩個下劃線開頭的函數(shù)是聲明該屬性為私有,不能在類的外部被使用或訪問,從文字理解比較困難,下面通過示例代碼幫助大家理解__init__在python中用法,感興趣的朋友一起看看吧
    2023-02-02
  • protobuf 序列化和反序列化操作流程

    protobuf 序列化和反序列化操作流程

    Protocol Buffers(protobuf)是一種輕量級的數(shù)據(jù)交換格式,可以用于結(jié)構(gòu)化數(shù)據(jù)的序列化和反序列化,它使用二進制格式來編碼數(shù)據(jù),以提高傳輸效率和數(shù)據(jù)壓縮比,這篇文章主要介紹了protobuf 序列化和反序列化操作流程,需要的朋友可以參考下
    2024-06-06
  • 解決pip install 卡住不動的問題

    解決pip install 卡住不動的問題

    這篇文章主要介紹了解決pip install 卡住不動的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • Python 數(shù)據(jù)處理更容易的12個輔助函數(shù)總結(jié)

    Python 數(shù)據(jù)處理更容易的12個輔助函數(shù)總結(jié)

    Python的產(chǎn)生似乎就是專門用來處理數(shù)據(jù)的,順理成章的成為大數(shù)據(jù)的主流語言,本文介紹十二個函數(shù)輔助你更容易更便捷的用Python進行數(shù)據(jù)處理
    2021-11-11
  • 快速搭建python爬蟲管理平臺

    快速搭建python爬蟲管理平臺

    如今大多數(shù)企業(yè)都離不開爬蟲,它是獲取數(shù)據(jù)的一種有效方式。但是對爬蟲有著規(guī)模量級要求的企業(yè)或個人需要同時處理不同類別的爬蟲,這會憑空增添很多附加的管理成本。因此一個成熟的爬蟲管理流程應(yīng)該包含一個管理系統(tǒng),能夠有效處理上述問題。
    2021-05-05
  • Python之pandas讀寫文件亂碼的解決方法

    Python之pandas讀寫文件亂碼的解決方法

    下面小編就為大家分享一篇Python之pandas讀寫文件亂碼的解決方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04

最新評論

永寿县| 安庆市| 揭东县| 宣威市| 出国| 和田县| 云南省| 莆田市| 三明市| 临洮县| 克什克腾旗| 白水县| 锦州市| 青阳县| 佛冈县| 石城县| 大悟县| 庆阳市| 太白县| 黑河市| 九龙城区| 延川县| 宁蒗| 运城市| 双流县| 平南县| 通州市| 汉阴县| 礼泉县| 上饶市| 铜山县| 武安市| 江华| 宜黄县| 英山县| 左贡县| 花莲市| 伊川县| 凤山县| 玉树县| 灵宝市|