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函式,用來多項式擬合的,是用最小二乘法 舉個例子 ...