用数字代替参与微分的变量

Substitute number for a variable that is involved in differentiation

我有一些表达式涉及 y(x) 关于 x 的导数。下面是一个例子。我需要在这些表达式中替换 x = 0,以去掉零项。

P: x*%e^x*y+%e^x*y-
   %e^x*log(x+1)*('diff(y(x),x,2))-
   %e^x*log(x+1)*('diff(y(x),x,1))-
   (%e^x*('diff(y(x),x,1)))/(x+1);

但是当我尝试

P, x = 0;

subst(x = 0, P);

我收到错误

diff: variable must not be a number; found: 0

所以它不想把x = 0放在diff(y(x), x)中。有什么办法可以用 x = 0 代替 x 外微分 的出现吗?我的表达式非常复杂,所以我真的需要去掉这些为 0 的项。

at 表示表达式的值,但要小心避免将字面量值替换为对其无效的表达式,例如 diff。来自问题陈述:

(%i2) P: x*%e^x*y+%e^x*y-
   %e^x*log(x+1)*('diff(y(x),x,2))-
   %e^x*log(x+1)*('diff(y(x),x,1))-
   (%e^x*('diff(y(x),x,1)))/(x+1);
                                         2
          x       x       x             d
(%o2) x %e  y + %e  y - %e  log(x + 1) (--- (y(x)))
                                          2
                                        dx
                                                    x  d
                                                  %e  (-- (y(x)))
                       x             d                 dx
                   - %e  log(x + 1) (-- (y(x))) - ---------------
                                     dx                x + 1
(%i3) at(P, x = 0); 
                                    !
                           d        !
(%o3)                  y - -- (y(x))!
                           dx       !
                                    !x = 0

澄清一下,除了 diffintegrate 和其他包含虚拟变量的表达式外,at 实际上只是替换字面值。

(%i4) at(sin(x) + cos(x), x = a);
(%o4)                    sin(a) + cos(a)

我发现原始问题陈述有问题——它同时包含 yy(x)——这使得以后很难用某些实际函数替换 y。如果这很重要,您可能希望始终使用 y(x),或者说 depends(y, x) 然后始终使用 y