VB6擬合直線,VB 最小二乘法線性擬合

2022-11-18 07:05:04 字數 3919 閱讀 2681

1樓:匿名使用者

兩個陣列中的資料擬合一條直線

這個有多少可能是一條直線,曲線還差不多

用vb編寫,根據六組座標資料能自動擬合一條直線,並且顯示在窗體中,包括表示式

2樓:匿名使用者

我用的是最小二乘法擬合,這種方式在資料較少、較離散的情況下可能偏差較大。不知道你用來幹嘛,個人建議儘量多取資料,就算是其他方法也是資料越多越準確。不過用還是能用的,我拿這個給你舉個例子。

修改那個顯示比例,能調整點的xy軸比例位置。標尺是每一格10,修改比例後會調整。

private sub command1_click()

dim sigemax2, sigemax, sigemay, sigemaxy, a, b

for i = 0 to 5

sigemax2 = sigemax2 + val(text1(i).text) ^ 2

sigemax = sigemax + val(text1(i).text)

sigemay = sigemay + val(text2(i).text)

sigemaxy = sigemaxy + val(text1(i).text) * val(text2(i).text)

next

a = (sigemax2 * sigemay - sigemax * sigemaxy) / (6 * sigemax2 - sigemax ^ 2)

b = (6 * sigemaxy - sigemax * sigemay) / (6 * sigemax2 - sigemax ^ 2)

picture1.cls

for i = 0 to 5

picture1.circle (text1(i) * text3 + 5000, -text2(i) * text3 + 3000), 30, vbred

next

picture1.line (-5000 + 5000, 0 + 3000)-(5000 + 5000, 0 + 3000)

picture1.line (5000, 0)-(5000, 8000)

for i = 0 to 2800 step text3.text * 10

picture1.line (i + 5000, -50 + 3000)-(i + 5000, 3000)

picture1.line (5000, 3000 + i)-(5050, 3000 + i)

next

for i = 0 to -2800 step -text3.text * 10

picture1.line (i + 5000, -50 + 3000)-(i + 5000, 3000)

picture1.line (5000, 3000 + i)-(5050, 3000 + i)

next

picture1.line (-3000 * text3 + 5000, -(b * (-3000) + a) * text3 + 3000)-(3000 * text3 + 5000, -(b * (3000) + a) * text3 + 3000)

if b = 1 then b = ""

if a < 0 then label3 = "y=" + cstr(b3) + "x" + "-" + cstr(abs(a)) else label3 = "y=" + cstr(b) + "x" + "+" + cstr(a)

end sub

忘了顯示錶達式了,修改下,你再新增個label3就行,然後把if b = 1 then b = ""

if a < 0 then label3 = "y=" + cstr(b3) + "x" + "-" + cstr(abs(a)) else label3 = "y=" + cstr(b) + "x" + "+" + cstr(a)加在end sub前就可以了

vb 最小二乘法線性擬合 30

利用最小二乘法擬合直線(用vb)在介面上畫出圖並顯示方程

3樓:匿名使用者

這個是高等數學裡的。做實驗常用的方法。

最小二乘法原理

在我們研究兩個變數(x, y)之間的相互關係時,通常可以得到一系列成對的資料(x1, y1、x2, y2... xm , ym);將這些資料描繪在x -y直角座標系中(如圖1), 若發現這些點在一條直線附近,可以令這條直線方程如(式1-1)。

y計= a0 + a1 x (式1-1)

其中:a0、a1 是任意實數

為建立這直線方程就要確定a0和a1,應用《最小二乘法原理》,將實測值yi與利用(式1-1)計算值(y計=a0+a1x)的離差(yi-y計)的平方和〔∑(yi - y計)2〕最小為「優化判據」。

令: φ = ∑(yi - y計)2 (式1-2)

把(式1-1)代入(式1-2)中得:

φ = ∑(yi - a0 - a1 xi)2 (式1-3)

當∑(yi-y計)平方最小時,可用函式 φ 對a0、a1求偏導數,令這兩個偏導數等於零。

(式1-4)

(式1-5)

亦即:m a0 + (∑xi ) a1 = ∑yi (式1-6)

(∑xi ) a0 + (∑xi2 ) a1 = ∑(xi, yi) (式1-7)

