0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

關(guān)于MATLAB連續(xù)模型求解方法介紹和分析

MATLAB ? 來源:djl ? 作者:卓金武 ? 2019-09-16 11:41 ? 次閱讀

連續(xù)模型是指模型是連續(xù)函數(shù)的一類模型總稱,具體建模方法主要是微分方程建模。微分方程建模是數(shù)學(xué)建模的重要方法,因為許多實際問題的數(shù)學(xué)描述將導(dǎo)致求解微分方程的定解問題。把形形色色的實際問題化成微分方程的定解問題,大體上可以按以下幾步:

1.根據(jù)實際要求確定要研究的量(自變量、未知函數(shù)、必要的參數(shù)等)并確定坐標(biāo)系。

2.找出這些量所滿足的基本規(guī)律(物理的、幾何的、化學(xué)的或生物學(xué)的等等)。

3.運用這些規(guī)律列出方程和定解條件。

MATLAB 在微分模型建模過程中的主要作用是求解微分方程的解析解, 將微分方程轉(zhuǎn)化為一般的函數(shù)形式。 另外, 微分方程建模, 一定要做數(shù)值模擬, 即根據(jù)方程的表達(dá)形式, 給出變量間關(guān)系的圖形, 做數(shù)值模擬也需要用 MATLAB 來實現(xiàn)。

微分方程的形式多樣,微分方程的求解也是根據(jù)不同的形式采用不同的方法, 在建模比賽中, 常用的方法有三種:

1.用 dsolve 求解常見的微分方程解析解

2.用 ODE 家族的求解器求解數(shù)值解

3.使用專用的求解器求解

1.常規(guī)微分方程的求解

微分方程在 MATLAB 中固定的表達(dá)方式, 這些基本的表達(dá)方式如下表所示:

關(guān)于MATLAB連續(xù)模型求解方法介紹和分析

對于通常的微分方程, 一般需要先求解析解, 那么 dsolve 是首先考慮的求解器,因為dsolve 能夠求解解析解,其具體的用法如下:

[實例]求微分方程 xy'+y-e^x=0 在初始條件 y(1)=2e 下的特解,并畫出解函數(shù)的圖形.

求解本問題的 Matlab 程序為:

syms x y

y=dsolve('x*Dy+y-exp(x)=0','y(1)=2*exp(1)','x')

ezplot(y)

微分方程的特解為:y=1/x*exp(x)+1/x*exp (1) (Matlab格式),即 y=(e+e^x)/x ,此函數(shù)的圖形如圖 1:

關(guān)于MATLAB連續(xù)模型求解方法介紹和分析

圖1y關(guān)于x的函數(shù)圖象

2.ODE 家族求解器

如果微分方程的解析形式求解不出來, 那么退而求其次的辦法是求解數(shù)值解,那么這個時候就需要用 ODE 家族的求解器求解微分方程的數(shù)值解啦。

因為沒有一種算法可以有效地解決所有的 ODE 問題,為此,MATLAB 提供了多種求解器,對于不同的 ODE 問題,采用不同的 Solver。MATLAB 中常用的微分方程數(shù)值解的求解器及特點如下表所示。

關(guān)于MATLAB連續(xù)模型求解方法介紹和分析

要特別提醒的是:ode23、ode45 是極其常用的用來求解非剛性標(biāo)準(zhǔn)形式一階常微分方程(組)初值問題解的 Matlab 的常用程序,其中:

ode23 采用龍格-庫塔2 階算法,用3 階公式作誤差估計來調(diào)節(jié)步長,具有低等的精度.

ode45 則采用龍格-庫塔4 階算法,用5 階公式作誤差估計來調(diào)節(jié)步長,具有中等的精度.

[實例]導(dǎo)彈追蹤問題

