插值指的是運用一些數學的方法,「模擬產生」一些新的但又比較可靠的資料,補足題目中的空缺資料;
插值也可以用來做**問題,而且比灰色**可靠得多,數學背景也更豐富;
埃爾公尺特(hermite)插值不但要求在節點上的函式值相等,而且還要求對應的導數值也相等,甚至高階導數也相等;但一般不直接用hermite插值,因為多項式次數較高,存在龍格現象;比賽中多使用分段三次hermite插值(pchip),matlab參考**及結果如下:
x = -pi:pi; y = sin(x);
new_x = -pi:0.1:pi;
p = pchip(x,y,new_x);
plot(x, y, 'o', new_x, p, 'r-')
數學分析略,到時候真要用就去書上找吧,樣條插值的特點在於插值函式在區間上二階連續可微,所以畫出的曲線會更加光滑,與三次hermite插值演算法的比較如下:
% 三次樣條插值和分段三次埃爾公尺特插值的對比
x = -pi:pi;
y = sin(x);
new_x = -pi:0.1:pi;
p1 = pchip(x,y,new_x); %分段三次埃爾公尺特插值
p2 = spline(x,y,new_x); %三次樣條插值
figure(2);
plot(x,y,'o',new_x,p1,'r-',new_x,p2,'b-')
legend('樣本點','三次埃爾公尺特插值','三次樣條插值','location','southeast') %標註顯示在東南方向
% 說明:
% legend(string1,string2,string3, …)
% 分別將字串1、字串2、字串3……標註到圖中,每個字串對應的圖示為畫圖時的圖示。
% 『location』用來指定標註顯示的位置
雖然這麼說,但是其實**演算法比如擬合**更適合這類問題...
population=[133126,133770,134413,135069,135738,136427,137122,137866,138639, 139538];
year = 2009:2018;
p1 = pchip(year, population, 2019:2021) %分段三次埃爾公尺特插值**
p2 = spline(year, population, 2019:2021) %三次樣條插值**
figure(4);
plot(year, population,'o',2019:2021,p1,'r*-',2019:2021,p2,'bx-')
legend('樣本點','三次埃爾公尺特插值**','三次樣條插值**','location','southeast')
美賽打完了233,估計還是只能拿個s獎,大學裡的數模生涯正式結束了,就挺尷尬的,以後應該也不會更新數模的部落格了,再見啦本文演算法思想參考源於清風建模,特此註明
從零開始的數學建模 (二)Topsis
1 確定指標型別並正向化 不同與上一講的層次分析法,這個模型中的資料必須是具體的,而不是人為給出的 指標有常見的四種型別 無論是哪種指標,首先都需要進行正向化 極小型指標正向化 對所有元素執行 max x 中間型指標正向化 x 為理想的中間值,計算 m max lbrace x i x rbrace...
插值演算法(數學建模學習)
本系列參考清風老師的數學建模課程 對於資料量少到不足以去分析問題,而必須生成一些合理的資料的情況要用到插值演算法。1 定義 設函式y f x y f x y f x 在區間 a,b a,b a,b 上有定義,且已知在點a x 0 b a x 0a x0 b上的值分別為 y0,y1.yny 0,y 1...
數學建模Day3 插值演算法
matlab 如下 三次樣條插值和分段三次埃爾公尺特插值的對比 x pi pi y sin x new x pi 0.1 pi p1 pchip x,y,new x 分段三次埃爾公尺特插值 p2 spline x,y,new x 三次樣條插值 plot new x,p1,r new x,p2,b l...