수색…


odeset 예제

먼저 우리가 해결하고자하는 초기 가치 문제를 초기화합니다.

odefun = @(t,y) cos(y).^2*sin(t);
tspan = [0 16*pi];
y0=1;

그런 다음이 문제를 해결하기 위해 지정된 옵션없이 ode45 함수를 사용합니다. 나중에 비교하기 위해 궤도를 그립니다.

[t,y] = ode45(odefun, tspan, y0);
plot(t,y,'-o');

우리는 이제 우리의 문제에 대해 좁은 친척과 좁은 절대 허용치를 설정합니다.

options = odeset('RelTol',1e-2,'AbsTol',1e-2);
[t,y] = ode45(odefun, tspan, y0, options);
plot(t,y,'-o');

우리는 엄격한 상대적인 것과 좁은 절대적 한계를 설정합니다.

options = odeset('RelTol',1e-7,'AbsTol',1e-2);
[t,y] = ode45(odefun, tspan, y0, options);
plot(t,y,'-o');

우리는 상대적으로 좁고 절대 한계치를 설정합니다. 공차의 한계가 좁은 앞의 예에서와 마찬가지로 특정 옵션없이 첫 번째 플롯과 완전히 다른 궤적을 볼 수 있습니다.

options = odeset('RelTol',1e-2,'AbsTol',1e-7);
[t,y] = ode45(odefun, tspan, y0, options);
plot(t,y,'-o');

우리는 엄격한 상대적인 엄격한 허용 한계를 설정했습니다. 다른 플롯과 결과를 비교하면 좁은 허용 오차 한계로 계산 된 오류가 강조됩니다.

options = odeset('RelTol',1e-7,'AbsTol',1e-7);
[t,y] = ode45(odefun, tspan, y0, options);
plot(t,y,'-o');

다음은 정밀도와 런타임 사이의 균형을 보여줍니다.

tic;
options = odeset('RelTol',1e-7,'AbsTol',1e-7);
[t,y] = ode45(odefun, tspan, y0, options);
time1 = toc;
plot(t,y,'-o');

비교를 위해 절대 및 상대 오차에 대한 허용 한계를 강화합니다. 이제는 정밀도가 크게 향상되지 않으면 초기 값 문제를 해결하는 데 시간이 오래 걸리는 것을 알 수 있습니다.

tic;
options = odeset('RelTol',1e-13,'AbsTol',1e-13);
[t,y] = ode45(odefun, tspan, y0, options);
time2 = toc;
plot(t,y,'-o');


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow