導航:首頁 > 源碼編譯 > 樣條曲線擬合演算法

樣條曲線擬合演算法

發布時間:2023-03-27 06:15:56

1. 三次樣條插值 三次樣條擬合

兩譽緩亂慶檔個擬合曲線分開寫. x=[1:16];y1=[2044 2399 2525 2376 2525 2392 2525 2525 2385 2385 2376 2392 2426 2457 2464 2426];xx=1:0.1:16;yy1=interp1(x,y1,xx, 'cubic spline');plot(x,y1,'ro','MarkerFaceColor','r');hold on;plot(xx,yy1,'LineWidth',2);grid on; 另外一哪嫌個照著寫就可以了

2. 曲線擬合都有幾種方法

曲線擬合一般方法包括:
1、用解析表達式逼近離散數據;
2、最小二乘法。
相關概念:
曲線擬合:實際工作中,變數間未必都有線性關系,如服葯後血液知葯濃度與時間的關系;疾病療效與療程長短的關系;毒物劑量與致死率的關系等常呈曲線關系。曲線擬合(curve fitting)是指選擇適當的曲線類型來擬合觀測數據,並用擬合的曲線方程分析兩變數間的關系。
曲線直線化是曲線擬合的重要手段之一。對於某些非線性的資料可以通過簡單的變數變換使之直線化,這樣就可以按最小二乘法原理求出變換後變數的直線方程,在實際工作中常利用此直線方程繪制資料碰歷的標准工作曲線,同時根據需要笑埋搜可將此直線方程還原為曲線方程,實現對資料的曲線擬合。

3. 知道一組數據,如何用matlab進行三次樣條函數擬合

如下:
function
fit_tulun
%多項式擬合方式
x=linspace(0,4*pi,6);
y_jingque=sin(x);
%決定稀疏樣本點數據
p_poly=polyfit(x,y_jingque,5);
x_poly_fit=linspace(0,4*pi,100);
y_poly_fit=polyval(p_poly,x_poly_fit);
%三次樣條擬合方式
sp=csapi(x,y_jingque);
%求三次樣條函數的導數.
s_diff=fnder(sp,1);
plot(x_poly_fit,y_poly_fit,'ko',x_poly_fit,y_poly_fit,'b:')
%plot(x_poly_fit,y_poly_fit,'b:')
hold
on
fnplt(sp,'r')
fnplt(s_diff,'c')
x1=linspace(0,4*pi,200);
plot(x1,sin(x1),'m','linewidth',1.8)
legend('多項式擬合樣本點','多項式擬合曲線','三次樣條擬合曲線','三次樣條導數曲線','正弦曲線精確圖形').

4. 曲線擬合法的理論與分析

曲線擬合法沉降預測是將地基沉降近似看成按某種特定的曲線規律來變化的過程,對實測沉降數據進行擬合,建立某種與之相適應的曲線模型,採用適當的優化方法,反推出計算公式中所需要的參數,確定回歸公式,再運用於後期的沉降預測和最終沉降預測。該類方法參數較少宜確定,在工程中得到了廣泛判知缺的應用。目前常用的曲線擬合法有指數曲線配合法(三點法)、星野法、Asaoka法、沉降速率法、雙曲線法、指數曲線法、「S」形成長曲線模型等[103][157]

5.2.1.1 指數曲線配合法(三點法)

指數曲線配合法由曾國熙於1959年提出[103]。該方法是從實測的沉降—時間曲線上選擇最大恆載時間段內的任意三個時間點t1,t2,t3,其對應的沉降量分別為S1,S2,S3,使Δt=t3-t2=t2-t1,可得地基土層最終沉降量S

溫州淺灘軟土工程特性及固結沉降規律研究

該方法計算簡單,但一般要求觀測資料持續時間較長,實測沉降曲線基本處於收斂階段才可進行。該方法的缺點是選取的沉降點不同,計算結果迥異,使結果的准確性大打折扣。

5.2.1.2 星野法

星野根據現場實測值證明了固結沉降是時間平方根的函數,t時刻地基的總沉降St

溫州淺灘軟土工程特性及固結沉降規律研究

