我对maxima不太满意,但是我正在努力学习 我试图为一个相当小的非线性系统编写一个牛顿迭代求解器。 为了做到这一点,我必须在当前的迭代中评估雅可比行列式。但是,我似乎无法找到一种评估雅可比行列式的方法。
我目前有:
F1000(D5,D6,D7,D8,D9,D10,b1,b2,b3,b4,b5,b6,b7,b8,b9,d1,d2,d3,e1,e2,e3,f1,f2,f3)
:= (-f1-3*d1-9*b1+60)*l1$
F1001(D5,D6,D7,D8,D9,D10,b1,b2,b3,b4,b5,b6,b7,b8,b9,d1,d2,d3,e1,e2,e3,f1,f2,f3)
:= (-f2+e2-6*d2-3*b2-15)*l1$
/*further functions omitted*/
J : jacobian([
F1000(D5,D6,D7,D8,D9,D10,b1,b2,b3,b4,b5,b6,b7,b8,b9,d1,d2,d3,e1,e2,e3,f1,f2,f3),
F1001(D5,D6,D7,D8,D9,D10,b1,b2,b3,b4,b5,b6,b7,b8,b9,d1,d2,d3,e1,e2,e3,f1,f2,f3),
/*functions omitted*/
F0018(D5,D6,D7,D8,D9,D10,b1,b2,b3,b4,b5,b6,b7,b8,b9,d1,d2,d3,e1,e2,e3,f1,f2,f3),
F0019(D5,D6,D7,D8,D9,D10,b1,b2,b3,b4,b5,b6,b7,b8,b9,d1,d2,d3,e1,e2,e3,f1,f2,f3)
],
[D5,D6,D7,D8,D9,D10,b1,b2,b3,b4,b5,b6,b7,b8,b9,d1,d2,d3,e1,e2,e3,f1,f2,f3]
)$
但是,现在我找不到一个很好的方法来评估J,例如,
u_init : [D5_0,D6_0,D7_0,D9_0,...,e3_0,f1_0,f2_0,f3_0]$
我尝试过这样的事情:
subs(J, [D5,D6,D7,D8,D9,D10,b1,b2,b3,b4,b5,b6,b7,b8,b9,d1,d2,d3,e1,e2,e3,f1,f2,f3],
[1,1,1,1...,1,1,1,1]),
和
ev(J, [D5,D6,D7,D8,D9,D10,b1,b2,b3,b4,b5,b6,b7,b8,b9,d1,d2,d3,e1,e2,e3,f1,f2,f3],
[1,1,1,1...,1,1,1,1]),
我找不到一个好的方法来评估Jacobian,$ J $,在$ u_i $点。 我非常感谢任何澄清/见解。
由于
答案 0 :(得分:1)
尝试
subst([D5=D5_0,D6=D6_0,...,f3=f3_0], J);
较小雅可比行列的一个例子:
(%i1) F1(x,y):=x^2+y;
2
(%o1) F1(x, y) := x + y
(%i2) F2(x,y):=-x-y^2;
2
(%o2) F2(x, y) := - x - y
(%i3) J:jacobian([F1(x,y),F2(x,y)],[x,y]);
[ 2 x 1 ]
(%o3) [ ]
[ - 1 - 2 y ]
(%i4) subst([x=2,y=3],J);
[ 4 1 ]
(%o4) [ ]
[ - 1 - 6 ]