Main Content

dde23

상수 지연(Constant Delay)의 지연 미분 방정식(DDE) 풀기

구문

sol = dde23(ddefun,lags,history,tspan)
sol = dde23(ddefun,lags,history,tspan,options)

인수

ddefun

미분 방정식 y(t)=f(t,y(t),y(tτ1),...,y(tτk))의 우변을 구하는 함수 핸들입니다. 이 함수는 다음과 같은 형식이어야 합니다.

dydt = ddefun(t,y,Z)

여기서 t는 현재 t에 대응하고, y는 y(t)의 근삿값 열 벡터이고, Z(:,j)는 지연 τj = lags(j)에 대한 y(t - τj)의 근삿값입니다. 출력값은 f(t,y(t),y(tτ1),...,y(tτk))에 대응하는 열 벡터입니다.

lags

상수, 양의 지연 τ1, ..., τk의 벡터입니다.

history

history를 다음 3가지 방식 중 하나로 지정합니다.

  • t ≤ t0인 경우 y = history(t)가 해 y(t)를 열 벡터로 반환하는 t의 함수

  • y(t)가 상수인 경우 상수 열 벡터

  • 이 호출이 해당 적분을 계속하는 경우 이전 적분의 해 sol

tspan

t0=tspan(1)부터 tf=tspan(end)까지의 적분 구간입니다(t0 < tf).

options

적분 인수입니다(선택 사항). ddeset 함수를 사용하여 생성되는 구조체입니다. 자세한 내용은 ddeset을 참조하십시오.

설명

sol = dde23(ddefun,lags,history,tspan)은 다음 DDE 시스템을

y(t)=f(t,y(t),y(tτ1),...,y(tτk))

구간 [t0,tf]에서 적분합니다. 여기서 τ1, ..., τk는 상수, 양의 지연 및 t0,tf입니다. 입력 인수 ddefun은 함수 핸들입니다.

함수를 파라미터화하기에는 필요한 경우 ddefun 함수에 추가 파라미터를 제공하는 방법이 설명되어 있습니다.

dde23은 해를 구조체 sol로 반환합니다. 보조 함수 deval과 출력 인수 sol을 사용하여 구간 tspan = [t0,tf]의 특정 지점 tint에서 해를 구합니다.

yint = deval(sol,tint)

dde23이 반환한 구조체 sol은 다음 필드를 가집니다.

sol.x

dde23에서 선택된 메시

sol.y

sol.x의 메시 점에서 y(x)에 대한 근삿값

sol.yp

sol.x의 메시 점에서 y′(x)에 대한 근삿값

sol.solver

솔버 이름 'dde23'

sol = dde23(ddefun,lags,history,tspan,options)는 디폴트 적분 속성을, ddeset에서 생성된 인수 options 값으로 대체한 뒤 위와 같이 문제를 풉니다. 자세한 내용은 ddeset 항목과 지연 미분 방정식 풀기 항목을 참조하십시오.

일반적으로 사용되는 옵션은 스칼라 상대 허용오차 'RelTol'(기본적으로 1e-3)과 절대 허용오차 'AbsTol'로 구성된 벡터(기본적으로 모든 성분은 1e-6임)입니다.

'Jumps' 옵션을 사용하여, 내역 또는 해에 불연속이 들어 있는 문제를 풉니다. t0 이전(즉, 내역)의 해에 있는 불연속 위치 또는 t0 이후의 알려진 t 값에서의 방정식 계수에 있는 불연속 위치가 포함된 벡터로 이 옵션을 설정합니다.

'Events' 옵션을 사용하여, 함수 g(t,y(t),y(tτ1),...,y(tτk))가 0이 되는 곳을 찾기 위해 dde23이 호출하는 함수를 지정합니다. 이 함수는 다음과 같은 형식이어야 합니다.

[value,isterminal,direction] = events(t,y,Z)

또한 각 이벤트를 테스트할 이벤트 함수를 포함해야 합니다. eventsk번째 이벤트 함수의 경우:

  • value(k)k번째 이벤트 함수의 값입니다.

  • 이 이벤트 함수의 0에서 적분을 종료하려는 경우에는 isterminal(k) = 1이고 그렇지 않은 경우에는 0입니다.

  • dde23으로 이 이벤트 함수의 모든 0을 계산하려는 경우에는 direction(k) = 0이고, 이벤트 함수가 증가하는 곳의 0만 계산하려는 경우에는 +1이고, 이벤트 함수가 감소하는 곳의 0만 계산하려는 경우에는 -1입니다.

'Events' 옵션을 지정한 상태에서 이벤트가 발견되면 출력 구조체 sol은 다음 필드도 포함합니다.

sol.xe

모든 이벤트의 위치(즉, 이벤트 함수가 0이 되는 시간)를 요소로 갖는 행 벡터

sol.ye

행렬로, 이 행렬의 열은 sol.xe의 시간에 대응하는 해 값임

sol.ie

벡터로, sol.xe의 대응 시간에 발생한 이벤트에 대한 인덱스를 요소로 가짐

예제

이 예제에서는 지연값(lags)이 1과 0.2인 구간 [0, 5]에서 DDE를 풉니다. 함수 ddex1de는 지연 미분 방정식을 계산하고 ddex1histt <= 0에 대한 내역을 계산합니다.

참고

파일 ddex1.m에는 이 예제에 대한 전체 코드가 포함되어 있습니다. 명령줄에 edit ddex1을 입력하면 편집기에서 코드를 볼 수 있습니다. 명령줄에 ddex1을 입력하면 이 파일을 실행할 수 있습니다.

sol = dde23(@ddex1de,[1, 0.2],@ddex1hist,[0, 5]);

아래 코드는 구간 [0,5] 사이의 균일한 간격의 점 100개에서의 해를 구하고 그 결과를 플로팅합니다.

tint = linspace(0,5);
yint = deval(sol,tint);
plot(tint,yint);

ddex1은 로컬 함수를 사용하여 이 문제를 코딩할 수 있는 방법을 보여줍니다. 다른 예제는 ddex2 항목을 참조하십시오.

알고리즘

dde23은 명시적 룽게-쿠타(Explicit Runge-Kutta) (2,3) 쌍과 ode23의 보간법을 사용하여 불연속 자취를 추적하고 적분합니다. 또한 지연값(lags)보다 긴 스텝의 반복을 사용합니다.

참고 문헌

[1] Shampine, L.F. and S. Thompson, “Solving DDEs in MATLAB,” Applied Numerical Mathematics, Vol. 37, 2001, pp. 441-458.

[2] Kierzenka, J., L.F. Shampine, and S. Thompson, “Solving Delay Differential Equations with dde23

버전 내역

R2006a 이전에 개발됨

참고 항목

| | | |