設(shè)位于坐標(biāo)原點的甲艦向位于 x 軸上點 A(1, 0) 處的乙艦發(fā)射導(dǎo)彈,導(dǎo)彈頭始終對準(zhǔn)乙艦。如果乙艦以最大的速度v0(是常數(shù))沿平行于 y 軸的直線行駛,導(dǎo)彈的速度是 5*v0,求導(dǎo)彈運行的曲線方程,以及乙艦行駛多遠(yuǎn)時,導(dǎo)彈將它擊中?

記導(dǎo)彈的速度為 w,乙艦的速率恒為v0。設(shè)時刻 t乙艦的坐標(biāo)為 (X(t),Y(t)),導(dǎo)彈的坐標(biāo)為 (x(t),y(t))。當(dāng)零時刻,(X(0),Y(0))=(1,0),(x(0),y(0))=(0,0),建立微分方程模型:

關(guān)于MATLAB連續(xù)模型求解方法介紹和分析

因乙艦以速度v0沿直線 x=1 運動,設(shè)v0=1,w=5,X=1,Y=t,因此導(dǎo)彈運動軌跡的參數(shù)方程為:

關(guān)于MATLAB連續(xù)模型求解方法介紹和分析

MATLAB 求解數(shù)值解程序如下:

(1)定義方程的函數(shù)形式:

function dy=eq2(t,y)

dy=zeros(2,1);

dy(1)=5*(1-y(1))/sqrt((1-y(1))^2+(t-y(2))^2);

dy(2)=5*(t-y(2))/sqrt((1-y(1))^2+(t-y(2))^2);

(2)求解微分方程的數(shù)值解

t0=0,tf=0.21;

[t,y]=ode45('eq2',[t0 tf],[0 0]);

X=1;Y=00.21;plot(X,Y,'-')

plot(y(:,1),y(:,2),'*'),hold on

x=01; y=-5*(1-x).^(4/5)/8+5*(1-x).^(6/5)/12+5/24;

plot(x,y,'r')

關(guān)于MATLAB連續(xù)模型求解方法介紹和分析

3.專用求解器

對于復(fù)雜的微分方程模型的求解, 可以借助 MATLAB 偏微分方程工具箱中的專用求解器。以下將以一個實例來看看如何借助偏微分方程工具箱來實現(xiàn)一個微分方程的求解與數(shù)值仿真

所研究的對象是一個二階波的方程:

這個時候要查看一下 MALTAB 中哪個函數(shù)能求解相類似的方程, solvepde 可以求解的方程形式為:

可以發(fā)現(xiàn)只要通過參數(shù)設(shè)定就可以將所要求解的方程轉(zhuǎn)化成這種標(biāo)準(zhǔn)形式。

具體求解步驟如下:

(1) 設(shè)置參數(shù)

c = 1;

a = 0;

f = 0;

m = 1;

(2) 定義波的空間位置

numberOfPDE = 1;

model = createpde(numberOfPDE);

geometryFromEdges(model,@squareg);

pdegplot(model,'EdgeLabels','on');

ylim([-1.1 1.1]);

axis equal

title'Geometry With Edge Labels Displayed';

xlabel x

ylabel y

關(guān)于MATLAB連續(xù)模型求解方法介紹和分析

(3) 定義微分方程模型的系數(shù)和邊界條件

specifyCoefficients(model,'m',m,'d',0,'c',c,'a',a,'f',f);

applyBoundaryCondition(model,'dirichlet','Edge',[2,4],'u',0);

applyBoundaryCondition(model,'neumann','Edge',([1 3]),'g',0);

(4)定義該問題的有限元網(wǎng)格

generateMesh(model);

figure

pdemesh(model);

ylim([-1.1 1.1]);

axis equal

xlabel x

ylabel y

關(guān)于MATLAB連續(xù)模型求解方法介紹和分析

(5)定義初始條件

u0 = @(location) atan(cos(pi/2*location.x));

ut0 = @(location) 3*sin(pi*location.x).*exp(sin(pi/2*location.y));

setInitialConditions(model,u0,ut0);