式中:St為隨時間t變化的總沉降量,當t→∞時,可得最終沉降量S;Sct為隨時間t變化的固結沉降量;Sd為假定的瞬時沉降量;td為假定的瞬時沉降時的時間;t為經過的時間;A,K為待定參數,由圖解法確定。

利用星野法預測路基沉降的關鍵是調整假定的瞬時沉降點(td,Sd),使得回歸分析的點正好落在一條直線上。該方法是一個反復作圖的過程,產生的誤差相對較大。

5.2.1.3 Asaoka 法

Asaoka法也稱淺崗法,是Asaoka[158]提出的一種從一定時間所得的沉降觀測資料來預計最終沉降量和沉降速率的方法。根據沉降和應變的關系,t時刻地基的總沉降量St可以近似地由級數形式的高階微分方程表示:

溫州淺灘軟土工程特性及固結沉降規律研究

式中:a1,a2,…,an,b為取決於固結系數和土層邊界條件的常數。

實測沉降—時間曲線可以分離成:tj=j·Δt,j=1,2,3…,且Δt為常數,Sj為時間tj時的沉降量,式(5.3)可以用n階遞推關系表示為

溫州淺灘軟土工程特性及固結沉降規律研究

由於高階微分迅速減小,第一階近似就能滿足工程精度的要求。式(5.4)可簡化為

溫州淺灘軟土工程特性及固結沉降規律研究

根據實測沉降資料作圖可以確定待定參數β0,β1和最終沉降量S0/(1-β1)。Asaoka法屬於圖解法,Δt的取值對最終沉降量的推算結果有直接影響。此外,由於上述計算只考慮了沉降的一階導數,故得到的最終沉降量不包括次固結沉降。

5.2.1.4 雙曲線法

雙曲線法認為沉降量與時間按雙曲線的形式遞減,其基本方程為

溫州淺灘軟土工程特性及固結沉降規律研究

式中:St為t時刻的沉降量;S0為預壓期中任意時刻t0對應的沉降量(一般選擇路堤填築結束後的第一個觀測點的時間和沉降數據);a,b為待定系數,可通過建立線性回歸方程利用最小二乘法求解。

將得到的a,b,S0,t0代入式(5.6),即可求得任意時刻t地基的沉降量St,且掘辯當t→∞時,最終沉降量為

5.2.1.5 指數曲線法

假定地基荷載穩定後,沉降按指數曲線規律變化,其基本方程式為

溫州淺灘軟土工程特性及固結沉降規律研究

令tm=t+Δt/2,將式(5.7)對t求導後,寫成增量的形式為

溫州淺灘軟土工程特性及固結沉降規律研究

對式(5.8)兩邊取自然對數,並令

,可得:

溫州淺灘軟土工程特性及固結沉降規律研究

在實測沉降曲線上確定拐點值(t0,S0)和(

,yi)點,對這些點進行線性擬合,並利用最小二乘法求出參數A,B,進而求出a,b,且當t→∞時,最終沉降量為S=S0+a。

5.2.1.6 S 形成長曲線模型

如果時間序列的發展具有一定的「成長」過程,即經歷一個出現、發展、成熟或衰亡的過程,對於具有這種演變趨勢的預測目標,則可以運用成長曲線模型進行預測[196]。這種模型是依據一定的演變理論為前提推導出來的,所以往往能夠比前述簡單的時間序列模型提供更精確的預測。在軟土地基沉降預測方面,大量現場實測沉降—時間曲線分析表明,全過程的地基沉降量與時間的猛察關系曲線呈S形,而且在荷載逐步增加的過程中,沉降觀測點逐步發生沉降的過程可以分為以下4個階段[157],如表5.1所示。

表5.1 地基沉降隨時間發展的階段特徵

常用的S形成長曲線模型及其表達式如表5.2所示。

鑒於S形成長曲線的特徵和沉降隨時間的變化規律十分相似,可以利用S形成長曲線模型對軟土地基沉降進行預測分析。本書選取典型的Pearl模型(Logistic模型)為例,討論Pearl曲線在沉降預測中的建模、求解過程。

表5.2 常用的S形成長曲線模型

註:S(t)為隨時間變化的函數;t為時間;a,b,L,r為參數。

(1)等時距Pearl曲線模型

Pearl曲線模型要求建模數據必須是等時距的,等時距Pearl曲線模型的表達式為

