在MATLAB中计算矢量化ODE的雅可比行列式

时间:2015-06-02 18:47:53

标签: matlab ode

这很好用:

syms a b x
jacobian ([a*x - a*b, a*b],[a, b])

但是这个:

syms a b(i) x
i = 1:6
jacobian ([a*x - a*b(i), a*b(i)],[a, b(i)])

返回错误:

Error using sym/jacobian (line 37)
The second argument must be a vector of variables.

在我看来,第二个参数变量的向量,所以我不理解错误。

是否可以区分ODE载体,例如b(i)?我该怎么做呢?

1 个答案:

答案 0 :(得分:1)

声明syms b(i)创建b的符号函数i。 因此,如果将doubles的向量传递给b(i),则输出将是函数值的向量:

>> syms b(i)
>> b(1:6)
ans =
[ b(1), b(2), b(3), b(4), b(5), b(6)]

>> b(i) = i^2;  % Defining the actual function will generate actual values
>> b(1:6)
ans =
[ 1, 4, 9, 16, 25, 36]

所以错误是正确的:你有一个值列表。 要创建变量向量,请使用sym函数

>> b = sym('b',[1,6])
b =
[ b1, b2, b3, b4, b5, b6]