主要内容

이번역페이지는최신내용을담고있지않습니다。최신내용을영문으로보려면여기를클릭하십시오。

ODE솔버선택하기

상미분방정식

상미분방정식(ODE)은단일독립변수t(주로시간을뜻함)에대한종속변y의수도함수를하나이상포함합니다。y t에대한의도함수를나타내기위해여기서는1계도함수의경우 y 2계도함수의경우 y 등의표기법을사용합니다。ODE의계수(顺序)는방정식에표시된y의도함수의계수중가장높은계수와같습니다。

예를들어,다음은2계颂歌입니다。

y 9 y

초기값문제에서는초기상태에서시작하여颂歌를풉니다。초기조건 y 0 과답을구하려는기간 t 0 t f 를사용하여해를반복적으로구합니다。각스텝에서솔버는이전스텝의결과에특정알고리즘을적용합니다。그러한스텝중첫번째스텝에서초기조건은적분을진행하는데필요한정보를제공합니다。최종결과는颂歌솔버가시간스텝의벡터 t t 0 t 1 t 2 ... t f 와각스텝에해당하는해 y y 0 y 1 y 2 ... y f 를반환하는것입니다。

ODE의유형

MATLAB®의颂歌솔버는다음유형의1계颂歌를풉니다。

  • y f t y 형식의양함수颂歌。

  • t y y f t y 형식의선형음함수颂歌。여기서 t y 는정칙질량행렬입니다。질량행렬은시간또는상태종속적이거나,상수행렬일수있습니다。선형음함수颂歌에는y의1계도함수의일차결합이포함되며,이일차결합은질량행렬에인코딩됩니다。

    선형음함수颂歌는항상양함수형식 y 1 t y f t y 로변환할수있습니다。그러나颂歌솔버에질량행렬을직접지정하면,번거롭고많은계산이필요할수있는이러한변환을피할수있습니다。

  • y 의일부성분이누락된방정식을미분대수방정식(DAE)이라고하며,연립DAE에는대수변수가일부포함되어있습니다。대수변수는방정식에도함수가표시되지않는종속변수입니다。연립DAE는방정식을미분하여대수변수를제거함으로써상응하는1계연립颂歌로바꿀수있습니다。DAE를颂歌로바꾸는데필요한미분횟수를미분지수(微分指数)라고합니다。ode15s솔버와ode23t1 DAE솔버는지수를풀수있습니다。

  • f t y y 0 형식의완전음함수颂歌。완전음함수颂歌는양함수형식으로바꿀수없으며,일부대수변수를포함할수도있습니다。ode15i1 DAE솔버는지수를포함한완전음함수문제용으로설계되었습니다。

일부유형의문제에대해서는odeset함수를사용하여选项구조체를생성하는방식으로솔버에추가정보를제공할수있습니다。

연립颂歌

풀려는연립颂歌방정식의개수를원하는대로지정할수있으며,원칙적으로방정식의개수는사용가능한컴퓨터메모리에의해서만제한됩니다。연립방정식에n개의방정식이있는경우,

y 1 y 2 y n f 1 t y 1 y 2 ... y n f 2 t y 1 y 2 ... y n f n t y 1 y 2 ... y n

방정식을인코딩하는함수는 y 1 y 2 ... y n 의값에대응하는n개의요소를갖는벡터를반환합니다。예를들어,다음과같이두개로이루어진연립방정식이있다고가정하겠습니다。

y 1 y 2 y 2 y 1 y 2 2

이러한방정식을인코딩하는함수는다음과같습니다。

函数myODE(t,y) = myODE(t,y)dy (2) = y y (1) * (2) 2;

고계颂歌(高阶》)

MATLAB颂歌솔버는1계방정식만풉니다。따라서고계颂歌는일반적인대입법을사용하여상응하는1계연립방정식으로바꿔야합니다。

y 1 y y 2 y y 3. y y n y n 1

이러한대입의결과로,다음과같이n개의1계방정식으로구성된연립방정식이생성됩니다。

y 1 y 2 y 2 y 3. y n f t y 1 y 2 ... y n

예를들어,다음과같은3계颂歌가있다고가정하겠습니다。

y y y + 1 0.

다음과같이대입법을사용하면

y 1 y y 2 y y 3. y

상응하는1계시스템이다음과같이생성됩니다。

y 1 y 2 y 2 y 3. y 3. y 1 y 3. 1.

이연립방정식에대한코드는다음과같습니다。