(6)方程的求解

n = 31;% 求解次數(shù)

tlist = linspace(0,5,n);

model.SolverOptions.ReportStatistics ='on';

result = solvepde(model,tlist);

u = result.NodalSolution;

(7)模型的數(shù)值仿真

figure

umax = max(max(u));

umin = min(min(u));

for i = 1:n

pdeplot(model,'XYData',u(:,i),'ZData',u(:,i),'ZStyle','continuous',...

'Mesh','off','XYGrid','on','ColorBar','off');

axis([-1 1 -1 1 umin umax]);

caxis([umin umax]);

xlabel x

ylabel y

zlabel u

M(i) = getframe;

end

關(guān)于MATLAB連續(xù)模型求解方法介紹和分析

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4260

    瀏覽量

    62233
  • 生物學(xué)
    +關(guān)注

    關(guān)注

    0

    文章

    25

    瀏覽量

    12958
  • 數(shù)值模擬
    +關(guān)注

    關(guān)注

    0

    文章

    29

    瀏覽量

    9566
收藏 人收藏

    評論

    相關(guān)推薦

    介紹FIR濾波模型的建立,分4個步驟

    本帖介紹FIR濾波模型的建立,分以下幾個步驟: 選定濾波結(jié)構(gòu):低通、高通、帶通、帶阻; 選定合適的窗函數(shù),常見的有hamming、hanning、blackman、ExactBlackman
    發(fā)表于 09-04 09:08

    matlab纜索動力學(xué)?

    關(guān)于這個我想獲得細(xì)纜在水中的張力和構(gòu)型的matlab求解,編程時候這個向量我怎么辦
    發(fā)表于 08-29 15:57

    matlab預(yù)測模型怎么用

    MATLAB預(yù)測模型是一種基于統(tǒng)計和數(shù)學(xué)方法的預(yù)測工具,廣泛應(yīng)用于各種領(lǐng)域,如金融、氣象、生物醫(yī)學(xué)等。本文將介紹MATLAB預(yù)測
    的頭像 發(fā)表于 07-11 14:33 ?426次閱讀

    MATLAB預(yù)測模型哪個好

    MATLAB中,預(yù)測模型的選擇取決于數(shù)據(jù)類型、問題復(fù)雜度和預(yù)測目標(biāo)。以下是一些常見的預(yù)測模型及其適用場景的介紹: 線性回歸(Linear Regression): 線性回歸是最基本的
    的頭像 發(fā)表于 07-11 14:31 ?325次閱讀

    如何使用MATLAB創(chuàng)建預(yù)測模型

    在這篇文章中,我們將討論如何使用MATLAB創(chuàng)建預(yù)測模型。MATLAB(矩陣實驗室)是一種用于數(shù)值計算、可視化和編程的高級編程語言和交互式環(huán)境。它廣泛應(yīng)用于工程、科學(xué)研究和金融領(lǐng)域。 1.
    的頭像 發(fā)表于 07-11 14:29 ?538次閱讀

    matlab預(yù)測模型有哪些

    環(huán)境,使其成為預(yù)測模型開發(fā)和實現(xiàn)的理想平臺。本文將詳細(xì)介紹MATLAB中常用的預(yù)測模型及其應(yīng)用。 線性回歸模型 線性回歸是一種簡單的預(yù)測
    的頭像 發(fā)表于 07-11 14:27 ?586次閱讀

    基于MATLAB 的質(zhì)量守恒空化模型(JFO 模型

    可有大佬會基于MATLAB 的質(zhì)量守恒空化模型(JFO 模型
    發(fā)表于 07-05 23:32

    matlab神經(jīng)網(wǎng)絡(luò)工具箱結(jié)果分析

    神經(jīng)網(wǎng)絡(luò)是一種強(qiáng)大的機(jī)器學(xué)習(xí)技術(shù),廣泛應(yīng)用于各種領(lǐng)域,如圖像識別、語音識別、自然語言處理等。MATLAB提供了一個功能強(qiáng)大的神經(jīng)網(wǎng)絡(luò)工具箱,可以幫助用戶快速構(gòu)建和訓(xùn)練神經(jīng)網(wǎng)絡(luò)模型。本文將介紹
    的頭像 發(fā)表于 07-03 10:32 ?447次閱讀

    基于MATLAB的信號處理系統(tǒng)與分析

    在信息技術(shù)日新月異的今天,信號處理與分析技術(shù)在通信、控制、生物醫(yī)學(xué)、圖像處理等領(lǐng)域的應(yīng)用日益廣泛。MATLAB作為一款功能強(qiáng)大的數(shù)學(xué)軟件,為信號處理與分析提供了強(qiáng)大的工具和支持。本文旨在探討
    的頭像 發(fā)表于 05-17 14:24 ?841次閱讀

    電驅(qū)動系統(tǒng)性能集成化分析

    對于電驅(qū)系統(tǒng)的仿真分析,傳統(tǒng)方法是將不同的結(jié)構(gòu)分割,然后再分領(lǐng)域的進(jìn)行設(shè)計仿真分析。不同的仿真分析之間相互獨立,系統(tǒng)級集成往往在后期階段完成?;蛘卟捎枚辔锢韴雎?lián)合仿真的
    的頭像 發(fā)表于 01-16 15:05 ?653次閱讀
    電驅(qū)動系統(tǒng)性能集成化<b class='flag-5'>分析</b>

    節(jié)點電壓方程的列寫及求解方法

    電子發(fā)燒友網(wǎng)站提供《節(jié)點電壓方程的列寫及求解方法.ppt》資料免費下載
    發(fā)表于 12-25 09:08 ?0次下載

    LabVIEW進(jìn)行癌癥預(yù)測模型研究

    )進(jìn)行非線性數(shù)據(jù)分類。主成分分析(PCA)和線性判別分析(LDA)PCA和LDA用于降維,減少噪聲,并保留數(shù)據(jù)的重要特征。在并行PCA-LDA-SVM模型中,先對原始數(shù)據(jù)同時進(jìn)行PCA和LDA處理
    發(fā)表于 12-13 19:04

    如何通過Matlab進(jìn)行零極點求解?

     對于包含變量的傳遞函數(shù),如果其是二階的,利用Matlab求零極點表達(dá)式是容易實現(xiàn)的。但對于更高階的系統(tǒng)而言,想通過Matlab來求得解析解是極其困難的。
    的頭像 發(fā)表于 11-30 12:23 ?3711次閱讀
    如何通過<b class='flag-5'>Matlab</b>進(jìn)行零極點<b class='flag-5'>求解</b>?

    求解大型COMSOL模型需要多少內(nèi)存?

    求解大型COMSOL模型需要多少內(nèi)存? COMSOL是一種非常強(qiáng)大的跨學(xué)科有限元分析軟件,可以用于解決各種復(fù)雜的問題,包括流體力學(xué)、電磁學(xué)、熱傳遞、結(jié)構(gòu)力學(xué)等。但是,在處理大型模型時,
    的頭像 發(fā)表于 10-29 11:35 ?1686次閱讀

    關(guān)于相位鎖定環(huán)(PLL)頻率合成器的設(shè)計和分析

    本篇文章是關(guān)于相位鎖定環(huán)(PLL)頻率合成器的設(shè)計和分析,重點討論了相位噪聲和頻率噪聲的測量、建模和仿真方法。文章以設(shè)計一個假想的PLL頻率合成器為例,詳細(xì)介紹了設(shè)計過程和步驟。從規(guī)格
    的頭像 發(fā)表于 10-26 15:30 ?1500次閱讀
    <b class='flag-5'>關(guān)于</b>相位鎖定環(huán)(PLL)頻率合成器的設(shè)計和<b class='flag-5'>分析</b>