함수 > 풀이 및 최적화 > 미분 방정식 풀이 > ODE 풀이 함수
  
ODE 풀이 함수
아래의 각 함수는 (intvls + 1) × (n + 1) 해 행렬을 구합니다. 여기서, n은 미지수의 수입니다. 행렬의 첫 번째 열에는 해가 계산되는 x 값이 포함됩니다. 이러한 값은 x1x2 사이에서 (intvls + 1)로 일정한 간격을 이루는 숫자입니다. 나머지 열에는 첫 번째 열의 x 값에 해당하는 해(y0y1, ..., yn-1)의 값이 들어 있습니다.
rkfixed, RkAdapt, Bulstoer, StiffbStiffr 풀이 함수의 경우 해당 풀이 함수를 호출하기 전에 변수 TOL을 정의하여 해에 대한 스칼라 공차를 지정할 수 있습니다. 예를 들어, 모든 변수에 대한 공차를 10-6으로 설정할 수 있습니다.
TOL:= 10-6
TOL은 풀이 함수 Adams, BDF 또는 Radau에 대한 공차에 영향을 주지 않습니다. 이러한 풀이 함수의 경우 선택적 인수인 tol을 사용하여 공차를 지정해야 합니다.
ODE 풀이 구간을 사용하여 방정식 및 초기 조건 항목을 단순화할 수 있습니다.
가파르지 않은 시스템 풀이
Adams(init, x1, x2, intvls, D, [tol]) - Adams 방법을 사용합니다.
rkfixed(init, x1, x2, intvls, D) - 4차 Runge-Kutta 고정 단계 방법을 사용합니다.
Rkadapt(init, x1, x2, intvls, D) - 적응 단계 크기를 사용하는 4차 Runge-Kutta 방법을 사용합니다.
Bulstoer(init, x1, x2, intvls, D) - Runge-Kutta 방법보다 약간 더 정확하지만 변화가 완만한 시스템이 필요한 Bulirsch-Stoer 방법을 사용합니다.
가파른 시스템 풀이
이러한 함수를 사용하여 가파른 또는 대수 ODE 문제를 풉니다.
BDF(init, x1, x2, intvls, D, [J], [tol]) - 역 미분 수식 방법을 사용합니다. 선택적 인수인 J 또는 tol을 사용하거나 다른 인수를 생략할 수 있습니다.
Radau(init, x1, x2, intvls, D, [J], [M], [tol]) - Radau5 방법을 사용합니다. 선택적 인수인 J, Mtol의 임의 조합을 사용하고 사용하지 않을 옵션은 생략할 수 있습니다.
Stiffb(init, x1, x2, intvls, D, AJ) - Bulirsch-Stoer 방법을 사용합니다.
Stiffr(init, x1, x2, intvls, D, AJ) - Rosenbrock 방법을 사용합니다.
혼성 풀이 함수
AdamsBDF(init, x1, x2, intvls, D, [J], [tol]) - 시스템이 가파른지 여부를 확인하고 그에 따라 Adams 또는 BDF를 호출합니다. 선택적 인수인 J 또는 tol을 사용하거나 다른 인수를 생략할 수 있습니다.
인수
initn개의 실수 초기치로 이루어진 벡터이거나 단일 스칼라 초기치(단일 ODE인 경우)입니다. 여기서 n은 미지수의 수입니다.
x1x2는 ODE 해를 계산하는 구간의 스칼라 끝점(실수)입니다. init의 초기치는 x1에서 계산된 ODE 함수의 값입니다.
intvls는 풀이 함수를 보간하는 데 사용되는 이산화 간격의 수(정수)입니다. 해 점의 수는 intervals + 1입니다.
D는 시스템의 우변을 지정하는 D(x,y) 형식의 벡터 함수입니다.
tol(선택 사항)은 시스템의 독립 변수 각각에 대한 공차를 지정하는 실수 값 또는 실수 값의 벡터입니다. 공차는 해 변수에 필요한 정확도입니다.
tol을 10-5보다 작거나 같은 값으로 설정해야 합니다. 문제의 배율 및 사용된 상대 단계 크기에 따라, 적합한 해를 구하기 위해 TOL 값을 줄여야 할 수 있습니다. tol의 값이 작을수록 풀이 알고리즘에서 필요한 정확도를 얻기 위해 수행할 단계가 많아집니다.
방정식 시스템을 풀고 있는 경우 tol을 스칼라 값으로 설정하면 시스템의 모든 변수에 대해 동일한 공차가 지정됩니다. tol을 벡터(길이가 시스템의 변수 개수와 동일한 벡터)로 설정하면 각 변수에 대해 개별 공차가 지정됩니다.
J(선택 사항)는 야코비 행렬을 반환하는 J(x, y) 형식의 함수입니다. 여기서 야코비 행렬은 y0y1, ... yn−1을 기준으로 하는 D 함수의 편도함수 행렬입니다.
M(선택 사항)은 M · dy/dt = f(t, y) 형식의 변수 간 연결을 나타내는 실수 행렬입니다.
AJ는 첨가된 야코비를 반환하는 AJ(x, y) 형식의 함수입니다. 이 첨가된 야코비 행렬의 첫 번째 열에는 시스템의 우변에 있는 x 기준 함수의 편도함수가 포함됩니다. 나머지 열은 y0y1, ... yn−1 기준의 편도함수가 포함된 야코비 J 열입니다.
D, JAJ 함수는 인수 없이 풀이 함수에 제공되고, yn(x) 함수는 인수 없이 D, JAJ에 지정됩니다.
D, JAJ에 대한 두 번째 인수는 항목이 하나뿐인 경우에도 벡터 아래 첨자로 표시됩니다.
추가 정보
RadauRkadapt 함수에서는 미분 방정식을 풀 때 균일하지 않은 단계 크기를 내부적으로 사용하며 해의 변화가 큰 영역에서는 단계를 더 많이 추가하지만 intvls에 지정된 개수의 간격이 일정한 점에서 해를 구합니다.
Radau를 사용할 경우 야코비 입력이 필요 없다는 장점이 있지만 J를 즉시 사용할 수 있는 경우에도 이 방법을 사용하면 정확도가 향상됩니다.