雅可比
然而,当我运行jacobian
功能我收到以下错误
第二个参数必须是变量的矢量。
我在做什么错?
编辑:
我也曾尝试进行参数y
对于T y(t)
无济于事。
问题描述:
我计算jacobian
用于双体问题,这是像这样 雅可比 <p>然而,当我运行<code>jacobian</code>功能我收到以下错误</p> <blockquote> <p>第二个参数必须是变量的矢量。</p> </blockquote> <p>我在做什么错?</p> <p>编辑:</p> <p>我也曾尝试进行参数<code>y</code>对于T <code>y(t)</code>无济于事。</p>
定义我已经建立了我的方程组如下
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])
非线性ODE的
答
由于错误消息提示第二个参数必须是变量的向量,而在你的情况下它是:[y1, y2, 1, 1]
。
也没有必要将它们初始化为symfun
类即y1(t)
,y2(t)
,y3(t)
和y4(t)
,你可以将它们定义为sym
类,而不是即y1
,y2
,y3
和y4
因此,通过初始化它们作为sym
和删除您在其中进行y3
和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])
你会得到这样的输出:
[ 0, 0, 1, 0]
[ 0, 0, 0, 1]
[ (3*y1^2)/(y1^2 + y2^2)^(5/2) - 1/(y1^2 + y2^2)^(3/2), (3*y1*y2)/(y1^2 + y2^2)^(5/2), 0, 0]
[ (3*y1*y2)/(y1^2 + y2^2)^(5/2), (3*y2^2)/(y1^2 + y2^2)^(5/2) - 1/(y1^2 + y2^2)^(3/2), 0, 0]
具体来说,'symfun'对象不是象征性的变量,但象征性的功能。 – horchler