溫州淺灘軟土工程特性及固結沉降規律研究

式中:S(t)為t時刻沉降量的預估值;t為等時距時間序列的時間序號;a,b,L為模型的參數,均大於0,其中a為無量綱數,b的單位為時間的倒數,L的單位同沉降量的單位。

Pearl曲線模型參數的求解採用三段估計法,設地基沉降的等時距時間序列為{S(t)|t=1,2,…,n},即{S(1),S(2),S(3),…,S(n)},將時間序列分為3段,每段有r=n/3 項。

如果自變數時間t的時間間隔相等、時間長短相等、前後連續,符合等間隔時間序列,將時間t從1 開始編號,即取t=1,2,3,…,n。時間序列分為3 段,第1 段為t=1,2,3,…,r;第2 段為t=r+1,r+2,r+3,…,2r;第3 段為t=2r+1,2r+2,2r+3,…,3r。

設S1,S2,S3分別為這3個時間段內對應的各項S(t)值的倒數之和,即

溫州淺灘軟土工程特性及固結沉降規律研究

將等時距Pearl曲線模型的表達式改寫為倒數形式為

溫州淺灘軟土工程特性及固結沉降規律研究

利用級數求和公式,可求得式(5.11)為

溫州淺灘軟土工程特性及固結沉降規律研究

由式(5.13)可以解出Pearl曲線模型各參數a,b,L的計算通式。將求得的參數代入式(5.10)中,即可對地基的沉降量S(t)(t= 1,2,3,…,n)進行等時距預測。

(2)非等時距時間序列的等時距變換

由於Pearl曲線模型要求建模數據必須是等時距的,如果實測沉降數據是非等時距的時間序列,則需將其變為等時距時間序列,才能運用等時距Pearl曲線模型進行預測。

將非等時距沉降時間序列進行等時距變換一般採用插值法來完成,常用的插值方法有:Lagrange插值法、Aitken 插值法、Neville 插值法、Newton 插值法、Hermite 插值法、分段多項式插值法及樣條插值法等[197][198]。如果既要克服高次多項式插值的 Runge現象,又要保證插值函數的連續性和光滑性,最常用的是三次樣條插值法(Spline)[198]。本書將採用三次樣條插值法(Spline)對非等時距實測沉降—時間序列進行插值處理,以得到等時距的序列。

假設從原始沉降—時間觀測曲線上讀取的n+1個點為(ti,Si),且Si—ti滿足函數關系Si=f(ti),(i=0,1,2,…,n)。如果ti∈ [a,b],且有a=t0<t1<t2<…<tn=b,存在函數F(ti)=Si在每個子區間 ti,ti+1[ ](i=0,1,2,…,n-1)上都是不超過三次的多項式,F(t),F'(t),F″(t)在[a,b] 上連續,那麼,函數F(t)就是被插值函數f(t)在插值節點t0,t1,t2,…,tn上的三次樣條插值函數。

由於函數F(t)在每個子區間[ti,ti+1] 上都是三次多項式,可設其表達式為

溫州淺灘軟土工程特性及固結沉降規律研究

F(t)有4n個待定系數,為保證F(t)及其導數F'(t),F″(t)在[ a,b ] 上連續,只需它們在各子區間的分界點處連續即可,因此,待定系數共滿足4n-2個條件:

溫州淺灘軟土工程特性及固結沉降規律研究

為了保證樣條插值問題解的唯一性,應另外給出邊界條件,常見的邊界條件有三種:

a.自然邊界條件F″(t0)=0,F″(tn)=0;

b.周期邊界條件F'(t0)=F'(tn),F″(t0)=F″(tn);

c.固定邊界條件F'(t0)=f'(a),F'(tn)=f'(b)。

根據待定系數滿足的上述條件,利用F(t)在節點處的二階導數值mi=F″(ti)來求解待定系數。利用Lagrange線性插值公式有

溫州淺灘軟土工程特性及固結沉降規律研究

式中:hi=ti+1-ti,(i=0,1,2,…,n-1)。

對F″(t)積分兩次,由F(ti)=Si和F(ti+1)=Si+1確定積分常數,可得三次樣條表達式:

溫州淺灘軟土工程特性及固結沉降規律研究

