最小二乘法

2021-09-11 11:49:40 字數 1809 閱讀 6341

import numpy as np

from scipy.optimize import leastsq

#from scipy.integrate import quad,dblquad,nquad

import math

import xlrd

import matplotlib as mat

mat.use("tkagg")

import matplotlib.pyplot as plt

#t=t=np.linspace(0,4,50)

x=y=

data = xlrd.open_workbook(r'd:/2.xlsx')

table = data.sheet_by_name(u'sheet1')

num=37#需要變化

for i in range(num):

#y=y/np.max(y)

t=np.asarray(t)

x=np.asarray(x)

y=np.asarray(y)

print(t,x,y,len(t))

'''

rows = table.row_values(0)

cols = table.col_values(0)

cell_a1 =

cell_c4 = table.cell_value(3,2)

g_t=un_g*(math.e**(-un_beta*t))#關於t的乙個序列

juanji=np.convolve(g_t,x)#乙個關於t的序列長度為t的二倍-1

sigmod_e=2*un_mill*((1+x)**(un_alpha-1)-(1+x)**((-un_alpha/2)-1))/un_alpha#乙個序列

fun_sum=sigmod_e+juanji#sigmod的乙個序列

'''def func(p,t,x):

un_alpha, un_mill, un_g, un_beta =p #[0, 0, 0, 0]

#print(2*un_mill*((1+x)**(un_alpha-1)-(1+x)**((-un_alpha/2)-1))/un_alpha + np.convolve(un_g*(math.e**(-un_beta*t)),x)[0:num])

return 2*un_mill*((1+x)**(un_alpha-1)-(1+x)**((-un_alpha/2)-1))/un_alpha + np.convolve(un_g*(math.e**(-un_beta*t)),x)[0:num]

def error(p,t,x,y,s):

print (s)

return func(p,t,x)-y

p0=[12.32,0.01,0.5,50]

s="test the number of iteration" #試驗最小二乘法函式leastsq得呼叫幾次error函式才能找到使得均方誤差之和最小的a~c

para=leastsq(error,p0,args=(t,x,y,s)) #把error函式中除了p以外的引數打包到args中

un_alpha, un_mill, un_g, un_beta=para[0]

print("un_alpha:", un_alpha ,"un_mill:",un_mill, "un_g:",un_g, "un_beta:",un_beta)

plt.figure()

plt.plot(x,y,"red")

plt.plot(x,func(para[0],t,x),"green")

plt.show()

最小二乘法

include stdafx.h include include const int n 2 const int m 5 int sgn double x void lss double g n 1 int xm,int xn,double x m double p,double w m lss函式...

最小二乘法

在研究兩個變數之間的關係時,可以用回歸分析的方法進行分析。當確定了描述兩個變數之間的回歸模型後,就可以使用最小二乘法估計模型中的引數,進而建立經驗方程.簡單地說,最小二乘的思想就是要使得觀測點和估計點的距離的平方和達到最小.這裡的 二乘 指的是用平方來度量觀測點與估計點的遠近 在古漢語中 平方 稱為...

最小二乘法

最小二乘法 least squares analysis 是一種 數學 優化 技術,它通過 最小化 誤差 的平方和找到一組資料的最佳 函式 匹配。最小二乘法是用最簡的方法求得一些絕對不可知的真值,而令誤差平方之和為最小。最小二乘法通常用於 曲線擬合 least squares fitting 這裡有...