Выражения, с которыми я работаю, слишком сложны, чтобы их можно было полностью ввести здесь, но я включил простые примеры, которые выдвигают на первый план проблему, с которой я сталкиваюсь.Я надеюсь, что есть кто-то с достаточной стойкостью программирования, чтобы помочь мне обойти эту проблему.Позвольте мне предвосхитить это, сказав, что у меня мало общего с программированием, но я знаю основы Mathematica.Любая помощь очень ценится.Предположим, я настроил следующие функции:
X[x_] := x Log[x]
X[0] := 0
Y[y_] := y Log[y]
Y[0] := 0
Z[z_] := z Log[z]
A[x_, y_, z_] := X[x] + Y[y] + Z[z]
In[7]:= A[x, y, z]
Out[7]= x Log[x] + y Log[y] + z Log[z]
In[8]:= B[x_, y_, z_] :=
Evaluate[A[x, y, z] - x*D[A[x, y, z], x] - y*D[A[x, y, z], y] -
z*D[A[x, y, z], z]]
In[9]:= B[x, y, z]
Out[9]= x Log[x] - x (1 + Log[x]) + y Log[y] - y (1 + Log[y]) +
z Log[z] - z (1 + Log[z])
Я установил A[x,y,z]
с правилами для X[x]
, Y[y]
и Z[z]
, чтобы он мог обрабатывать случай, когда x,y,z == 0
, т.е. когда x == 0
Я хочу, чтобы все выражения в A[x,y,z]
с x
обращались в ноль или игнорировались, включая Log[x]
.Я определил функцию B[x,y,z]
, которая включает в себя частные производные A[x,y,z]
.Теперь я хочу получить результат, чтобы B[0,y,z]
давал
yLog[y]-y(1+Log[y])+zLog[z]-z(1+Log[z])
, то есть, по сути, возвращался и делал A[x,y,z]:= Y[y]+Z[z]
, но вместо этого я сейчас сталкиваюсь со следующей, понятной ошибкой:
Infinity :: indet: найдено неопределенное выражение 0 (- [Infinity]).>>
Должен быть какой-то способ обойти это с Mathematica, и мне интересно, будет ли это включать функцию Hold или что-то связанное.Спасибо всем за помощь.