주요 콘텐츠

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

ddesd

R2026a

일반 지연의 지연 미분 방정식(DDE) 풀기

구문

sol = ddesd(ddefun,delays,history,tspan)
sol = ddesd(ddefun,delays,history,tspan,options)

인수

ddefun

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

dydt = ddefun(t,y,Z)

여기서 t는 현재 t에 대응하고, y는 y(t)의 근삿값 열 벡터이고, Z(:,j)는 delays(t,y)의 성분 j로 주어진 지연 d(j)에 대한 y(d(j))의 근삿값입니다. 출력값은 f(t,y(t),y(d(1),...,y(d(k)))에 대응하는 열 벡터입니다.

delays

지연 d(j)로 구성된 열 벡터를 반환하는 함수 핸들입니다. 지연은 t와 y(t)에 따라 다를 수 있습니다. ddesd는 min(d(j),t)를 사용하여 d(j) ≤ t인 요구 사항을 추가로 부여할 수 있습니다.

모든 지연 함수의 형식이 d(j) = t – τj인 경우에는 인수 delays를 상수 벡터 delays(j) = τj로 설정할 수 있습니다. 이 형식의 지연 함수를 사용하는 ddesd는 dde23과 용법이 동일합니다.

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 = ddesd(ddefun,delays,history,tspan)은 다음 DDE 시스템을

y′(t)=f(t,y(t),y(d(1)),...,y(d(k)))

구간 [t0,tf]에서 적분합니다. 여기서 지연 d(j)는 t와 y(t)에 따라 다를 수 있고 t0 < tf입니다. 입력 인수 ddefun과 delays는 함수 핸들입니다. 자세한 내용은 함수 핸들 생성하기 항목을 참조하십시오.

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

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

yint = deval(sol,tint)

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

sol.x

ddesd에서 선택된 메시

sol.y

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

sol.yp

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

sol.solver

솔버 이름 'ddesd'

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

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

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

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

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

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

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

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

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

sol.xe

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

sol.ye

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

sol.ie

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

예제

다음 방정식은

sol = ddesd(@ddex1de,@ddex1delays,@ddex1hist,[0,5]);

함수 ddex1delays가 지정한 지연과 ddex1de로 계산한 미분 방정식을 사용하여 구간 [0,5]에서 DDE를 풉니다. 함수 ddex1hist가 t ≤ 0에 대한 내역을 구합니다. [0,5] 사이에서 간격이 균일한 점 100개에서의 해를 구합니다.

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

다음을 사용하여 플로팅합니다.

plot(tint,yint);

이 문제는 상수 지연과 관련 있습니다. delay 함수의 형식은 다음과 같습니다.

function d = ddex1delays(t,y)
%DDEX1DELAYS  Delays for using with DDEX1DE.
d = [ t - 1
      t - 0.2];

또한 상수 지연에 대응하는 구문을 사용하여 문제를 풀 수 있습니다.

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

또는 dde23을 사용하여 문제를 풀 수 있습니다.

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

지연 미분 방정식 풀이에 대한 다른 예제에 대해서는 ddex2 및 ddex3 항목을 참조하십시오.

참고 문헌

[1] Shampine, L.F., “Solving ODEs and DDEs with Residual Control,” Applied Numerical Mathematics, Vol. 52, 2005, pp. 113-127.

참고 항목

| | | |