在octave中的lsode内部使用jacobian

时间:2019-02-20 08:12:10

标签: function octave ode

我正在尝试使用jacobian解决一个具有lsode的简单非线性振荡器。 这是调用该函数和jacobian的脚本:

x_0 = [1, 0];
t = linspace(0,10,1000);
[X] = lsode([@fcn, j], x_0, t);
figure(1);
plot(t,X(:,1));

函数fcn是:

function f = fcn(x,t)
  c = 5;
  m = 10;
  k = 10;
  if x(1) < 0
    k = 10e9;
  endif
  f1 = x(2);
  f2 = -c/m*x(2)-k/m*x(1);
  f = [f1; f2];
endfunction

和雅各布:

function jac = j(x,t)
  c = 5;
  m = 10;
  k = 10;
  jac = [0, 1; -k/m, -c/m];
endfunction

我收到此错误:

error: horizontal dimensions mismatch (1x1 vs 2x2)
error: called from
    script at line 5 column 4

0 个答案:

没有答案