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ção sol.y (uma linha por componente), a derivada sol.yp e sol.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))
Saída
0.5697 0.5697

Veja também

bvp5c bvpinit bvpset deval ode45