• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于SciPy的最小二乘法求解的研究與實現(xiàn)

    2020-07-23 06:20:37劉海靜劉暢石慧升張露予趙歡
    商情 2020年30期
    關鍵詞:最小二乘法

    劉海靜 劉暢 石慧升 張露予 趙歡

    【摘要】本文主要詳細介紹了如何應用Python語言的SciPy庫中的兩種方法實現(xiàn)一次函數(shù)模型的最小二乘法擬合優(yōu)化計算,通過程序分析及結果比較得出每種方法的效率及精確性。

    【關鍵詞】SciPy? 最小二乘法? 擬合

    1、引言

    最小二乘法原理最早出現(xiàn)在Legendre在1805年發(fā)表的《計算彗星軌道的新方法》的附錄中。Legendre認為:“賦予誤差的平方和為極小時,則意味著在這些誤差之間建立了一種均衡性,它阻止了極端情形所施加的過度影響。這非常好地適用于揭示最接近真實情形的系統(tǒng)狀態(tài)”。

    2、理論基礎

    2.1最小二乘法理論基礎

    最小二乘法主要應用于解決連續(xù)或離散函數(shù)模型的最優(yōu)解問題,是測量工作以及其它科學工程領域中,應用最早也是最廣泛的算法之一。最小二乘法是一種最常見的曲線擬合數(shù)學優(yōu)化方法,其原理是將復雜函數(shù)變?yōu)楹唵魏瘮?shù)或者將離散函數(shù)轉變?yōu)檫B續(xù)函數(shù),其意義在于,簡化函數(shù)或數(shù)學模型,將原先不易求解和解析困難的問題轉化為容易求解和容易析解的問題。其通常的解析過程需要首先在一個連續(xù)或者離散的原函數(shù)上采樣若干樣本點,接著用若干個簡單的函數(shù)與采樣樣本點進行擬合,并求擬合函數(shù)與采樣點之間的方差,循環(huán)重復這一過程,直到樣本中出現(xiàn)一個最方差,這條擬合曲線就是通過最小二乘法得到的最優(yōu)擬合曲線。

    在生產(chǎn)和實踐過程中,經(jīng)常會遇到利用一組觀測數(shù)據(jù)通過最小二乘法來估計某些未知參數(shù)的問題。最小二乘法在計算過程中存在一定的誤差,并且使用人工計算的方法計算量非常大,但隨著近代計算機技術的不斷發(fā)展,得益于計算機強大的計算能力,最小二乘法計算量大的問題得到了很好的解決,因此最小二乘法已經(jīng)成為了工程和應用數(shù)學領域最常用的函數(shù)擬合優(yōu)化方法。

    2.2 SciPy基礎

    SciPy起源于2001年,是一個面向Python語言的開源科學計算數(shù)據(jù)包,常用用于數(shù)學、科學、工程領域,可以處理插值、積分、優(yōu)化、整合以及線性代數(shù)模塊、傅里葉變換、圖像處理、常微分方程數(shù)值解的求解、信號處理等各種數(shù)值計算的問題。SciPy庫是構建在NumPy庫的基礎之上的,SciPy提供了許多操作NumPy數(shù)組的函數(shù),可以有效得計算NumPy庫中的矩陣和數(shù)組,使得NumPy庫和Scipy庫協(xié)同工作,高效得解決數(shù)據(jù)計算和數(shù)據(jù)處理問題。

    scipy.sparse模塊構建了7種稀疏矩陣數(shù)據(jù)結構,7種結構在計算機中的以稀疏格式儲存,使得科學計算和數(shù)據(jù)處理有效得節(jié)省了空間,提高了運行效率。其中最常用的CSR與CSC這兩種方法提供了快速的主軸索引方式和稀疏模式下的快速矩陣向量乘法,大大提高了矩陣的運算速度,從而在依托于SciPy庫的科學計算中得到了廣泛的應用。scipy.linalg模塊提供了標準的線性代數(shù)運算,同時還加入了NumPy中沒有的高級函數(shù),使用BLAS/LAPACK庫編譯。scipy.optimize模塊提供了非線性方程求解,函數(shù)最小值,曲線擬合和路徑尋找等數(shù)學優(yōu)化方法。

    3、最小二乘法求解設計實現(xiàn)

    3.1 Scipy.linalg模擬干擾樣本對一次函數(shù)求解

    本文首先采用scipy.linalg模塊。

    3.1.1設計思路。利用numpy.linspace在(-3,3)上建立150個初始數(shù)據(jù),建立理想模型y=5x+3,通過numpy.random模塊中的隨機函數(shù)模擬μ為0,σ為0.3的正態(tài)分布外界干擾,并添加種子池,保證每次程序運行干擾值固定,對初始測試樣本進行干擾,通過干擾后的測試樣本構建數(shù)學模型方程組,抽取方程組中的系數(shù)矩陣,并進行numpy縱向堆疊,傳入scipy.linalg模塊lstsq函數(shù),由于lstsq函數(shù)傳入?yún)?shù)需要為數(shù)組形式,所以對堆疊之后的結果進行轉置,再將轉置后的結果傳入lstsq函數(shù)。

    lstsq函數(shù)的返回值共有4個,所求的結果系數(shù)在第一個返回值中,而第一個返回值為數(shù)組類型,根據(jù)數(shù)學模型,可以對應相應的索引號打印顯示出最終的最優(yōu)模型系數(shù),最后通過Matplotlib庫進行數(shù)據(jù)可視化輸出干擾后的測試樣本和擬合曲線,并在lstsq函數(shù)求解的首尾加入計時函數(shù),具體流程圖如圖1所示。

    3.1.2實現(xiàn)程序

    import numpy as np

    from scipy import linalg

    import matplotlib.pyplot as plt

    import time

    plt.rcParams['font.sans-serif'] = ['SimHei']? ? ? ?# 用來正常顯示中文標簽

    plt.rcParams['axes.unicode_minus'] = False? ? ? # 用來正常顯示負號

    start = time.time()

    np.random.seed(0)

    x=np.linspace(-3,3,150)? ? ? ? ? ? ? #x的定義域,150個模擬的未擾動測試樣本

    y=5*x+3? ? ? ? ? ? ? ? ? ? ? ? ? #建立的理想數(shù)學模型,預期值

    x1=x+np.random.normal(0,0.3,150)? ? #現(xiàn)實外界條件干擾,通過random函數(shù)模塊模擬外

    界干擾

    猜你喜歡
    最小二乘法
    基于壓電陶瓷的納米定位與掃描平臺模型辨識算法研究
    基于慣導角度量測的軌道平面最佳線形參數(shù)估計算法
    馬爾科夫鏈在市場預測中的應用
    一種改進的基于RSSI最小二乘法和擬牛頓法的WSN節(jié)點定位算法
    某型飛機副翼操縱系統(tǒng)建模研究
    最小二乘法基本思想及其應用
    科技視界(2016年22期)2016-10-18 17:12:13
    基于改進的最小二乘法的車道線檢測方法
    全國各省份經(jīng)濟發(fā)展影響因素的實證分析
    財稅月刊(2016年5期)2016-08-03 21:07:28
    全國主要市轄區(qū)的房價收入比影響因素研究
    商(2016年20期)2016-07-04 01:23:26
    手動求解線性回歸方程的方法和技巧
    考試周刊(2016年27期)2016-05-26 23:45:13
    浑源县| 台东县| 丹阳市| 鹤岗市| 庄浪县| 济源市| 包头市| 化德县| 奉节县| 衡东县| 蓬安县| 辽阳县| 京山县| 平舆县| 开鲁县| 石门县| 栾川县| 长宁区| 漳浦县| 海丰县| 兴义市| 定西市| 伊金霍洛旗| 自治县| 繁峙县| 乌兰察布市| 榆林市| 盐津县| 屏东市| 鄢陵县| 嫩江县| 游戏| 康马县| 石首市| 盐山县| 蓝田县| 苍梧县| 灵丘县| 平罗县| 永顺县| 盐池县|