這里mi為未知數,為了確定mi,對F(t)求導得:

溫州淺灘軟土工程特性及固結沉降規律研究

由此可得:

溫州淺灘軟土工程特性及固結沉降規律研究

同理,在子區間[ti-1,ti]可得:

溫州淺灘軟土工程特性及固結沉降規律研究

因為F'(ti+0)=F'(ti-0),所以有:

溫州淺灘軟土工程特性及固結沉降規律研究

式中:μi =hi-1/(hi-1+hi),λi=hi/(hi-1+hi),(i=0,1,2,…,n)。

溫州淺灘軟土工程特性及固結沉降規律研究

a.對於自然邊值條件,可得:

溫州淺灘軟土工程特性及固結沉降規律研究

令λ0=1,

,μn=1,

,那麼,式(5.21)、(5.23)可以寫成矩陣的形式:

溫州淺灘軟土工程特性及固結沉降規律研究

b.對於周期邊值條件,可得端點方程:

溫州淺灘軟土工程特性及固結沉降規律研究

如果令λ0n=0,d0=

,dn=

,則式(5.21)、(5.25)也可寫成式(5.24)的矩陣形式。

c.對於固定邊值條件,可得:

溫州淺灘軟土工程特性及固結沉降規律研究

式中:λn=h0/(hn-1+h0),μn= 1-λn,dn= 6 (f[t0,t1]-f[tn-1,tn])/(hn-1+h0)。

式(5.21)、(5.26)可以寫成如下矩陣形式:

溫州淺灘軟土工程特性及固結沉降規律研究

求三次樣條插值函數的步驟為

1)計算hi=ti+1-ti(i=0,1,…,n-1),及μi,λi(i=1,2,…,n-1);

2)由式(5.21)結合給定的邊界條件得出確定m0,m1,…,mn的方程組,並求解;

3)將mi(i=0,1,…,n)代入式(5.17)即可得到F(t)的分段表達式。

5.2.1.7 曲線擬合方法對比及分析

綜合對比分析以上各種不同類型的曲線擬合法對實測沉降—時間曲線的數據要求、計算模型及模型參數求解方法、是否考慮次固結沉降等因素,各種方法的適用條件匯總於表5.3。

表5.3 各種曲線擬合法預測沉降的適用性對比

由表5.3可知,各種曲線擬合方法對實測沉降—時間曲線上數據點的要求不盡相同,而且不同模型中待定參數的求解方法也不同,由此而引起的預測誤差也是不一樣的。三點法和圖解法求參,受人為因素影響較大;而最小二乘法和三段估計法求參,相對較准確和穩定。此外,雙曲線法、指數曲線法和 S 形成長曲線可以考慮地基次固結沉降,而三點法、星野法和Asaoka法將次固結沉降忽略。由於本書的研究對象為淤泥土,有蠕變現象,因此,本章將選取考慮次固結沉降的雙曲線法、指數曲線法和 Pearl 曲線模型對溫州淺灘靈霓海堤軟土地基的沉降進行預測分析。

5. 曲線擬合一般有哪些方法

曲線擬合一般方法包括:

1、用解析表達式逼近離散數據的方法

2、最小二乘法

拓展資料:

實際工作中,變數間未必都有線性關系,如服葯後血葯濃度與時間的關系;疾病療效與療程長短的關系;毒物劑量與致死率的關系等常呈曲線關系。曲線擬合(curve fitting)是指選擇適當的曲線類型來擬合觀測數據,並用擬合的曲線方程分析兩變數間的關系。

最小二乘法(又稱最小平方法)是一種數學優化技術。它通過最小化誤差的平方和尋找數據的最佳函數匹配。利用最小二乘法可以簡便地求得未知的數據,並使得這些求得的數據與實際數據之間誤差的平方和為最小。最小二乘法還可用於曲線擬合。其他一些優化問題也可通過最小化能量或最大化熵用最小二乘法來表達。

6. 如何擬合一條曲線

我是測繪專業畢業的,對於你的問題我幫你分析一下,希望能夠對你有幫助。

你說你能得到兩點的水平距離和高差,就是不精確而已是吧?其亮森族實即使你得到精

確值了計算出來了也不對。因為公路上描述路坡度用的不僅僅是水平距離,有時