得到的兩個關於a0、 a1為未知數的兩個方程組,解這兩個方程組得出:

a0 = (∑yi) / m - a1(∑xi) / m (式1-8)

a1 = [n∑xi yi - (∑xi ∑yi)] / [n∑xi2 - (∑xi)2 )] (式1-9)

這時把a0、a1代入(式1-1)中, 此時的(式1-1)就是我們迴歸的元線性方程即:數學模型。

在迴歸過程中,迴歸的關聯式是不可能全部通過每個迴歸資料點(x1, y1、 x2, y2...xm,ym),為了判斷關聯式的好壞,可藉助相關係數「r」,統計量「f」,剩餘標準偏差「s」進行判斷;「r」越趨近於 1 越好;「f」的絕對值越大越好;「s」越趨近於 0 越好。

r = [∑xiyi - m (∑xi / m)(∑yi / m)]/ sqr (式1-10) *

在(式1-1)中,m為樣本容量,即實驗次數;xi、yi分別任意一組實驗x、y的數值。微積分應用課題一 最小二乘法

從前面的學習中, 我們知道最小二乘法可以用來處理一組資料, 可以從一組測定的資料中尋求變數之間的依賴關係, 這種函式關係稱為經驗公式. 本課題將介紹最小二乘法的精確定義及如何尋求 與 之間近似成線性關係時的經驗公式. 假定實驗測得變數之間的 個資料 , , …, , 則在 平面上, 可以得到 個點 , 這種圖形稱為「散點圖」, 從圖中可以粗略看出這些點大致散落在某直線近旁, 我們認為 與 之間近似為一線性函式, 下面介紹求解步驟.

考慮函式 , 其中 和 是待定常數. 如果 在一直線上, 可以認為變數之間的關係為 . 但一般說來, 這些點不可能在同一直線上.

記 , 它反映了用直線 來描述 , 時, 計算值 與實際值 產生的偏差. 當然要求偏差越小越好, 但由於 可正可負, 因此不能認為總偏差 時, 函式 就很好地反映了變數之間的關係, 因為此時每個偏差的絕對值可能很大. 為了改進這一缺陷, 就考慮用 來代替 .

但是由於絕對值不易作解析運算, 因此, 進一步用 來度量總偏差. 因偏差的平方和最小可以保證每個偏差都不會很大. 於是問題歸結為確定 中的常數 和 , 使 為最小.

用這種方法確定係數 , 的方法稱為最小二乘法.

4樓:匿名使用者

感覺用matlab更加的方便點

vb曲線擬合

vb最小二乘法擬合直線

如何用vb擬合曲線? 50

5樓:匿名使用者

先用一組實際的、正確資料代人公式,再求出未知量

6樓:設計營地

這個你要先把擬合公式求出來。

最小二乘法的擬合,最小二乘法曲線擬合公式

對給定資料點集合,在取定的函式類中,求,使誤差的平方和最小,從幾何意義上講,就是尋求與給定點集的距離平方和為最小的曲線y p x 函式p x 稱為擬合函式或最小二乘解,求擬合函式p x 的方法稱為曲線擬合的最小二乘法。最小二乘法的矩陣形式 最小二乘法的矩陣形式為 其中 為 的矩陣,為 的列向量,為 ...

有關matlab程式設計最小二乘法圓擬合的問題

第一步,根據已知點,描圖x y plot x,y,p 第二步,根據已知點擬合圓的一般式方程,利用公式求出圓心和半徑首先,用方程x 2 y 2 dx ey f 0,擬合出其係數d e f,求出圓心 d 2,e 2 半徑0.5 d 2 e 2 4f 第三步,根據圓的引數方程,求出x,y的點,描點plot...

最小二乘法直線在什麼條件下一致,matlab中用最小二乘法擬合直線

那個像e的符號是希臘字母,念 西格瑪 在數學上常表示為 求和 的意思。如果已知一條直線上的n個點 xi,yi 則求最接近這n個點的直線y bx a可以.謝謝,如何用excel進行最小二乘法直線擬合 matlab中用最小二乘法擬合直線 用polyfit函式,用來多項式擬合的,是用最小二乘法 舉個例子 ...