Math 极大值:在某一点上计算雅可比矩阵

Math 极大值:在某一点上计算雅可比矩阵,math,evaluation,maxima,newtons-method,Math,Evaluation,Maxima,Newtons Method,我对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,b

我对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 at,例如

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]), 

我就是找不到一个好方法来计算雅可比矩阵,$J$,在$u_I$点。 我非常感谢您的澄清/见解

谢谢

试试看

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 ]

这是什么语言?什么是
subs
ev
?我也想问一下雅各比的问题,但你的问题表明这就是重点。@Teepeemm,如果我不清楚,我道歉。我的问题与语言最大值(或WXMaxima)直接相关
subs
是一个来自matlab的命令,我想我应该试试;我相信
subst
是一个类似于maxima的命令,我无法工作
ev
是maxima的一个命令,用于计算
ev(expr,[变量],[值])
但我已将J保存为雅可比命令,
jacobian
在尝试区分常数时不起作用;也不应该。如果你对雅可比矩阵还有疑问,我很乐意提供帮助。对不起,我以为你指的“极大值”是指使用牛顿方法来寻找局部极大值,而不是编程语言的意义。我熟悉雅各比派。在这种情况下,牛顿的方法是方程x{n+1}=x_n-(Jinv)(x_n)*F(x_n),其中Jinv是雅可比矩阵的逆。但是现在我不确定你的困难在哪里:你在寻找雅可比矩阵,它的逆矩阵,或者它在当前情况下的应用方面有困难吗?不用担心,我的困难在于我可以找到雅可比矩阵,J,但它是一个包含24个变量的表达式。我想不出一种计算J(x_n)的方法。。也就是说,我有J(),我不知道如何在WXMaxima中插入数值。这似乎意味着你的问题实际上不是关于数学或牛顿方法,而是关于计算函数的极大值。从我的专长到我一无所知的东西。很抱歉
(%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 ]