候路線在平面上有敬弊轉彎,那麼就要用到平面位置的曲線長度。所以我建議一個方法:

路邊應該有里程標,那個就是春襲平面位置的距離,它包括了曲線和直線。用這個距

離再用你測得的高度差來計算路的坡度。比如AB兩點,A點比B點高1米,從A到B

的里程標示距離為100米。那麼A到B的這段路坡度就為百分之一的降坡,表示

為:1%,也可是表示為:i=0.01

對於你說的實際10M,你測的可能是8M也可能是11M,這個屬於精度問題。只有用

測繪儀器才能測得精度更高的數值。

如果我的回答你哪裡不明白可以再問我,很樂意幫助你。

7. 曲線擬合 曲率計算

為了更清楚地說明問題,把回答做了更新,增加了解釋部分。

數據點用(x_i,y_i)表示,

擬合曲線方程為:

y=e^(0.002707959454*x^2-0.2852803573*x+2.666852328);(-33<=x<=0)

e為自然對數的底,e=2.718281828459045……。

如果限定x的范圍是[-33,0],那麼,擬合出來,

最小曲率在x=-33處取得(曲率半徑最大),為1.946756485*10^(-13);

最大麴率在x=0處取得(曲率半徑最小),為0.01654934877。

根據問題的要求,這里計算出來的是曲率而非曲率半徑。

由於所用的擬合曲線不同,得出的結論會稍有差異,不過差別不大,數量級應該會一致。

但是,如果所用的方法不同,並且做出的假設不一樣,那麼,結果可能會差別較大。

這里基於如下假定和考慮:

1、這些數據都是測量數據而非計算數據,換言之,承認這些數據存在誤差。如果是計算數據,那麼,可以直接計算曲率,而不用算出那麼多組數據出來。從你給出的數據看,y值中各個數據不為0的數字大多隻有兩位,少數有3位,很多數據後面有很多個零,由此可以推斷,實際的有效數字至多隻有3位,誤差應該在百分之幾只有——這也是很普遍的情況,儀器儀表測量出來的數據,不可能那麼多數據都有很多個0在後面,而且,目前,除了光電測量儀器測量時間的有效數字會很多——很准確以外(時間是目前能夠測量最准確的物理量),絕大多數常用的數字測量儀表都只有三位或三位半(四位數字的測量儀表價格已經很昂貴了——不要誤把三位半的數字儀表當成四位),指針式儀表的有效數字不會更多。提問者的最後一個數據「2300000」,如果按照正常的判斷有效數字的方法,有七位有效數字,這不太可能——除非是重大科研項目,否則不會用那麼准確的測量儀器(那樣的話,這些數據都是保密的,提問者不可能帶出來)。於是可以推知,要麼是測量數據時記錄不規范(不知道用科學計數法准確記錄有效數字位數),要麼是把錄入到excell中的數據復制過來(已經看不出有效數字的位數了)。這樣的話,後面的數據的絕大誤差非常大,2300000的誤差至少應該有5000,比起前面幾個數據(30多),大了150多倍。如果不加處理,直接擬合的話,把他們的誤差都看成一樣,是不合適的。所以,這里也不是直接對數據點(x_i,y_i)用最下二乘法做擬合,而是對(x_i,lny_i)用最下二乘法做擬合,(後來想一想,對(x_i,lgy_i)擬合可能會更好一些)。

2、只考慮有數據的范圍,即x在-33到0之間的情況,此范圍之外沒有測量數據,不便計算(即使計算出來也不準)。(擬合出來的結果是曲率隨著x的減小不斷減小——這里認為從0到-33是在減小而不是最大,那麼如果不限定范圍,最大值和最小值是不存在的)

