你可以把自己的特殊定义全部写在语句 Unprotect[D]; 与 Protect[D]; 之间,就想下面这样子。
Unprotect[D];
D[(x_ - a_)^r_, {x_, a_}] :=
Gamma[r + 1]/Gamma[-a + r + 1]*(x - a)^(r - a);
Protect[D];
因为 D 是内置函数,所以尽量还是不要修改其定义。
也可以用模式替换的方法,具体我就不多说了,
D[(x_ - a_)^r_, {x_, a_}]-> Gamma[r+1]/Gamma[-a+r+1]*(x-a)^(r-a)
上面的语句,本人没有测试,只是说明一下方法,还不知道怎么用的话,就看帮助吧,有点Mathematica 基础的话应该没问题,否则的话,就直接建议你不要这样做了。何况我也不明白你的定义,也不晓得那两个 a 是否是一样的。