建模5 MATLAB進行數學計算的常用函式

2021-10-02 18:30:55 字數 4224 閱讀 6190

微分方程

圖與網路

插值就是求取函式ln(

x)

l_n(x)

ln​(x)

,使得ln(

xi)=

yi

l_n(x_i)=y_i

ln​(xi

​)=y

i​。多項式插值主要包括拉格朗日插值多項式、牛頓插值、埃爾公尺特插值,以及有分段線性插值、分段埃爾公尺特插值、三次樣條插值(在每乙個小區間為3次多項式)等。

matlab中一維插值函式如下:

y=interp1(x0,y0,x,『method』)

其中x0和y0為插值節點橫縱座標列表,x為待插值節點的橫座標,method可以為『nearest』 (最近項插值)、『linear』 (線性插值)、『spline』 (三次樣條插值)

逼近主要有最佳一致逼近、最佳平方逼近,用乙個多項式函式去近似乙個現有的函式,使誤差最小。

擬合是用乙個函式去近似幾個已知點,使誤差最小。插值可看成一種特殊的曲線擬合問題----過擬合。函式polyfit()用於多項式擬合,如下例。

x0=

[1990

1991

1992

1993

1994

1995

1996];

y0=[

70122

144152

174196

202];a=

polyfit

(x0,y0,1)

y97=

polyval

(a,1997

)y98=

polyval

(a,1998

)

參考:

比如在乙個數學問題中,物體在海水中下墜,設位移為s,受到重力、浮力和海水阻力的作用,其中,阻力和速度成正比。可利用matlab如下求解:

syms m v rho g k %質量、體積、水密度、重力加速度、阻力係數

s=dsolve

('m*d2s-m*g+rho*g*v+k*ds'

,'s(0)=0,ds(0)=0');

s=subs

(s,,);

%替換變數成為數值

s=vpa

(s,10

)%引數保留十位有效數字,得到位移函式

解非剛性常微分方程:

比如,求解y′=

f(x,

y)=−

2y+2

x2+2

xy'=f(x,y)=-2y+2x^2+2x

y′=f(x

,y)=

−2y+

2x2+

2x,其中x

xx範圍[0,0.5],初值y(0

)=

1y(0)=1

y(0)=1

f=@(x,y)-2

*y+2

*x^2+2

*x;[x,y]

=ode45

(f,[0,

0.5],1

)%得到區間內一些等距節點的座標

常微分方程的通解:

比如,求解x2+

y+(x

−2y)

y′=0

x^2 + y + (x − 2y) y'= 0

x2+y+(

x−2y

)y′=

0,自變數x

xx,沒有初值條件。

syms x y

diff_equ=

'x^2+y+(x-2*y)*dy=0'

;dsolve

(diff_equ,

'x')

ans =

x/2+

((4*x^3)

/3+ x^

2+ c1)^(

1/2)

/2x/2-(

(4*x^3)/

3+ x^

2+ c1)^(

1/2)

/2

有向圖

w =

[.41

.99.51

.32.15

.45.38

.32.36

.29.21];

dg =

sparse([

6122

3445

561]

,[26

3541

6343

5],w)%構造有向圖

h =view

(biograph

(dg,

,'showweights'

,'on'))

%視覺化

[dist,path,pred]

=graphshortestpath

(dg,1,

6)%1到6的最短路徑,輸出距離和路徑

%顯示路徑

set(h.

nodes

(path)

,'color',[

10.4

0.4]

)edges =

getedgesbynodeid

(h,get

(h.nodes

(path)

,'id'))

;set

(edges,

'linecolor',[

100]

)set

(edges,

'linewidth'

,1.5

)

無向圖

w =

[.41

.99.51

.32.15

.45.38

.32.36

.29.21];

dg =

sparse([

6122

3445

561]

,[26

3541

6343

5],w);

ug =

tril

(dg+dg')

h =view

(biograph

(ug,

,'showarrows'

,'off'

,'showweights'

,'on'))

[dist,path,pred]

=graphshortestpath

(ug,1,

6,'directed'

,false

)set

(h.nodes

(path)

,'color',[

10.4

0.4]

)fowedges =

getedgesbynodeid

(h,get

(h.nodes

(path)

,'id'))

;revedges =

getedgesbynodeid

(h,get

(h.nodes

(fliplr

(path)),

'id'))

;edges =

[fowedges;revedges]

;set

(edges,

'linecolor',[

100]

)set

(edges,

'linewidth'

,1.5

)

最大流問題即求出乙個可行流量使得從單源點到單匯點的流網路中流量最大。

matlab例程:

cm =

sparse([

1122

3345

],[2

3454

566]

,[23

3111

23],

6,6)

;%容量網路

view

(biograph

(cm,

,'showweights'

,'on'))

%顯示圖

[m,f,k]

=graphmaxflow

(cm,1,

6)%返回最大流,流量網路

view

(biograph

(f,,

'showweights'

,'on'))

%顯示

Matlab與數學建模

數學建模中,時常用到matlab畫圖,而繪製雙縱軸圖形有一定難度,在此提供一種雙縱軸繪圖函式 plotyy。具體 如下 t 0 0.02 pi 7 x cos t y exp t ax,ha,hb plotyy t,x,t,y ax 153.0322 156,0292 ha 155.1194 hb ...

數學建模(MATLAB入門)

meshgrid 向量轉化為矩陣 x 3 1 3 y 1 1 5 x,y meshgrid x,y clc 清空命令列視窗螢幕 clear 清空資料 surf函式 繪製可以得到的是著色的三維曲面。shading函式 函式說明 是陰影函式控制曲面和圖形物件的顏色著色,即用來處理色彩效果的,包括以下三種...

數學建模與MATLAB 6

專欄系列文章,想學習的朋友可以先看看前面的文章。矩陣的建立有多種方法,最簡單的可以通過在命令列視窗直接輸入乙個矩陣。這適合建立比較小的矩陣,把矩陣元素放進方括號中,每行的元素用逗號或者空格進行分割,每列使用分號進行分割。此外還可以通過語句或函式來生成矩陣,例如函式eye 用於生成單位矩陣。另外,還可...