3、根據數據的特點,擬合曲線是一條整體的曲線,而不是分段曲線。做出x~lnx的曲線(如附圖一所示)可以看出,除了開始幾個點(|x|較小時)之外,其餘的數據點幾乎都在一條直線上。如果是人工做圖,基本上都會通過直線擬合該曲線,捨去前面幾個數據點。但是,直線擬合的話,在|x|較小時會產生較大的誤差,見附圖四),在工程上,常常都用二次曲線擬合(結果見附圖二)。所以,這里並沒有單純地用對數曲線擬合,而是用e^(a*x^2+b*x+c)的曲線擬合。如果要分段擬合,常常用樣條曲線或是NURBS曲線擬合(工程上很少直接用三次曲線擬合,而是用樣條曲線擬合,可以理解為在三次曲線分段擬合的基礎上做了一點改進),計算量大很多。結果可能會差別大一點。從提問者給出的數據曲線來看,這些數據點連接起來並不光滑(除個別點以外,大致是光滑的),說明誤差肯定是存在的。如果分段擬合,曲線嚴格通過每一個數據點(網友ha_2010_ha的做法),那樣,擬合曲線的每一段都只依賴於附近幾個數據點,而與其它數據點無關(這是樣條曲線的性質),這樣,如果局部幾個數據都有誤差,會導致這附近的曲線都受此誤差的影響,導致結果不準確(因為不能充分利用數據)——另一方面,避免了y值很大的點對y值很小的點的影響,這也是一個好處了。如果可以確保所有數據都非常准確,誤差很小,且各數據的數量級一致,往往會用樣條曲線(三次樣條曲線最常用)或是NURBS曲線(一般認為NURBS曲線比普通樣條曲線更好一點)(特別是有很多「彎曲」的曲線,不適宜用一個函數整體來擬合),那麼只要在AutoCAD上把這些點畫出,用「Spline」擬合一下就可以了,曲線都嚴格通過每一個數據點,但是會發現,擬合出來的曲線有很多個「彎」,不知道這是不是提問者想要的結果(有些時候,特別是化學上,對這種「與眾不同」的點很感興趣)。只是在AutoCAD上擬合時,看不出曲線的表達式,計算曲率時麻煩一些。本人對Matlab不熟悉,不知道那裡是否有樣條曲線和NURBS曲線能夠(感覺上應該有此功能)。

4、基於假定1,擬合曲線不一定會通過每一個數據點,而是通過最小二乘法,使得處理後的各個數據點(x,lny)與擬合曲線的距離之平方和最小。

5、另外一位網友ha_2010_ha給出了另外的擬合方式,是基於數據都很准確的假定下做出的(曲線過每一個擬合點),與此處計算的結果差別較大。這不是方法錯誤,而是基於不同的假定得出的結論不同而已。

6、如果需要更精確的結果,可以用高次曲線來擬合(x,lgy),從圖五和圖六可以看出,四次和五次曲線上的點與原來的數據點擬合得非常好。

以下是各種擬合方式下的曲率最值,從中可以看出,曲率的數量級都是一樣的。如果要精確一點,可以採用四次或五次曲線的擬合結果。

曲線次數,對數種類,最大麴率,最小曲率

#一次,自然對數:0.02939653517,6.100957152*10^(-13)

#一次,常用對數:0.02939653428,6.100957344*10^(-13)

#二次,自然對數:0.01654934877,1.946756485*10^(-13)

#二次,常用對數:0.01654934725,1.946756287*10^(-13)

#四次,常用對數:0.01805898064,3.911154182*10^(-13)

#五次,常用對數:0.01835618491,3.897350975*10^(-13)

又及:

關於提問者的疑問:

y=f(x)的曲率計算公式為:

