MATLAB中非线性ODE的雅可比

时间:2016-12-29 15:07:24

标签: matlab symbolic-math

我正在计算jacobian的双体问题,这个问题的定义是这样的 two-body problem

我已经建立了我的方程组,如下所示

syms y1(t) y2(t) y3(t) y4(t)

r = sqrt(y1^2 + y2^2)
y3 = diff(y1)
y4 = diff(y2)
yd = [y3; y4; -y1/r^3; -y2/r^3]

jacobian(yd, [y1 y2 y3 y4])

但是,当我运行jacobian函数时,我收到以下错误

  

第二个参数必须是变量向量。

我做错了什么?

编辑:

我还尝试将y的{​​{1}}参数化为无效。

1 个答案:

答案 0 :(得分:4)

由于错误消息表明第二个参数必须是变量向量,而在您的情况下,它是:[y1, y2, 1, 1]

此外,无需将其初始化为symfun类,即y1(t)y2(t)y3(t)y4(t),您可以将它们定义为{{ 1}}类而不是symy1y2y3

因此,将它们初始化为y4并删除您使symy3等于y4的行,即

1

你会得到这个输出:

syms y1 y2 y3 y4
r = sqrt(y1^2 + y2^2);
yd = [y3; y4; -y1/r^3; -y2/r^3];
jacobian(yd, [y1 y2 y3 y4])