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 à propriedade Jacobian de um objeto ode.

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

Veja também

ode odeEvent odeMassMatrix ode15s numjac