k=|y''|/(1+y'^2)^(3/2);

只要把擬合曲線的方程代入上市,計算出最大值和最小值即可。

由於原始數據跨越5個數量級,直接從總的數據圖上是很難看出彎曲程度的。很容易錯誤地認為在x=-25左右彎曲程度最大。其實,只要分別做出局部數據圖像,把相鄰的幾個點單獨畫出來,就可以看得比較清楚。(比如,把前面8個點描出來,就會發現,那裡是彎曲最厲害的,而在x取30多時,彎曲程度很小。)

關於另外一位網友提到的幾個問題:

另外一位回答者沒有考慮誤差的影響,誤以為只要通過所有數據點,就是充分利用了數據,沒有通過某個數據點就是沒有利用數據。其實,通過最小二乘法算出來的擬合曲線參數是和每個數據都相關的。改變任何一個數據都會直接影響到整體結果,但是一個數據對擬合曲線的影響非常小,於是,即便個別數據誤差大一點,也不會對整個擬合曲線參數有多大影響。由於各個數據點對擬合曲線總體的影響很小,因而對各數據點附件一段擬合曲線的影響也不大。

另外,對誤差大小的判斷還有誤區,只考慮到了絕對誤差,沒有考慮相對誤差。例如,在x=-31時,y=1090000,擬合曲線的誤差如果達到10000,從絕對值看,確也不小;在x=-3處,y=36,誤差假設為1,絕對誤差也不大。但是,y=1090000時,即便誤差達到10000,也不到千分之一,何況測量數據只有3為有效數字,測量誤差都超過了100000,把計算誤差較小到10000以下沒有任何意義。而在y=36,測量誤差大致為0.5,相對誤差已經達到14%,遠比y=1090000時的相對誤差誤差大很多。(舉一個例子:南京長江大橋在江面上的正橋長1577米,從衛星上測量的誤差大概5米;有直尺測量一隻10厘米左右的鉛筆,直尺最小刻度1毫米;那是不是測量直尺更准確呢?這個例子在以前的初中物理教科書上出現過。)(這也是這位網友沒有理解為什麼要在數量級跨度較大的情況下對數據取對數後再擬合(在y值較大的地方絕對誤差會大很多),而不直接擬合(各個數據點的誤差一視同仁地處理)——其實,在大學物理實驗課程中,老師都會講到如何處理數據。如果還不清楚,可參閱大學物理實驗的指導書,一般在第一冊中會提到。)

另外,通過三次樣條插值,算出來,開始部分的曲率中,x=-3.46或-2.69時取得最大值5.17,並沒有達到10。

提到誤差,再多說幾句。由於當x的絕對值較小時,測量誤差很大,如果局部擬合,會導致局部誤差很大。比如,x=-4時,y=37,測量誤差大概在0.5左右(大一點可以認為是1),那麼,實際值可能在36.5到37.5之間。假如把y=37換成36.5,那麼重新計算一下,會發現,這一次,該點附件的最大麴率增大大了30.4%,為6.73,(取最大麴率的點也由-3.46變為-3.54,相差2.3%)即在其它數據點精確的情況下,僅僅考慮x=-4處這一個數據點的誤差,就會發現實際的最大麴率值可能與計算值偏差達30%,如果考慮到其它幾個點的誤差,這個偏差還更大。估計在40~50%左右。在這么大的偏差的情況下,計算出來曲率大的地方,有可能實際曲率會小一些,計算出來曲率小的地方有可能實際曲率會大一些,由於計算偏差那麼大,誰還能夠確定哪裡是曲率最大的地方哪裡是曲率最小的地方?

另外,由樣條曲線的局部性質,把x在-8到-33的那些數據點都去掉,只留下開始8個數據點,算出的結果是一樣。也從另外一個角度看得出目前討論的這個問題中,分段插值這種方法並沒有充分利用到數據。(某些情況下,這也是一個優點,稱為「局部穩定性」,可以參閱樣條函數的書籍。目前國內有不少高校的計算數學專業都面向研究生開設了該課程,從國外引進了不少相關專著。)

以上如有錯誤,歡迎批評指正。

8. 曲線擬合的方法

用Matlab進行曲線擬合步驟:
一、 單一變數的曲線逼近
Matlab有一個功能強大的曲線擬合工具箱 cftool ,使用方便,能實現多種類型的線性、非線性曲線擬合。下面結合我使用的 Matlab R2007b 來簡單介紹如何使用這個工具箱。
假設我們要擬合的函數形式是 y=A*x*x + B*x, 且A>0,B>0 。
1、在命令行輸入數據:
》x=[110.3323 148.7328 178.064 202.8258033 224.7105 244.5711 262.908 280.0447 296.204 311.5475];
》y=[5 10 15 20 25 30 35 40 45 50];
2、啟動曲線擬合工具箱 》cftool
3、進入曲線擬合工具箱界面「Curve Fitting tool」 (1)點擊「Data」按鈕,彈出「Data」窗口;
(2)利用X data和Y data的下拉菜單讀入數據x,y,可修改數據集名「Data set name」,然後點擊「Create data set」按鈕,退出「Data」窗口,返回工具箱界面,這時會自動畫出數據集的曲線圖;
(3)點擊「Fitting」按鈕,彈出「Fitting」窗口;
(4)點擊「New fit」按鈕,可修改擬合項目名稱「Fit name」,通過「Data set」下拉菜單選擇數據集,然後通過下拉菜單「Type of fit」選擇擬合曲線的類型,工具箱提供的擬合類型有:  Custom Equations:用戶自定義的函數類型
 Exponential:指數逼近,有2種類型, a*exp(b*x) 、 a*exp(b*x) + c*exp(d*x)  Fourier:傅立葉逼近,有7種類型,基礎型是 a0 + a1*cos(x*w) + b1*sin(x*w)  Gaussian:高斯逼近,有8種類型,基礎型是 a1*exp(-((x-b1)/c1)^2)
 Interpolant:插值逼近,有4種類型,linear、nearest neighbor、cubic spline、shape-preserving
 Polynomial:多形式逼近,有9種類型,linear ~、quadratic ~、cubic ~、4-9th degree ~
 Power:冪逼近,有2種類型,a*x^b 、a*x^b + c
 Rational:有理數逼近,分子、分母共有的類型是linear ~、quadratic ~、cubic ~、4-5th degree ~;此外,分子還包括constant型
 Smoothing Spline:平滑逼近(翻譯的不大恰當,不好意思)
 Sum of Sin Functions:正弦曲線逼近,有8種類型,基礎型是 a1*sin(b1*x + c1)  Weibull:只有一種,a*b*x^(b-1)*exp(-a*x^b)
選擇好所需的擬合曲線類型及其子類型,並進行相關設置:
——如果是非自定義的類型,根據實際需要點擊「Fit options」按鈕,設置擬合演算法、修改待估計參數的上下限等參數;
——如果選Custom Equations,點擊「New」按鈕,彈出自定義函數等式窗口,有「Linear Equations線性等式」和「General Equations構造等式」兩種標簽。
在本例中選Custom Equations,點擊「New」按鈕,選擇「General Equations」標簽,輸入函數類型y=a*x*x + b*x,設置參數a、b的上下限,然後點擊OK。
(5)類型設置完成後,點擊「Apply」按鈕,就可以在Results框中得到擬合結果,如下例: general model: f(x) = a*x*x+b*x
Coefficients (with 95% confidence bounds): a = 0.009194 (0.009019, 0.00937) b = 1.78e-011 (fixed at bound)
Goodness of fit: SSE: 6.146 R-square: 0.997
Adjusted R-square: 0.997 RMSE: 0.8263
同時,也會在工具箱窗口中顯示擬合曲線。
這樣,就完成一次曲線擬合啦,十分方便快捷。當然,如果你覺得擬合效果不好,還可以在「Fitting」窗口點擊「New fit」按鈕,按照步驟(4)~(5)進行一次新的擬合。
不過,需要注意的是,cftool 工具箱只能進行單個變數的曲線擬合,即待擬合的公式中,變數只能有一個。對於混合型的曲線,例如 y = a*x + b/x ,工具箱的擬合效果並不好。下一篇文章我介紹幫同學做的一個非線性函數的曲線擬合。

9. CAD樣條曲線的繪制方法

1.樣條曲線命令只有1個選項: 對象

閱讀全文

與樣條曲線擬合演算法相關的資料

熱點內容
凈化車間門演算法 瀏覽:934
安卓怎麼搞jpg 瀏覽:544
如來佛祖命令雷神去下界 瀏覽:854
新電腦管家下載好怎麼解壓 瀏覽:530
php獲取介面數據 瀏覽:765
最後的命令 瀏覽:921
如何添加手機app桌面快捷圖標 瀏覽:427
ui設計師與程序員 瀏覽:417
壽司pdf 瀏覽:828
pythonbg是什麼 瀏覽:248
c數值演算法程序大全 瀏覽:785
android整點報時 瀏覽:221
稀土pdf 瀏覽:536
單片機電子鎖 瀏覽:596
通達信機智資金流指標公式源碼 瀏覽:216
php安裝xsl擴展 瀏覽:842
python如何使用help 瀏覽:367
上汽榮威app在哪裡查詢 瀏覽:903
冰櫃壓縮機溫度108 瀏覽:720
阿里雲郵smtp伺服器地址 瀏覽:254