Matlab數值分析例項 三次樣條插值

2021-10-07 02:44:34 字數 2159 閱讀 8929

湖水在夏天會出現分層現象,接近湖面溫度較高,越往下溫度變低。這種上熱下冷的現象影響了水的對流和混合過程,使得下層水域缺氧,導致水生魚類的死亡。如果把水溫t看成深度x的函式t(x),有某個湖的觀測資料如下:

t ( °c )

22.8

22.8

22.8

20.6

13.9

11.7

11.1

11.1

x ( m )

02.3

4.99.1

13.7

18.3

22.9

27.2

環境工程師希望:

1) 用三次樣條插值(取合適的邊界條件)求出t(x),並繪出其圖形。

2) 求在什麼深度處dt/dx的絕對值達到最大。

題目要求使用三次樣條插值。三次樣條插值推導過程過於繁瑣,在此不贅述,只簡要提及其作用:

三次樣條插值是指在兩兩資料點之間採用不超過三次的多項式函式將其連線,並且要求該函式二階以下均可導的方法。

博主查閱了一些資料後,決定利用matlab內建函式y=spline(x0,y0,x)實現(1)小問,其中y、x為變數,x0、y0為資料向量。取函式預設邊界條件(非扭結邊界條件)。

對於(2)小問,只需對(1)問求得的三次樣條函式的導函式取步長遍歷並記錄座標即可。

clear all;clc

%匯入資料向量

x0=[

02.3

4.99.1

13.7

18.3

22.9

27.2];

y0=[

22.8

22.8

22.8

20.6

13.9

11.7

11.1

11.1];

x=0:0.1

:27.2

;%取步長為0.1

y1=interp1

(x0,y0,x)

;%分段線性插值

y2=spline

(x0,y0,x)

;%三次樣條插值

pp1=

csape

(x0,y0)

;y3=

ppval

(pp1,x)

;pp2=

csape

(x0,y0,

'second');

y4=ppval

(pp2,x)

;[x',y1'

,y2',y3'

,y4']

subplot(1

,2,1

)plot

(x0,y0,

'+',x,y1)

title

('piecewise linear'

)subplot(1

,2,2

)plot

(x0,y0,

'+',x,y2)

title

('spline1'

)dx=

diff

(x);

dy=diff

(y2)

;dy_dx=dy.

/dx;

%尋找dy/dx的絕對值的最大值

n=length

(dy_dx)

max=

0for i=1:n

ifabs

(dy_dx

(i))

>=max

max=

abs(

dy_dx

(i))

;absmax_position=i

endend

disp

('dt/dx的絕對值的最大值為'

)max

disp

('最大值對應x座標為'

)0.1

*absmax_position

pp=spline

(x0,y0)

在(1)中,博主還額外畫了一條分段線性插值的曲線對比,結果如下:

在(2)中,博主取步長0.1得到導函式的絕對值的最大值在11.4m處取得。

數值分析第三次大作業

對二維陣列,做f關於t,u的分片二次插值,根據插值節點,形成16個二元二次函式。對每一組xi 0.08 i yj 0.5 0.05 j i 0 1,10,j 0,1 20 帶入方程組,用迭代法求解出相對應的t,u,根據t,u的取值範圍,選擇合適的二元二次插值函式,求出f xi,y j 對於k 0,1...

TCP 三次握手分析

tcp transmission control protocol 傳輸控制協議 tcp是主機對主機層的傳輸控制協議,提供可靠的連線服務,採用三次握手確認建立乙個連線 位碼即tcp標誌位,有6種標示 syn synchronous建立聯機 ack acknowledgement 確認 psh pus...

TCP三次握手分析

tcp transmission control protocol 傳輸控制協議 tcp是主機對主機層的傳輸控制協議,提供可靠的連線服務,採用三次握手確認建立乙個連線 位碼即tcp標誌位,有6種標示 syn synchronous建立聯機 ack acknowledgement 確認 psh pus...