Илюстриран урок за MatLab › Числени методи › Използване на ODE решаващи средства

Използване на ODE Solvers

Във функциите, описани по-долу, са приети следните обозначения и правила за решаване на системи от диференциални уравнения:

  • опции е аргумент, създаден от функцията odeset (друга функция - odeget или bvpget (само за bvp4c) - ви позволява да показвате опциите, зададени по подразбиране или с помощта на функцията odeset /bvpset);
  • tspan – вектор, определящ интервала на интегриране [tO tfinal]. За да получите решения в конкретни времена t0, tl,…, tfinal (подредени в низходящ или нарастващ ред), използвайте tspan = [t0 tl… tfinal];
  • у0 – вектор на началните условия;
  • p1,р2,." – произволни параметри, предавани на функцията F;
  • T,Y е Y матрица за вземане на решения, където всеки ред съответства на времето, върнато във вектора на колоната T.

Нека да преминем към описанието на функциите за решаване на системи от диференциални уравнения:

  • [T.Y] = solver(@F,tspan,y0) – където вместо solver заместваме името на конкретен solver – интегрира система от диференциални уравнения във форматаy'=F(t,y) върху интервала tspan с начални условия y0. @F е дескриптор на ODE функция. Всеки ред в масива за вземане на решения Y съответства на времевата стойност, върната във векторната колона T;
  • [T.Y] = solver(@F, tspan, y0 .options) - Дава решение, подобно на описаното по-горе, но с опции, определени от стойностите на аргумента options, създаден от функцията odeset. Често използваните параметри включват толерантност на относителната грешка RelTol (по подразбиране le-3) и вектор на толерантност на абсолютна грешка AbsTol (компонентите по подразбиране са 1e-6);
  • [T.Y] =solver(@F,tspan,y0,options,p1,p2…) - Дава решение, подобно на това по-горе, като предава допълнителни опции pi, p2,… към m-файла F винаги, когато бъде извикан. Използвайте options=[], ако не са дадени опции;
  • [T.Y.TE.YE.IE] = solver(@F.tspan,y0,options) – в допълнение към описаното решение съдържа свойствата на събитията, зададени в структурата на опциите чрез препратка към функциите за събития. Когато тези функции на събитието от (t, y, са равни на нула, действията се извършват в зависимост от стойността на трите вектора стойност, isterminal, посока (стойностите им могат да бъдат зададени в m-файлове на функциите на събитието). За i-тата функция на събитието, value(i) е стойността на функцията, isterminal (i) е да спре интегрирането, когато функцията достигне нула, direction^) = 0, ако всички нули на функцията на събитието трябва да бъдат изчислени (по подразбиране), +1 – само онези нули, при които функцията на събитието нараства, – 1 – само онези нули, при които функцията на събитието намалява. Изходният аргумент TE е колонен вектор от моменти, в които се случват събития, редовете YE са съответните решения, а индексите във вектора IE определят коя от i функциите за събития е нула в момента, определен от TE. Когато дадена функция се извиква без изходни аргументи, изходната функция odeplot се извиква по подразбиране за изграждане на изчисленото решение. Като алтернатива можете например да зададете свойството OutputFcn на 'odephas2' или 'odephas3', за да генерирате 2D или 3D фазови равнини.
  • [T.X.Y] = sim(@model,tspan.-y0.options,ut.p1,p2..") - използва модела SIMULINK, извиквайки подходящия солвър от него. Пример:

Опциите за интегриране (options ) могат да бъдат дефинирани както в m-файла, така и в командния ред с помощта на командатаodeset. Акоопцията е дефинирана и на двете места, дефиницията на командния ред има предимство.

Решавателите използват различни параметри в списъка с параметри: