數學建模中常見的數據處理方法(上)!內附超大福利,一招搞定數據處理難題!

2021-02-20 數模樂園

數據處理是建模競賽每個賽題都繞不開的一關,所謂得數據者者的天下,所有不論是從數據的收集、挖掘、分析還是處理在建模過程中都十分重要。數學建模中常見的數據處理方法有:

曲線插值與擬合

數值微分與積分

微分方程數值解

優化問題 

回歸分析

判別分析


對表格給出的函數,求出沒有給出的函數值。

在實際工作中,經常會遇到插值問題。下表是待加工零件下輪廓線的一組數據,現需要得到x坐標每改變0.1時所對應的y的坐標。

下面是關於插值的兩條命令(專門用來解決這類問題):

y=interp1(x0,y0,x,’method』) 分段線性插值

y=spline(x0,y0,x)     三次樣條插值

x0,y0是已知的節點坐標,是同維向量。

y對應於x處的插值。y與x是同維向量。

method可選』nearest』(最近鄰插值),』linear』(線性插值),’spline』(三次樣條插值),』cubic』(三次多項式插值)

解決上述問題,我們可分兩步:

用原始數據繪圖作為選用插值方法的參考。

確定插值方法進行插值計算。

x0=[0,3,5,7,9,11,12,13,14,15]';

y0=[0,1.2,1.7,2.0,2.1,2.0,1.8,1.2,1.0,1.6]'

plot(x0,y0)           %完成第一步工作

x=0:0.1:15;

