1樓:匿名使用者
老弟,公式打不出來的
一般都是用matlab搞定的,它裡面有現成的函式供使用的
典型程式解析:
x=[0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1];%input xi data
y=[1.978 3.28 6.
16 7.08 7.34 7.
66 9.56 9.48 9.
30 11.2]; % input yi data
n=2; % polynomial order
p=polyfit(x, y, n)% polyfit 的輸出是一個多項式係數的行向量(擬合二項式的係數)
ezplot('-9.8108*x*x+20.1293*x-0.0317')%對擬合的函式作圖
xi=linspace(0,1,100); % x-axis data for plotting
z=polyval(p, xi);% 為了計算在xi資料點的多項式值,呼叫matlab的函式polyval
plot(x,y, 'o' ,x,y,xi,z,':')%在同一個圖形裡看他們的擬合程度
典型例題:對以下資料分別作二次,三次多項式擬合,並畫出圖形.
x=1:16;
y=[4, 6.4, 8, 8.4, 9.
28, 9.5, 9.7, 9.
86, 10, 10.2, 10.32, 10.
42, 10.5, 10.55, 10.
58, 10.6];
源程式:二次多項式擬合
x=1:1:16;
y=[4, 6.4, 8, 8.4, 9.
28, 9.5, 9.7, 9.
86, 10, 10.2, 10.32, 10.
42, 10.5, 10.55, 10.
58, 10.6];
a=polyfit(x,y,2)
a =-0.0445 1.0711 4.3252
ezplot('-0.0445*x^2+1.0711*x+4.3252')
三次多項式擬合
x=1:1:16;
y=[4, 6.4, 8, 8.4, 9.
28, 9.5, 9.7, 9.
86, 10, 10.2, 10.32, 10.
42, 10.5, 10.55, 10.
58, 10.6];
a=polyfit(x,y,3)
a =0.0060 -0.1963 2.1346 2.5952
ezplot('0.0060*x^3-0.1963*x^2+2.1346*x+2.5952')
matlab最小二乘法曲線擬合怎麼取
2樓:匿名使用者
曲線擬合
已知離散點上的資料集,即已知在點集上的函式值,構造一個解析函式(其圖形為一曲線)使在原離散點上儘可能接近給定的值,這一過程稱為曲線擬合。最常用的曲線擬合方法是最小二乘法,該方法是尋找函式使得最小。
matlab函式:p=polyfit(x,y,n)
[p,s]= polyfit(x,y,n)
說明:x,y為資料點,n為多項式階數,返回p為冪次從高到低的多項式係數向量p。x必須是單調的。矩陣s用於生成**值的誤差估計。(見下一函式polyval)
多項式曲線求值函式:polyval()
呼叫格式: y=polyval(p,x)
[y,delta]=polyval(p,x,s)
說明:y=polyval(p,x)為返回對應自變數x在給定係數p的多項式的值。
[y,delta]=polyval(p,x,s) 使用polyfit函式的選項輸出s得出誤差估計ydelta。它假設polyfit函式資料輸入的誤差是獨立正態的,並且方差為常數。則ydelta將至少包含50%的**值。
練習:如下給定資料的擬合曲線,x=[0.5,1.0,1.5,2.0,2.5,3.0],
y=[1.75,2.45,3.81,4.80,7.00,8.60]。
解:matlab程式如下:
x=[0.5,1.0,1.5,2.0,2.5,3.0];
y=[1.75,2.45,3.81,4.80,7.00,8.60];
p=polyfit(x,y,2)
x1=0.5:0.05:3.0;
y1=polyval(p,x1);
plot(x,y,'*r',x1,y1,'-b')
計算結果為:
p =0.5614 0.82871.1560
即所得多項式為y=0.5614x^2+0.08287x+1.15560
polyfit函式是matlab中用於進行曲線擬合的一個函式。曲線擬合:已知離散點上的資料集,即已知在點集上的函式值,構造一個解析函式(其圖形為一曲線)使在原離散點上儘可能接近給定的值。
解釋1 用法 polyfit(x,y,n ) ;用多項式求過已知點的表示式,其中x為源資料點對應的橫座標,可為行向量、矩陣,y為源資料點對應的縱座標,可為行向量、矩陣,n為你要擬合的階數,一階直線擬合,二階拋物線擬合,並非階次越高越好,看擬合情況 matlab polyfit 做出來的值從左到右表示從高次到低次的多項式係數 給個例子一看就知道了 x = (0: 0.1:
2.5)'; y = erf(x); p = polyfit(x,y,6) p = 0.0084 -0.
0983 0.4217 -0.7435 0.
1471 1.1064 0.0004 則y=0.
0084x^6-0.0983x^5+0.4217x^4-0.
7435x^3+0.1471x^2+1.1064x+0.
0004 解釋2: matlab軟體提供了基本的曲線擬合函式的命令. 多項式函式擬合:a=polyfit(xdata,ydata,n) 其中n表示多項式的最高階數,xdata,ydata為將要擬合的資料,它是用陣列的方式輸入.輸出引數a為擬合多項式y=a1xn+...
+anx+a n+1的係數 多項式在x處的值y可用下面程式計算. y=polyval(a,x,m) 線性:m=1, 二次:m=2, … polyfit的輸出是一個多項式係數的行向量。
為了計算在xi資料點的多項式值,呼叫matlab的函式polyval。 例: x=0:
0.1:1; y=[-0.
447 1.978 3.28 6.
16 7.08 7.34 7.
66 9.56 9.489.
30 11.2];
polyfit用法示例結果
a=polyfit(x,y,2) z=polyval(a,x); plot(x,y,'r*',x,z,'b') 釋疑: 在不少書中和論壇上,polyfit被誤寫作「ployfit」,使得很多初學者誤解,認為自己安裝的matlab軟體出錯,無法找到這樣的函式。只要注意拼寫正確即可。
同樣地,polyval函式也易被誤寫為「ployval」。
曲線擬合 最小二乘法 c語言程式
3樓:匿名使用者
去翻一下,計算方法或者數值分析的書吧。有公式,你按那公式求就可以了。
一樓用的是列主元消去法(跟高斯消去法差不多,就多了一個選主元(絕對值最大))
對於解ax=b,平方根法要求a是對稱且正定矩陣由於平方根法裡面要計算根號,計算量就比較大,而且工程中的a不一定都是正定的。所以在工程中採用改進的平方根法(它解出來的解與真解有一點誤差,但是相當相近),也就是說a只要對稱就行了。
4樓:匿名使用者
#include
#include
void guass(int n,float array[10])for(i=0;i }int main() guass(n,array); return 0;} 這是通過除錯的程式,可以試試 include include include using namespace std class leastsquare 求c或c 語言編寫的用最小二乘法進行曲線擬合 你的近似解析表示式為y at bt 2 ct 2 是不是想寫成為y at bt 2 ct 3 但是實... 最小二乘法是一種數學優化技術,它通過最小化誤差的平方和找到一組資料的最佳函式匹配。最小二乘法是用最簡的方法求得一些絕對不可知的真值,而令誤差平方之和為最小。最小二乘法通常用於曲線擬合。比如從最簡單的一次函式y kx b講起 已知座標軸上有些點 1.1,2.0 2.1,3.2 3,4.0 4,6 5.... 最小二乘法是一種數學優化技術 它通過最小化誤差的平方和尋找資料的最佳函式匹配。最小二乘法 又稱最小平方法 是一種數學優化技術。它通過最小化誤差的平方和尋找資料的最佳函式匹配。利用最小二乘法可以簡便地求得未知的資料,並使得這些求得的資料與實際資料之間誤差的平方和為最小。最小二乘法還可用於曲線擬合。其他...使用最小二乘法擬合直線C,求用C 實現最小二乘法曲線擬合程式碼
最小二乘法的原理是什么的,最小二乘法 的原理是什麼的?
什麼叫最玄乘法什麼叫最小二乘法