odeJacobian
Fornece a jacobiana de uma EDO a um objeto ode.
Categoria: Other public functions: funfun
Sintaxe
J = odeJacobian(Jacobian=fcn)
Cria uma definição de jacobiana a partir de uma função @(t, y) que retorna a matriz de derivadas.
J = odeJacobian(Jacobian=fcn, SparsityPattern=S)
Declara também quais entradas podem ser diferentes de zero.
Descrição
Solvers implícitos como ode15s resolvem um sistema não linear a cada passo e precisam da jacobiana do lado direito. Se ela não é dada, é estimada por diferenças finitas, o que custa avaliações extras. Fornecer a jacobiana exata torna problemas rígidos mais rápidos e confiáveis. Em sistemas grandes, o padrão de esparsidade permite ao solver ignorar entradas sempre nulas.
Argumentos de entrada
Jacobian- Function handle, ou matriz constante, com a derivada do lado direito em relação ao estado.
SparsityPattern- Matriz lógica esparsa que marca as entradas que podem ser diferentes de zero.
Argumentos de saída
J- Um objeto
odeJacobian, atribuído à propriedadeJacobiande um objetoode.
Exemplo
Jacobiana exata para um solver rígido
J = odeJacobian(Jacobian=@(t, y) -1);
f = ode(ODEFcn=@(t, y) -y, InitialValue=1, Jacobian=J, Solver='ode15s');
sol = solve(f, 0, 1);
fprintf('%.3f\n', sol.Solution(end))
Saída
0.368