y=interp1(x0,y0,x');    %用分段線性插值完成第二步工作

plot(x,y)

y=spline(x0,y0,x');     

plot(x,y)       %用三次樣條插值完成第二步工作

MATLAB中二維插值的命令是:

z=interp2(x0,y0,z0,x,y,'meth')

在一個長為5個單位,寬為3個單位的金屬薄片上測得15個點的溫度值,試求出此薄片的溫度分布,並繪出等溫線圖。(數據如下表)


二維插值(px_lc21.m)

temps=[82,81,80,82,84;79,63,61,65,87;84,84,82,85,86];

mesh(temps)  %根據原始數據繪出溫度分布圖,可看到此圖的粗造度。

%下面開始進行二維函數的三階插值。

 width=1:5; depth=1:3; di=1:0.2:3; wi=1:0.2:5;

 [WI,DI]=meshgrid(wi,di); %增加了節點數目

 ZI=interp2(width,depth,temps,WI,DI,'cubic'); %  對數據(width,depth,temps)進行三階插值擬合。

surfc(WI,DI,ZI)

contour(WI,DI,ZI)

假設一函數g(x)是以表格形式給出的,現要求一函數f(x),使f(x)在某一準則下與表格函數(數據)最為接近。

由於與插值的提法不同,所以在數學上理論根據不同,解決問題的方法也不同。

此處,我們總假設f(x)是多項式。

【問題】

彈簧在力F的作用下伸長x釐米。F和x在一定的範圍內服從虎克定律。試根據下列數據確定彈性係數k,並給出不服從虎克定律時的近似公式。

【解題思路】

可以用一階多項式擬合求出k,以及近似公式。

在MATLAB中,用以下命令擬合多項式。

polyfit(x0,y0,n)

一般,也需先觀察原始數據的圖像,然後再確定擬和成什麼曲線。

對於上述問題,可鍵入以下的命令:

x=[1,2,4,7,9,12,13,15,17]';  

F=[1.5,3.9,6.6,11.7,15.6,18.8,19.6,20.6,21.1]';

 plot(x,F,'.')

從圖像上我們發現:前5個數據應與直線擬合,後5個數據應與二次曲線擬合。於是鍵入 : 

  a=polyfit(x(1:5),F(1:5),1);  

  a=polyfit(x(5:9),F(5:9),2)

【舉例】

現要根據瑞士地圖計算其國土面積。於是對地圖作如下的測量:以西東方向為橫軸,以南北方向為縱軸。(選適當的點為原點)將國土最西到最東邊界在x軸上的區間劃取足夠多的分點xi,在每個分點處可測出南北邊界點的對應坐標y1 ,y2。用這樣的方法得到下表:

根據地圖比例知18mm相當於40km,試由上表計算瑞士國土的近似面積。(精確值為41288km2)。


【解題思路】

數據實際上表示了兩條曲線,實際上我們要求由兩曲線所圍成的圖形的面積。

解此問題的方法是數值積分的方法。具體解時我們遇到兩個問題:

❓數據如何輸入;

❓沒有現成的命令可用。

對於第一個問題,我們可把數據拷貝成M文件(或純文本文件)。

然後,利用數據繪製平面圖形。鍵入 

load mianji.txt

A=mianji';

plot(A(:,1),A(:,2),'r',A(:,1),A(:,3),'g')

接下來可以計算面積。鍵入:

a1=trapz(A(:,1)*40/18,A(:,2)*40/18);

a2=trapz(A(:,1)*40/18,A(:,3)*40/18);

d=a2-a1

d = 4.2414e+004

至此,問題得到了解決。

想得到更理想的結果,可以自己設計解決問題的方法。(可以編寫辛普森數值計算公式的程序,或用擬合的方法求出被積函數,再利用MATLAB的命令quad,quad8)

已知20世紀美國人口統計數據如下,根據數據計算人口增長率。(其實還可以對於後十年人口進行預測)

【解題思路】

設人口是時間的函數x(t).於是人口的增長率就是x(t)對t的導數.如果計算出人口的相關變化率。那麼人口增長滿足  ,它在初始條件x(0)=x0下的解為 。

解:此問題的特點是以離散變量給出函數x(t),所以就要用差分來表示函數x(t)的導數.

常用後一個公式。(因為,它實際上是用二次插值函數來代替曲線x(t))即常用三點公式來代替函數在各分點的導數值:

MATLAB用命令diff按兩點公式計算差分;此題自編程序用三點公式計算相關變化率。編程如下(diff3.m):

for i=1:length(x)

    if i==1

        r(1)=(-3*x(1)+4*x(1+1)-x(1+2))/(20*x(1));

    elseif i~=length(x)

        r(i)=(x(i+1)-x(i-1))/(20*x(i));

    else

r(length(x))=(x(length(x)-2)-4*x(length(x)-1)+3*x(length(x)))/(20*x(length(x)));

    end

end

r=r;

保存為diff3.m文件聽候調用.再在命令窗內鍵入

X=[1900,1910,1920,1930,1940,1950,1960,1970,1980,1990];

x=[76.0, 92.0, 106.5, 123.2, 131.7, 150.7, 179.3, 204.0, 226.5, 251.4];

diff3;

由於r以離散數據給出,所以要用數值積分計算.鍵入

x(1,1)*exp(trapz(X(1,1:9),r(1:9)))

數值積分命令:trapz(x),trapz(x,y),quad(『fun』,a,b)。

在初始角度不大時,問題可以得到很好地解決,但如果初始角較大,此方程無法求出解析解.現問題是當初始角為100和300時,求出其解,畫出解的圖形進行比較。

解:若θ0較小,則原方程可用來近似.其解析解為,若不用線性方程來近似,那麼有兩個模型:

取g=9.8,l=25,100=0.1745,300=0.5236.

用MATLAB求這兩個模型的數值解,先要作如下的處理:令x1=θ,x2=θ』,則模型變為

再編函數文件(danbai.m)

function xdot=danbai(t,x)

xdot=zeros(2,1);

xdot(1)=x(2);xdot(2)=-9.8/25*sin(x(1));

在命令窗口鍵入()

[t,x]=ode45(『danbai』,[0:0.1:20],[0.1745,0]);

[t,y]=ode45(『danbai』,[0:0.1:20],[0.5236,0]);

plot(t,x(:,1),』r』,t,y(:,1),』k』);

曲線插值與擬合、數值微分與積分、微分方程數值解是的數學建模中常用的數字處理方法,今天我們的學習就到這裡,下次我們繼續學習優化問題、回歸分析及判別分析等數據處理方法。

大大大大大大福利來襲!針對很多同學對於數據處理的煩惱,數樂君特設置了數據處理方法以及關於數據處理的MATLAB實現方法課程。原價299元,現限時免費!在美賽即將到來之際,回饋給各位鐵粉模友

該課程可反覆觀看學習且支持課件下載。

額外福利!!!

學就學到精通,除了上述課程外,還有六本珍貴書籍免費分享給各位模友:

3.《Learning to Programm with matlab》

4.工程與科學數值方法的MATLAB實現(第2版)

5.Engineering Computations and Modeling in MATLAB Simulink 2011

模友們可能已經發現:現在公眾號推送文章的順序,已經不會按時間排列了。這種變化,可能會讓各位模友錯過我們每天的推送。

所以,如果你還想像往常一樣,聚焦數模樂園,就需要將「數模樂園」標為星標公眾號,同時在閱讀完文章後,別忘了給一個「在看」哦。

(1)點擊頁面最上方「數模樂園」,進入公眾號主頁

(2)點擊右上角的小點點,在彈出頁面點擊「設為星標」,就可以啦。

相關焦點

  • Python數學建模技巧之pandas數據處理
    倘若要尋找一個在建模競賽中能夠像MATLAB那樣很方便求解各類的建模算法的程式語言,Python無疑是不二之選。Python眾多的第三方庫提供了這種可能。最常見的庫有進行矩陣運算的Numpy、進行數據處理的pandas、進行科學計算的Scipy、進行圖形繪製及科學可視化的matplotlib、進行符號計算的Sympy以及方便進行機器學習任務的Sklearn。
  • 數據時代幾何處理與建模的研究進展與趨勢
    大量數據的出現,包括單個模型和場景模型,使得內容的產生變得相對容易,而另一方面,大量數據也給傳統數字幾何處理的算法和技術帶來了新的機遇和挑戰。傳統的幾何處理算法在海量數據面前的瓶頸和短板也慢慢呈現,如何快速有效且魯棒的處理海量幾何數據,從中提取我們需要的信息,比如精確建模,快速成型和瀏覽,高效智能的變形,語義分析,和組織管理到交互,這些問題也慢慢影響著傳統幾何處理方法的發展。
  • Excel重複數據的兩種常見處理方法~~
    我們先看看查看重複數據的3種方法: 排序法這個只是把相同的數據可以排到一起,但是不能直接把重複數據找出來,由於過程太簡單,自行琢磨就可以了。條件格式法雖好,可是不能應對多列數據裡面有重複的情況,比如:我們可以對學號姓名成績均有重複數據的表進行條件格式法,就會發現如下情況:應對的方法
  • 高考數學難題之大數據處理基本方法及重心公式推導
    高考當中,大部分學生對圓錐曲線第二問或束手無策,或半途放棄,基本很難做滿分,原因很簡單,有的思路找不著,更多的,是數據太多,越處理越混亂,加上心理壓力太大,直接放棄。針對這樣的問題,小編今天做了一道高考題,是2019年浙江省理科數學第21題,通過它,來分享下大數據處理的一點小方法。
  • 常見Python處理金融數據的代碼庫及數據源(附源碼)
    #量化交易#以下是處理金融相關數據的常用包,大家可以根據需求查看相關API:Matplotlib——應用於可視化繪圖Bokeh——應用於Web交互式可視化繪圖WxPython——應用於創建本地GUI界面Urllib3——應用於HTTP客戶端網絡請求Numpy——應用於科學計算Pandas——應用於金融數據分析Statsmodels——應用於統計模型和分析TA-Lib——應用於金融技術指標計算Tushare——應用於財經數據的獲取
  • 非均衡數據處理簡易攻略
    同理,處理非均衡數據並建模的方法也有很多種。本文將為您介紹處理非均衡數據集的簡易攻略。例如,在三分類問題中,類別甲、乙、丙分別佔到樣本的95%,4%,1%的情況;現實生活中欺詐識別、故障探測中所面對的數據集大多是非均衡數據集。直接使用非均衡數據集建模會給模型的參數估計和後續使用帶來不良後果,譬如,準確率很高而召回率很低,或者模型的穩定性非常差,等等。選用合適的方法處理非均衡數據將會幫您得到穩健的結果。
  • 淺談數據分析和數據建模
    但是弊端是僅僅對自己部門的業務數據了解,分析只是局限獨立的業務單元之內,在數據獲取的效率上,數據維度和數據視角方面缺乏全局觀,數據的商業視野不大,對公司整體業務的推動發展有限。業務部門的數據分析團隊缺少數據技術能力,無法利用最新的大數據計算和分析技術,來實現數據分析和建模。數據分析和計算依賴於科技部門,效率較低,無法打通各個環節和實現效率和收益最優。
  • 快速找出表格中的重複數據,Excel一招搞定!
    如果你對 Excel 中的基本功能不熟悉,就很可能碰到和這位妹子一樣的難題:不同的表格,其核對方法也不盡相同。遇到上面這種情況該怎麼辦呢?讓 King 老師來教大家一招搞定吧!關於數據核對的方法,之前我們介紹過,可以用高級篩選法實現快速標記相同和不同的數據:「太快了,3秒完成Excel兩表比對!」
  • 俄用4D模型處理海岸遙感數據
    俄羅斯頓河國立技術大學(DSTU)正在建立一套基於亞速海遙感數據,分析海洋和沿海生態系統狀況的數學模型和方法。該項研究結果將有助於開發一種技術來監測不良和危險現象,例如石油汙染、極端增減水現象、富營養化(藻類大量繁殖),並在一個全新的水平預測水生態系統的發展。
  • 如何使用python完成數學建模常見算法
    在數學建模中主流的程式語言是MATLAB,但隨著python/R中數學軟體包的不斷完善,熟悉這兩種程式語言的同學也可以快速數學建模的編程環節。後面我們將介紹幾種常見數學建模算法的python實現,旨在展示python在本領域的強大威力。
  • MATLAB數據擬合工具在數學建模中的簡單應用
    基於這點,描述物價水平的數學模型——經驗公式也應該具有周期性。我們不妨假設描述物價水平數學模型是一個周期函數,並且可以轉化為傅立葉級數。為了方便處理,我們再做一次抽象處理,將時間抽象為整數N,其中0<=N<=36。那麼如何使用N來表示某一個月呢?又如何使用N來表示某一個月裡的第幾次調查呢?
  • 【線上】MATLAB數據分析、圖形圖像處理、機器學習與深度學習在線培訓班
    、數據處理與機器學習、圖像處理、信號處理、計算金融學、計算生物學以及非線性動態系統的建模和仿真等諸多強大功能集成在一個易於使用的視窗環境中,為科學研究、工程設計以及必須進行有效數值計算的眾多科學領域提供了一種全面的解決方案。
  • 強大的matlab數據科學擬合庫cftool——直接導入數據進行擬合
    對於使用過matlab做數據處理的人來說,擬合是將平面上一系列的點,用一條光滑的曲線連接起來。因為這條曲線有無數種可能,從而有各種擬合方法。擬合的曲線一般可以用函數表示,根據這個函數的不同有不同的擬合名字。
  • 大數據分析處理方法有哪些
    具體的大數據處理方法確實有很多,根據長時間的實踐,總結了一個普遍適用的大數據處理流程,並且這個流程應該能夠對大家理順大數據的處理有所幫助。整個處理流程可以概括為四步,分別是採集、導入和預處理、統計和分析,最後是數據挖掘。
  • 數據處理技巧 | 一次性匯總了30+字符串常用處理方法
    今天這篇推文我們就匯總下Python中常用的字符串處理小技巧,字符串在Python數據處理中是非常常見且極易忽略的常用數據類型,且Python本身也提供大量運算符、函數和方法來處理字符串。,用於判斷某個字符是否在指定的字符串中,進而進行下一步的操作,這個和pandas數據篩選結合使用,可以快速選擇出對應的數據。
  • 常用SPSS數據處理方法,你都會嗎?
    數據處理是在統計和分析數據時,第一步要做的。尤其是當面對大量數據時,數據處理是一個重要的過程,可以達到提高處理效率及精度的目的。如果有無效樣本則需要進行處理,然後再進行分析。另外如果數據中有異常值也需要進行處理後再進行分析。無效樣本會干擾分析研究,扭曲數據結論等,因而在分析前先對無效樣本進行標識顯示尤其必要。如果數據來源為問卷,則很可能出現無效樣本,因為填寫問卷的樣本是否真實填寫無從判定;如果資料庫下載或者使用二手數據等,也可能出現大量缺失數據等無效樣本。
  • 數學建模競賽前必須熟練掌握的十個算法
    數學建模比賽是本科生和研究生階段最重要的比賽之一,包括全國大學生數學建模競賽(俗稱「國賽」)和美國大學生數學建模競賽(俗稱「美賽」)。在這些比賽中取得好成績,不僅有助於保研、有助於找工作,更重要的是形成科學的思維模式。下面列舉了十大算法,在數學建模競賽中有著無比廣泛而重要的應用。
  • 數據分析——數學建模
    數據分析——數學建模(通訊員:覃馨瑩、彭喜鳳)2020年9月4日,湘潭大學數學與計算科學學院疫情防控暑期社會實踐團的「三下鄉」調研活動正在進行中。團隊成員根據收集的數據建立數學模型預測當前餐飲企業經濟回暖時間。實踐團收集數據分為三個階段:疫情未開始(2019年9月-12月),疫情嚴重階段(2020年1月-4月),疫情平穩階段(2020年5月-8月)。
  • 三個思維方法,輕鬆搞定數據運營難題
    可見,數據分析思維的重要性,未來具備產品思維和數據分析能力的運營,才能獲得更多的空間,創造更高價值。身邊很多朋友都苦惱如何提高自己數據分析的能力,說實話,EXCEL數據處理技巧,可視化圖表,這些工具都是容易學習上手的,但是難點在拋出一個問題,如何通過數據找到解決這個問題的方法,關鍵就在數據分析思維。
  • 群落分析中常見的數據轉化方法
    生態學中常見的數據轉化方法、原理、公式等描述可參閱Legendre和Legendre(1998)「Numerical Ecology」,33-47頁的內容。如果我們結論是根據轉換後的數據得出的,那麼必須要在結論中(圖注、表注部分等,或者在方法描述部分)清楚地說明這一點。還有重要的一點肯定就是要注意所得的結論是否合理了(是否具有生態學意義,還是僅僅為數學計算上的偶然性),假設你得到了變量「太陽輻射和風速的3次方存在相關性」類似的結論,解釋起來就要小心。 這是一個非常有意思的圖,向我們展示了幾種常見的數據轉換前後的變化。