hetjac.asv

来自「计算动力学系统的分岔图」· ASV 代码 · 共 45 行

ASV
45
字号

function jac=hetjac(x,p,J)
global hetds cds
nphase = hetds.nphase;j=eye(nphase);
x1=x;
if (cds.options.SymDerivative >=10)
    for i=1:J      
       jac = feval(hetds.Jacobian, 0, x1, p{:})*j;
       x1=feval(hetds.func,0,x1,p{:});
   end
else
     for i=1:nphase
       x1 = x; x1(i) = x1(i)-cds.options.Increment;
       x2 = x; x2(i) = x2(i)+cds.options.Increment;
       for m=1:J    
        x1= feval(hetds.func, 0, x1, p{:});
        x2=  feval(hetds.func, 0, x2,p{:});
       end
        jac(:,i) =(x2-x1)/(2*cds.options.Increment);
     end
  
end
%%%
function j=mjac(x,p,n)
global fpmds cds
nphase = fpmds.nphase;
j=eye(nphase);x1=x;
if (cds.options.SymDerivative >=1)
   for i=1:n      
       j = feval(fpmds.Jacobian, 0, x1, p{:})*j;
       x1=feval(fpmds.func,0,x1,p{:});
   end
else
      for i=1:nphase
        x1 = x; x1(i) = x1(i)-cds.options.Increment;
        x2 = x; x2(i) = x2(i)+cds.options.Increment;
        for m=1:n     
         x1= feval(fpmds.func, 0, x1, p{:});
         x2=  feval(fpmds.func, 0, x2,p{:});
        end
       j(:,i) =(x2-x1)/(2*cds.options.Increment);
     end
end

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?