函数y(1) = y(2);dydt (2) = y (3);dydt (3) = y y (3) (1) * 1;

복소颂歌(复杂的颂歌)

다음과같은복소颂歌방정식이있다고가정하겠습니다。

y f t y

여기서 y y 1 + y 2 입니다。이방정식을풀려면실수부와허수부를각각다른해성분으로분리한다음각결과를마지막에다시결합해야합니다。이는개념적으로다음과같습니다。

y v 真正的 y 图像放大 y f v 真正的 f t y 图像放大 f t y

》、《예를들어가 y y t + 2 인경우함수파일을사용하여방정식을나타낼수있습니다。

定义接受并返回复数值f = y的函数。

이때,실수부와허수부를분리하는코드는다음과같습니다。

函数阵线= imaginaryODE (t,青年志愿)%由实分量和虚分量构造yY = yv(1) + i*yv(2);%计算函数值yp = complexf (t、y);%分别返回实值和虚值阵线=[真实(yp);图像放大(yp)];

솔버를실행하여해를구할경우,각해성분에초기조건을제공하도록초기조건y0도실수부와허수부로분리됩니다。

y0 = 1 + i;yv0 =[真实(y0);图像放大(y0)];Tspan = [0 2];[t,yv] = ode45(@imaginaryODE, tspan, yv0);

해를구한후에는실수부와허수부를결합하여최종결과를구합니다。

Y = yv(:,1) + i*yv(:,2);

기본적인솔버선택

数值는대부분의颂歌문제에서잘동작하며,일반적으로첫번째로선택하는솔버가됩니다。그러나,정확도요구사항이더느슨하거나더엄격한문제의경우ode23ode113数值보다더효율적일수있습니다。

일부颂歌문제는경직성(硬)을보이거나계산하기어렵습니다。경직성은정확히정의하기곤란한용어지만,일반적으로문제의어느부분에서스케일링에차이가있는경우발생합니다。예를들어2개의해성분이서로크게다른시간스케일에서변하고있는颂歌는경직성방정식일수있습니다。비경직성솔버(예:数值)가문제를풀수없거나속도가매우느린경우이문제를경직성문제로여길수있습니다。비경직성솔버의속도가매우느린경우에는ode15s등의경직성솔버를대신사용해보십시오。경직성솔버를사용하면야코비행렬(雅可比矩阵)이나그희소성패턴을제공하여안정성과효율성을향상시킬수있습니다。

다음표에는각각의솔버를언제사용할수있는지에대한일반적인지침이나와있습니다。

솔버 문제유형 정확도 사용하는경우
数值 비경직성(该) 중간

대부분의경우사용할수있습니다。다른솔버보다数值를가장먼저시도해봐야합니다。

ode23 낮음

허용오차가엄격하지않거나반경직성이있는문제의경우ode23数值보다더효율적일수있습니다。

ode113 낮음~높음

엄격한허용오차를가지는문제에서나颂歌함수를계산하는데시간이많이걸리는경우ode113数值보다더효율적일수있습니다。

ode15s 경직성(硬) 낮음~중간

数值가실패하거나비효율적이고,풀려는문제가경직성문제인것같은경우ode15s를사용해보십시오。미분대수방정식(DAE)을푸는경우에도ode15s를사용하십시오。

ode23s 낮음

엄격하지않은허용오차를가지는문제에서는ode23sode15s보다더효율적일수있습니다。이솔버는ode15s가효과적이지않은일부경직성문제를풀수있습니다。

ode23s는각스텝에서야코비행렬을계산하므로,odeset을통해야코비행렬을제공하면효율성과정확도를최대화할수있습니다。

질량행렬이있는경우이행렬은상수행렬이어야합니다。

ode23t 낮음

반경직성문제이고수치감쇠가없는해가필요한경우ode23t를사용하십시오。

ode23t는미분대수방정식(DAE)을풀수있습니다。

ode23tb 낮음

ode23s와마찬가지로,ode23tb솔버는엄격하지않은허용오차를가지는문제에서ode15s보다더효율적일수있습니다。

ode15i 완전음함수 낮음

