[數學建模]差值算法及代碼

建模算法整理:文章主要介紹了 差值算法。
參考學習資料:清風數學建模
其他資源:2016到2020美賽o獎論文=== 姜啓源 司守奎電子書===論文模板 ====算法代碼
如果需要可私信或者評論


1 插值算法的作用

      建模中,我們需要根據已知的函數點進行數據、模型的處理和分析,而有的時候現有的數據是極少的,不足以支撐分析的進行,這時就需要使用一些數學的方法,“模擬產生”一些新的但又比較靠譜的值來滿足需求,這就是插值的作用。

2 插值和擬合區別

      插值算法中,所得的多項式f(x)要經過所有的樣本點。但是如果樣本點太多,那麼這個多項式次數過多,會造成龍格現象。
      儘管我們可以選擇分段的方法避免這種現象,但是更多時候我們更傾向於得到一個確定的曲線,儘管這個曲線不能過每一個樣本店,但只要保證足夠小即可,這就是擬合的思想

3 插值和擬合的選取

      當數據量不夠,需要補充,且認定已有數據可信時,通常利用函數插值方法。
      數據量多,不要求曲線經過每個點,同時要求多項式不要過於複雜我們選擇擬合。

4 分段三次埃爾米特插值

4.1 代碼實例

% 分段三次埃爾米特插值
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-')

4.2 結果顯示

在這裏插入圖片描述

4.3 plot用法

% plot函數用法:
% plot(x1,y1,x2,y2) 
% 線方式: - 實線 :點線 -. 虛點線 - - 波折線 
% 點方式: . 圓點  +加號  * 星號  x x形  o 小圓
% 顏色: y黃; r紅; g綠; b藍; w白; k黑; m紫; c青

5 分段三次埃爾米特插值和三次樣條插值的區別

5.1 代碼實例

% 三次樣條插值和分段三次埃爾米特插值的對比
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爲標籤 'Location','SouthEast'是爲了設定顯示位置

5.2 結果展示

在這裏插入圖片描述

5.3 原因解釋

      三次樣條插值也是分段三次多項式插值,只需要被插值函數在插值節點處的函數值,不需要知道被插值函數在插值節點處的導數值,數據要求低,光滑性好,可以達到二階導數連續。
       三次分段Hermite插值是分段三次多項式插值,需要同時知道被插值函數在插值節點處的函數值和導數值,數據要求高,可以達到導數連續,光滑性不如樣條插值的好.

6 n維數據差值(linear cubic spline)

6.1 代碼實例

%格式 p = interpn(x1,x2,...,xn, y, new_x1,new_x2,...,new_xn, method)
% method是要插值的方法
%‘linear’:線性插值(默認算法);
%‘cubic’:三次插值;
%‘spline’:三次樣條插值法;(最爲精準) ‘nearest’:最鄰近插值算法。
% n維數據的插值

x = -pi:pi; y = sin(x); 
new_x = -pi:0.1:pi;
p = interpn (x, y, new_x, 'spline');
% 等價於 p = spline(x, y, new_x);
plot(x, y, 'o', new_x, p, 'r-')

6.2 結果顯示

在這裏插入圖片描述

總結

  文章純屬建模學習整理。
1、2016到2020美賽o獎論文
2、姜啓源 司守奎電子書
3、論文模板
4、算法代碼
如有需要上述資源可私信評論
最後希望給文章點個贊,整理不易!!!
最後希望給文章點個贊,整理不易!!!
最後希望給文章點個贊,整理不易!!!







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章