數學建模 擬合演算法以及Python的三種實現方法

2021-10-05 09:12:09 字數 3766 閱讀 1483

擬合與插值的區別

插值演算法中,得到的多項式f(x

)f(x)

f(x)

要經過所有樣本點。但是如果樣本點太多,那

麼這個多項式次數過高,會造成龍格現象。

儘管我們可以選擇分段的方法避免這種現象,但是更多時候我們更傾向於得到

乙個確定的曲線,儘管這條曲線不能經過每乙個樣本點,但只要保證誤差足夠小即

可,這就是擬合的思想。(擬合的結果是得到乙個確定的曲線)

擬合曲線的確定

設樣本點為(xi

,yi)

,i=1

,2,.

..,n

(x_i,y_i),i=1,2,...,n

(xi​,y

i​),

i=1,

2,..

.,n,找到一條曲線y=k

x+by=kx+b

y=kx+b

,確定k,b

k,bk,

b的值,使得擬合曲線與樣本點最接近。

import pandas as pd

import numpy as np

import matplotlib.pyplot as plt

np.set_printoptions(suppress=

true

)# 不適用科學計數法

from scipy.optimize import leastsq
# 定義最小二乘函式

deferr

(p, x, y)

:return p[0]

* x + p[1]

- y

p0 =[1

,1]#設定引數初始值,可以隨意設定

# 新增截距項

est = sm.ols(y3,x)

# 最小二乘法

est2 = est.fit(

)

est2.summary(

)

ols regression results

dep. variable:

yr-squared:

0.863

model:

olsadj. r-squared:

0.835

method:

least squares

f-statistic:

31.46

date:

sat, 25 apr 2020

prob (f-statistic):

0.00249

time:

12:50:56

log-likelihood:

-5.9456

no. observations:

7aic:

15.89

df residuals:

5bic:

15.78

df model:

1covariance type:

nonrobust

coef

std err

tp>|t|

[0.025

0.975]

const

1.7941

0.633

2.833

0.037

0.166

3.422

x10.6135

0.109

5.609

0.002

0.332

0.895

omnibus:

nandurbin-watson:

3.087

prob(omnibus):

nanjarque-bera (jb):

0.717

skew:

0.291

prob(jb):

0.699

kurtosis:

1.544

cond. no.

14.9

使用JS實現三種基本的排序演算法以及三種演算法的比較

function bubblesort arr if arr.length 0 arr.length 1 for let outer arr.length outer 2 outer return arr 選擇排序我們也需要用到巢狀迴圈,演算法思路如下 從陣列的第乙個元素開始,將第乙個元素逐個與其他...

python變位詞的三種方法展示以及其數量級

2 排序比較法 計數比較法 def bian wei ci ls1,ls2 alist list ls2 pos1 0 result true print len ls1 iflen ls1 len ls2 while pos1 len ls1 and result pos2 0 found fal...

斐波那契數列的三種演算法以及複雜度

原作者部落格 1 遞迴 函式自己呼叫自己 2 遞迴的 缺陷 遞迴到一定程度,會發生 棧溢位 3 遞迴的 時間複雜度 遞迴總次數 每次遞迴的次數 4 遞迴的 空間複雜度 遞迴的深度 每次遞迴空間的大小 注意 每次遞迴空間的大小 是個常數,可以基本忽略不計 遞迴的 深度 樹的高度 遞迴的過程是乙個 二叉...