我应该如何评估千里马中某个点的函数?

时间:2014-05-13 13:58:18

标签: substitution evaluation maxima

我想在方向V:

的点p处取出函数omega的方向导数
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);

这样可行,但这两个替换看起来有点hacky。有没有更好的方式来说'在p和p + t * V'评估omega?

我知道有更好的方法可以做到这一点!我希望能够从最初的原则开始(因为我有更复杂的版本,没有内置的内容)。

1 个答案:

答案 0 :(得分:2)

我至少可以看到两种方法;我们也可以找到其他人。

(%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定义为函数。