ode45
Solver de Runge-Kutta padrão para equações diferenciais ordinárias não rígidas.
Categoria: Mathematics > Numerical Integration and Differential Equations
Sintaxe
[t, y] = ode45(odefun, tspan, y0)
Integra y' = odefun(t, y) em tspan a partir de y0.
[t, y] = ode45(odefun, tspan, y0, options)
Aplica também opções de odeset (tolerâncias, eventos, funções de saída).
sol = ode45(___)
Retorna uma estrutura para uso com deval.
[t, y, te, ye, ie] = ode45(___)
Retorna também instantes, estados e índices de eventos quando uma função de eventos está definida.
Descrição
ode45 usa o par de fórmulas de Dormand-Prince de quarta e quinta ordem: a diferença entre as duas estimativas controla o tamanho do passo. É uma boa primeira tentativa para a maioria dos problemas, desde que não sejam rígidos.
Equações de ordem superior se escrevem como sistemas de primeira ordem: para x'' = -x, use y = [x; x'] e odefun = @(t,y) [y(2); -y(1)]. Se a integração precisa de um número enorme de passos minúsculos, o problema provavelmente é rígido e ode15s é a ferramenta certa.
Argumentos de entrada
odefun- Handle
dydt = odefun(t, y)que retorna um vetor coluna do tamanho dey. tspan[t0 tf], ou um vetor de instantes crescentes (ou decrescentes) a reportar.y0- Vetor de valores iniciais.
options- Estrutura de
odeset. As tolerâncias padrão sãoRelTol = 1e-3eAbsTol = 1e-6.
Argumentos de saída
t- Vetor coluna de instantes.
y- Array com uma linha por instante e uma coluna por componente.
Exemplo
Oscilador harmônico
[t, y] = ode45(@(t, y) [y(2); -y(1)], [0 pi/2], [0; 1]);
fprintf('%.3f %.3f\n', y(end, 1), y(end, 2))
1.000 -0.000