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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

對(duì)于通常的微分方程, 一般需要先求解析解, 那么 dsolve 是首先考慮的求解器,因?yàn)閐solve 能夠求解解析解,其具體的用法如下:

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

求解本問(wèn)題的 Matlab 程序?yàn)椋?/p>

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 家族求解器

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

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

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

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

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

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

[實(shí)例]導(dǎo)彈追蹤問(wèn)題

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

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

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

因乙艦以速度v0沿直線 x=1 運(yùn)動(dòng),設(shè)v0=1,w=5,X=1,Y=t,因此導(dǎo)彈運(yùn)動(dòng)軌跡的參數(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.專用求解器

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

所研究的對(duì)象是一個(gè)二階波的方程:

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

可以發(fā)現(xiàn)只要通過(guò)參數(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èn)題的有限元網(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)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4284

    瀏覽量

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

    關(guān)注

    0

    文章

    25

    瀏覽量

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

    關(guān)注

    0

    文章

    29

    瀏覽量

    9569
收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

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

    matlab纜索動(dòng)力學(xué)?

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

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

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

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

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

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

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

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

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

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

    可有大佬會(huì)基于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)域,如圖像識(shí)別、語(yǔ)音識(shí)別、自然語(yǔ)言處理等。MATLAB提供了一個(gè)功能強(qiáng)大的神經(jīng)網(wǎng)絡(luò)工具箱,可以幫助用戶快速構(gòu)建和訓(xùn)練神經(jīng)網(wǎng)絡(luò)模型。本文將介紹
    的頭像 發(fā)表于 07-03 10:32 ?506次閱讀

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

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

    gis中常用的空間分析方法

    將詳細(xì)介紹GIS中常用的空間分析方法,包括空間插值、緩沖區(qū)分析、空間統(tǒng)計(jì)、領(lǐng)域分析、網(wǎng)絡(luò)分析和多
    的頭像 發(fā)表于 02-25 13:44 ?4849次閱讀

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

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

    四種微調(diào)大模型方法介紹

    全微調(diào)(Full Fine-tuning):全微調(diào)是指對(duì)整個(gè)預(yù)訓(xùn)練模型進(jìn)行微調(diào),包括所有的模型參數(shù)。在這種方法中,預(yù)訓(xùn)練模型的所有層和參數(shù)都會(huì)被更新和優(yōu)化,以適應(yīng)目標(biāo)任務(wù)的需求。
    發(fā)表于 01-03 10:57 ?2.3w次閱讀
    四種微調(diào)大<b class='flag-5'>模型</b>的<b class='flag-5'>方法</b><b class='flag-5'>介紹</b>

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

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

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

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

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

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