bvp4c
Resolve problemas de valor de contorno para equações diferenciais ordinárias.
Categoria: Mathematics > Numerical Integration and Differential Equations
Sintaxe
sol = bvp4c(odefun, bcfun, solinit)
Resolve y' = odefun(x, y) sujeito às condições de contorno bcfun(y(a), y(b)) = 0, partindo do palpite solinit.
sol = bvp4c(odefun, bcfun, solinit, options)
Aplica também opções criadas com bvpset.
Descrição
Escreve-se a equação como um sistema de primeira ordem e dão-se as condições de contorno como função dos valores nas duas extremidades. O solver adapta a malha até o resíduo ficar abaixo da tolerância, então sol.x costuma ser mais fina que solinit.x.
Use deval(sol, x) para avaliar a solução em qualquer ponto, já que os pontos da malha não são escolhidos por você. Problemas de valor de contorno podem ter várias soluções ou nenhuma, e o palpite inicial decide qual é encontrada.
Argumentos de entrada
odefun- Handle de função
dydx = odefun(x, y)que retorna um vetor coluna. bcfun- Handle de função
res = bcfun(ya, yb)que retorna os resíduos das condições de contorno. solinit- Malha inicial e palpite, construídos com
bvpinit. options- Estrutura de
bvpset(tolerâncias, tamanho máximo da malha etc.).
Argumentos de saída
sol- Estrutura com a malha
sol.x, a soluçãosol.y(uma linha por componente), a derivadasol.ypesol.stats.
Exemplo
y'' + y = 0 com y(0) = 0, y(1) = 1
odefun = @(x, y) [y(2); -y(1)];
bcfun = @(ya, yb) [ya(1); yb(1) - 1];
solinit = bvpinit(linspace(0, 1, 5), [0; 1]);
sol = bvp4c(odefun, bcfun, solinit);
y = deval(sol, 0.5);
fprintf('%.4f %.4f\n', y(1), sin(0.5)/sin(1))
0.5697 0.5697