Вы написали: «b = a ^ 3 - единственный случай, когда возможно неопределенное решение».
Следовательно, похоже, что вы сделали опечатку со своими скобками и намеревались вместо этого использовать выражение,
expr := (a-b)/(b-a^3);
Команда discont
обрабатывает этот пример.
discont(expr, b);
/ 3\
{ a }
\ /
Если у вас есть более сложные выражения, пожалуйста, покажите их (и ограничения на другие параметры, такие как a
, не повредятчтобы знать, если у вас есть такой).
Трудно ответить правильно, если вы не показываете свой фактический пример, явно и полностью.
[править] Хорошо, вы опубликовали большевовлеченный пример в другом месте.Вы можете использовать команды discont
или singular
.
expr2 := tan(a*(b+log(1+(epsilon*a*r)/(c*s)))/2):
ans := [singular(expr2, {c, b})]:
ans := map[2](remove,u->lhs(u)=rhs(u), ans):
lprint(%);
[{c = 0}, {c = -epsilon*a*r/s},
{b = - (-2*_Z1*Pi+a*ln((a*epsilon*r+c*s)/(c*s))-Pi)/a}]
eval(expr2, ans[1]);
Error, numeric exception: division by zero
eval(expr2, ans[2]);
Error, (in ln) numeric exception: division by zero
eval(expr2, ans[3]):
simplify(%);
Error, (in tan) numeric exception: division by zero
ans1 := map[2](`=`,c,discont(expr2, c)):
lprint(%);
{c = 0, c = epsilon*a*r/(s*(exp((2*Pi*_Z2-a*b+Pi)/a)-1)),
c = -epsilon*a*r/s}
ans2 := map[2](`=`,b,discont(expr2, b)):
lprint(%);
{b = -(a*ln((a*epsilon*r+c*s)/(c*s))-2*Pi*_Z3-Pi)/a}
eval(expr2, ans1[1]);
Error, numeric exception: division by zero
eval(expr2, ans1[2]):
simplify(%) assuming real:
Error, (in assuming) when calling 'cot'. Received: 'numeric exception: division by zero'
eval(expr2, ans1[3]);
Error, (in ln) numeric exception: division by zero
eval(expr2, ans2[1]):
simplify(%) assuming real;
Error, (in assuming) when calling 'cot'. Received: 'numeric exception: division by zero'