我正在尝试使用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