완전음함수문제f (t、y, y ') = 0과지수1의미분대수방정식(DAE)에는ode15i를사용하십시오。

각솔버를사용하는경우에대한자세한내용과추가권장사항은[5]항목을참조하십시오。

ODE예제와파일에대한요약

대부분의颂歌문제에서좋은출발점이될수있는여러예제파일이있습니다。예제를쉽게찾아실행할수있는미분방정식예제앱을실행하려면다음을입력하십시오。

odeexamples

편집을위해개별예제파일을열려면다음을입력하십시오。

编辑exampleFileName.m

예제를실행하려면다음을입력하십시오。

exampleFileName

다음표에는사용할수있는颂歌예제파일및DAE예제파일과,이러한예제파일에서사용하는솔버및옵션목록이나와있습니다。일부예제에대해서는링크가포함되어있으며,이러한예제는문서에도직접퍼블리시되어있습니다。

예제파일 사용된솔버 지정된옵션 설명 문서링크
amp1dae ode23t
  • “质量”

경직성미분대수방정식(硬DAE) -상수특이질량행렬을사용하는전기회로

경직성(硬)트랜지스터미분대수방정식풀기
ballode ode23
  • “事件”

  • “OutputFcn”

  • “OutputSel”

  • “完善”

  • “InitialStep”

  • “MaxStep”

단순한이벤트위치-튀어오르는공

ODE이벤트위치
batonode 数值
  • “质量”

시간/상태종속질량행렬에대한颂歌——바통운동

공중으로던져진바통의운동방정식풀기
brussode ode15s
  • “JPattern”

  • 矢量化的

대규모경직성문제-화학반응의확산(브뤼셀레이터)

경직성(硬)颂歌풀기
burgersode ode15s
  • “质量”

  • “MStateDependence”

  • “JPattern”

  • “MvPattern”

  • “RelTol”

  • “AbsTol”

상태종속성이강한질량행렬에대한颂歌——이동메시기법을사용하여해를구하는버거스방정식(汉堡的方程)

상태종속성이강한질량행렬에대한颂歌풀기
fem1ode ode15s
  • “质量”

  • “MStateDependence”

  • 的雅可比矩阵

시간종속질량행렬의경직성(硬)문제——유한요소법

- - - - - -
fem2ode ode23s
  • “质量”

상수질량행렬의경직성(硬)문제——유한요소법

- - - - - -
hb1ode ode15s - - - - - -

상당히긴구간에대해해를구하는경직성颂歌문제-로버트슨(Robertson)화학반응

- - - - - -
hb1dae ode15s
  • “质量”

  • “RelTol”

  • “AbsTol”

  • 矢量化的

보존법칙에기반을둔경직성선형음함수DAE -로버트슨화학반응

로버트슨문제(罗伯逊问题)를반명시적(半显式)미분대수방정식(DAE)으로풀기
ihb1dae ode15i
  • “RelTol”

  • “AbsTol”

  • 的雅可比矩阵

경직성완전음함수DAE -로버트슨화학반응

음함수미분대수방정식(DAE)으로로버트슨문제(罗伯逊问题)풀기
iburgersode ode15i
  • “RelTol”

  • “AbsTol”

  • 的雅可比矩阵

  • “JPattern”

음함수연립颂歌——버거스방정식

- - - - - -
kneeode ode15s
  • 非负的

비음(Non-negativity)제약조건이적용된“무릎문제(膝伤)”

음이아닌颂歌해
orbitode 数值
  • “RelTol”

  • “AbsTol”

  • “事件”

  • “OutputFcn”

복잡한이벤트위치-제한된3체(三体)문제

ODE이벤트위치
rigidode 数值 - - - - - -

(该)비경직성문제-외부힘이작용하지않을때의강체에대한오일러(欧拉)방정식

비경직성(该)颂歌풀기
vdpode ode15s
  • 的雅可比矩阵

파라미터화가가능한반데르폴방정식(范德波尔方程)(μ가더큰경우의경직성)

경직성(硬)颂歌풀기

참고문헌

shmpine L. F.和M. K. Gordon,常微分方程的计算机解:初值问题,w.h. Freeman,旧金山,1975。

Forsythe, G., M. Malcolm,和C. Moler,数学计算的计算机方法,Prentice-Hall,新泽西,1977。

[3] Kahaner, D., C. Moler, and S. Nash, Numerical Methods and Software, prentise - hall, New Jersey, 1989。

[4]尚平,常微分方程的数值解,查普曼和Hall,纽约,1994。

[5] Shampine, L. F. and M. W. Reichelt,“MATLAB ODE Suite”,SIAM Journal on Scientific Computing, Vol. 18, 1997, pp. 1-22。

Shampine, L. F., Gladwell, I.和S. Thompson,用MATLAB求解ODEs,剑桥大学出版社,剑桥英国,2003。

참고항목

|

관련항목

외부웹사이트