在MATLAB中寻找雅可比模式指定'jpattern'
我试图理解如何在MATLAB的ode解算器的ode设置中指定雅可比模式 我从一个简单的例子开始在MATLAB中寻找雅可比模式指定'jpattern',matlab,ode,differential-equations,numerical-integration,Matlab,Ode,Differential Equations,Numerical Integration,我试图理解如何在MATLAB的ode解算器的ode设置中指定雅可比模式 我从一个简单的例子开始 syms x y z; F = [x*y, cos(x*z), log(3*x*z*y)] v = [x y z] J = jacobian(F,v) 给 J = [ y, x, 0] [ -z*sin(x*z), 0, -x*sin(x*z)] [ 1/x, 1/y, 1/z] 我想生成雅可比模式 加快计算速度
syms x y z;
F = [x*y, cos(x*z), log(3*x*z*y)]
v = [x y z]
J = jacobian(F,v)
给
J =
[ y, x, 0]
[ -z*sin(x*z), 0, -x*sin(x*z)]
[ 1/x, 1/y, 1/z]
我想生成雅可比模式
加快计算速度
因此,我想从J生成jpattern
矩阵
jpattern =
[ 1, 1, 0]
[ 1, 0, 1]
[ 1, 1, 1]
关于如何从雅可比矩阵生成jpattern
的建议将非常有用。要创建所需的jpattern
矩阵,通过对J
进行初始化,然后对J
的可能非零项进行索引,并将jpattern
中的相应项更新为1
[jr, jc] = size(J);
jpattern = sparse(jr, jc);
jpattern(find(J~=0)) = 1;
顺便说一句,稀疏矩阵只有在包含许多零时才有用
>> full(jpattern)
ans =
1 1 0
1 0 1
1 1 1