Как я должен оценить функцию в точке в Maxima?

Я хочу взять производную функции омега по направлению в точке p в направлении V:

omega:x*y*z*z;
p:[2,3,-1];
V:[1,2,3];

p2:p+t*V;

sp:[x=p[1],y=p[2],z=p[3]];
sp2:[x=p2[1],y=p2[2],z=p2[3]];

deltaomega:subst(sp2,omega)-subst(sp,omega);
slope:ratsimp(deltaomega/t);
gVomega:limit(slope,t,0);

Это работает, но две замены кажутся немного хакерскими. Есть ли лучший способ сказать «оценить омегу в p и p + t * V»?

Я знаю, что есть лучшие способы сделать это! Я хочу иметь возможность сделать это из первых принципов (потому что я имею в виду более сложные версии, для которых нет встроенных модулей).


person John Lawrence Aspden    schedule 13.05.2014    source источник


Ответы (1)


Я вижу как минимум два способа сделать это; мы, вероятно, можем найти и другие.

(%i1) omega (x, y, z) := x * y * z^2 $
(%i2) p : [2, 3, -1] $
(%i3) V : [1, 2, 3] $
(%i4) p2 : p + t * V $
(%i5) deltaomega : apply (omega, p2) - apply (omega, p);
                                                  2
(%o5)                  (t + 2) (2 t + 3) (3 t - 1)  - 6

... а в остальном то же самое. Или определите omega, чтобы его аргумент был списком:

(%i1) omega (p) := p[1] * p[2] * p[3]^2 $ 
(%i2) p : [2, 3, -1] $
(%i3) V : [1, 2, 3] $
(%i4) p2 : p + t * V $
(%i5) deltaomega : omega (p2) - omega (p);
                                                  2
(%o5)                  (t + 2) (2 t + 3) (3 t - 1)  - 6

Обратите внимание, что в обоих случаях я определил omega как функцию.

person Robert Dodier    schedule 13.05.2014