Уважаемые форумчане. В Maple 11 с использованием algsubs не выполняется правильно простая подстановка. Не дает результата и использование функции ReplaceAll в Mathematica 7. Нельзя ли получить ваши соображения по этой задачке. Заранее благодарен.
> algsubs(f(t)^3 = h(t) + t*w(t), (g(t)^(f(t)^3) + g(t + sin(f(t)^3) + a))/f(t)^3);
(g(t)^(h(t) + t*w(t)) + g(t + sin(h(t) + t*w(t)) + a))/f(t)^3
In[234]:= ReplaceAll[(g[t]^f[t]^3 + g[t + Sin[f[t]^3] + a])/f[t]^3, f[t]^3 -> h[t] + t*w[t]]
Out[234]= (g[t]^(h[t] + t*w[t]) + g[a + t + Sin[h[t] + t*w[t]]])/f[t]^3
Одна и та же ошибка и в Mathematica 7, и в Maple 11
Модератор: Admin
Maple Help
Note that the requirement for monomials in a to divide monomials in f means that the negative powers of u in the following example are not substituted, and must be handled separately as shown.
f := a/u^4+b/u^2+c+d*u^2+e*u^4:
algsubs(u^2=v,f);
a/u^4+b/u^2+c+d*v+e*v^2
f := a/u^4+b/u^2+c+d*u^2+e*u^4:
algsubs(u^2=v,f);
a/u^4+b/u^2+c+d*v+e*v^2
-
- Сообщения: 1776
- Зарегистрирован: Вс май 01, 2005 9:02 pm
Re: Одна и та же ошибка и в Mathematica 7, и в Maple 11
А если вот так?
restart;
subs(f(t)^n = h(t)+t*w(t), (g(t)^(f(t)^n)+g(t+sin(f(t)^n)+a))/f(t)^n);
restart;
subs(f(t)^n = h(t)+t*w(t), (g(t)^(f(t)^n)+g(t+sin(f(t)^n)+a))/f(t)^n);
-
- Сообщения: 1776
- Зарегистрирован: Вс май 01, 2005 9:02 pm
Re: Одна и та же ошибка и в Mathematica 7, и в Maple 11
И так, вроде, получается:
restart;
subs(f(t)^`3` = h(t)+t*w(t), (g(t)^(f(t)^`3`)+g(t+sin(f(t)^`3`)+a))/f(t)^`3`);
restart;
subs(f(t)^`3` = h(t)+t*w(t), (g(t)^(f(t)^`3`)+g(t+sin(f(t)^`3`)+a))/f(t)^`3`);
Все это так на частных примерах и subs может дать корректный результат, но в общем случае и в Мапл, и в Математика здесь явная недоработка с подстановками. Где-то читал об этом у Аладьева, но найти не могу. Вот проблема даже в примитианом случае
> subs(x^2=h,1/x^2); # Maple 11
1
----
2
x
Правда имеющаяся у меня одна из аерсий его библиотеки дает
> Subs(x^2=h,1/x^2); # Maple 11
1/h
> subs(x^2=h,1/x^2); # Maple 11
1
----
2
x
Правда имеющаяся у меня одна из аерсий его библиотеки дает
> Subs(x^2=h,1/x^2); # Maple 11
1/h
как и у hirnyk
Код: Выделить всё
`/`(op(algsubs(f(t)^3 = h(t) + t*w(t),[(numer,denom)((g(t)^(f(t)^3) + g(t + sin(f(t)^3) + a))/f(t)^3)])));
С Днем Победы!!!
Все представленные примеры и даже более в обоих пакетах решает одноименная процедура Subs проф. Аладьева (http://www.aladjev.narod.ru). Привожу несколько типичных примеров:
Mathematica 8
===========
In[11]:= Subs[(g[t]^f[t]^3 + g[t + Sin[f[t]^3] + a])/f[t]^3, f[t]^3, h[t] + t*w[t]]
Out[11]= (g[t]^(h[t] + t*w[t]) + g[a + t + Sin[h[t] + t*w[t]]])/(h[t] + t*w[t])
In[12]:= ReplaceAll[(a + 1/f[y]^2)/f[y]^2, f[y]^2 -> Sin[x] + Cos[x]]
Out[12]= (a + 1/f[y]^2)/f[y]^2
In[13]:= Subs[(a + 1/f[y]^2)/f[y]^2, f[y]^2, Sin[x] + Cos[x]]
Out[13]= (1 + a Cos[x] + a Sin[x])/(Cos[x] + Sin[x])^2
In[14]:= Subs[a/u^4 + b/u^2 + c + d*u^2 + e*u^4, u^2, v]
Out[14]= c + a/u^4 + e u^4 + b/v + d v
In[15]:= Subs[1/x^2, x^2, h]
Out[15]= 1/h
In[16]:= ReplaceAll[1/x^2, x^2 -> h]
Out[16]= 1/x^2
In[17]:= ReplaceAll[1 + 1/(x^2 + 1/(x^2 + 1/x^2)), x^2 -> h]
Out[17]= 1 + 1/(h + 1/(h + 1/x^2))
In[18]:= Subs[1 + 1/(x^2 + 1/(x^2 + 1/x^2)), x^2, h]
Out[18]= 1 + 1/(h + 1/(1/h + h))
In[19]:= ReplaceAll[x^2/(x^2 + 1/x^2) + b*x^2/(2 + x^2) + (c + 1)/x^2, x^2 -> y^2 + h]
Out[19]= (1 + c)/x^2 + (b (h + y^2))/(2 + h + y^2) + (h + y^2)/( h + 1/x^2 + y^2)
In[20]:= Subs[x^2/(x^2 + 1/x^2) + b*x^2/(2 + x^2) + (c + 1)/x^2, x^2, y^2 + h]
Out[20]= (1 + c)/(h + y^2) + (b (h + y^2))/(2 + h + y^2) + (h + y^2)/(h + y^2 + 1/(h + y^2))
Maple 11
=======
> Subs(f(t)^3 = h(t) + t*w(t), (g(t)^(f(t)^3) + g(t + sin(f(t)^3) + a))/f(t)^3);
(g(t)^(h(t) + t*w(t)) + g(t + sin(h(t) + t*w(t)) + a))/(h(t) + t*w(t))
> algsubs(f(y)^2 = sin(x), (a + 1/f(y)^2)/f(y)^2);
(a+1/(f(y)^2))/f(y)^2
> Subs(f(y)^2 = sin(x), (a + 1/f(y)^2)/f(y)^2);
(a*sin(x) + 1)/sin(x)^2
> Subs(u^2 = v, a/u^4 + b/u^2 + c + d*u^2 + e*u^4);
(a*v + b*u^4 + c*u^4*v + d*v^2*u^4 + e*u^8*v)/(u^4*v)
> Subs(x^2 = h,1/x^2);
1/h
> subs(x^2 = h, 1/x^2);
1/(x^2)
> algsubs(x^2 = h, 1/x^2);
1/(x^2)
> Subs(x^2=h, 1+1/(x^2+1/(x^2+1/x^2)));
(h^3+2*h+h^2+1)/(h*(h^2+2))
> subs(x^2=h, 1+1/(x^2+1/(x^2+1/x^2)));
1+1/(h+1/(h+1/(x^2)))
> algsubs(x^2=h, 1+1/(x^2+1/(x^2+1/x^2)));
1+1/(h+1/(h+1/(x^2)))
> subs(x^2 = y^2 + h, x^2/(x^2 + 1/x^2) + b*x^2/(2 + x^2) + (c + 1)/x^2);
(y^2+h)/(y^2+h+1/(x^2))+b*(y^2+h)/(2+y^2+h)+(c+1)/x^2
> algsubs(x^2 = y^2 + h, x^2/(x^2 + 1/x^2) + b*x^2/(2 + x^2) + (c + 1)/x^2);
(y^2+h)/(y^2+h+1/(x^2))+b*(y^2+h)/(2+y^2+h)+(c+1)/x^2
> Subs(x^2 = y^2 + h, x^2/(x^2 + 1/x^2) + b*x^2/(2 + x^2) + (c + 1)/x^2);
(2+3*c*y^4*h+2*c+h+y^2+4*y^2*h+2*h^2+9*y^4*h+9*y^2*h^2+4*y^6*h+6*y^4*h^2+4*y^2*h^3+b*y^8+4*b*y^6*h+6*b*y^4*h^2+4*b*y^2*h^3+2*b*y^2*h+4*c*y^2*h+3*c*y^2*h^2+2*y^4+3*y^6+3*h^3+y^8+h^4+b*y^4+b*h^4+b*h^2+2*c*y^4+2*c*h^2+c*y^6+c*h^3+c*y^2+c*h)/(y^4+2*y^2*h+h^2+1)/(2+y^2+h)/(y^2+h)
Я использую эту процедуру как в Mathematica 6/7/8, так и в Maple 10/11.
Все представленные примеры и даже более в обоих пакетах решает одноименная процедура Subs проф. Аладьева (http://www.aladjev.narod.ru). Привожу несколько типичных примеров:
Mathematica 8
===========
In[11]:= Subs[(g[t]^f[t]^3 + g[t + Sin[f[t]^3] + a])/f[t]^3, f[t]^3, h[t] + t*w[t]]
Out[11]= (g[t]^(h[t] + t*w[t]) + g[a + t + Sin[h[t] + t*w[t]]])/(h[t] + t*w[t])
In[12]:= ReplaceAll[(a + 1/f[y]^2)/f[y]^2, f[y]^2 -> Sin[x] + Cos[x]]
Out[12]= (a + 1/f[y]^2)/f[y]^2
In[13]:= Subs[(a + 1/f[y]^2)/f[y]^2, f[y]^2, Sin[x] + Cos[x]]
Out[13]= (1 + a Cos[x] + a Sin[x])/(Cos[x] + Sin[x])^2
In[14]:= Subs[a/u^4 + b/u^2 + c + d*u^2 + e*u^4, u^2, v]
Out[14]= c + a/u^4 + e u^4 + b/v + d v
In[15]:= Subs[1/x^2, x^2, h]
Out[15]= 1/h
In[16]:= ReplaceAll[1/x^2, x^2 -> h]
Out[16]= 1/x^2
In[17]:= ReplaceAll[1 + 1/(x^2 + 1/(x^2 + 1/x^2)), x^2 -> h]
Out[17]= 1 + 1/(h + 1/(h + 1/x^2))
In[18]:= Subs[1 + 1/(x^2 + 1/(x^2 + 1/x^2)), x^2, h]
Out[18]= 1 + 1/(h + 1/(1/h + h))
In[19]:= ReplaceAll[x^2/(x^2 + 1/x^2) + b*x^2/(2 + x^2) + (c + 1)/x^2, x^2 -> y^2 + h]
Out[19]= (1 + c)/x^2 + (b (h + y^2))/(2 + h + y^2) + (h + y^2)/( h + 1/x^2 + y^2)
In[20]:= Subs[x^2/(x^2 + 1/x^2) + b*x^2/(2 + x^2) + (c + 1)/x^2, x^2, y^2 + h]
Out[20]= (1 + c)/(h + y^2) + (b (h + y^2))/(2 + h + y^2) + (h + y^2)/(h + y^2 + 1/(h + y^2))
Maple 11
=======
> Subs(f(t)^3 = h(t) + t*w(t), (g(t)^(f(t)^3) + g(t + sin(f(t)^3) + a))/f(t)^3);
(g(t)^(h(t) + t*w(t)) + g(t + sin(h(t) + t*w(t)) + a))/(h(t) + t*w(t))
> algsubs(f(y)^2 = sin(x), (a + 1/f(y)^2)/f(y)^2);
(a+1/(f(y)^2))/f(y)^2
> Subs(f(y)^2 = sin(x), (a + 1/f(y)^2)/f(y)^2);
(a*sin(x) + 1)/sin(x)^2
> Subs(u^2 = v, a/u^4 + b/u^2 + c + d*u^2 + e*u^4);
(a*v + b*u^4 + c*u^4*v + d*v^2*u^4 + e*u^8*v)/(u^4*v)
> Subs(x^2 = h,1/x^2);
1/h
> subs(x^2 = h, 1/x^2);
1/(x^2)
> algsubs(x^2 = h, 1/x^2);
1/(x^2)
> Subs(x^2=h, 1+1/(x^2+1/(x^2+1/x^2)));
(h^3+2*h+h^2+1)/(h*(h^2+2))
> subs(x^2=h, 1+1/(x^2+1/(x^2+1/x^2)));
1+1/(h+1/(h+1/(x^2)))
> algsubs(x^2=h, 1+1/(x^2+1/(x^2+1/x^2)));
1+1/(h+1/(h+1/(x^2)))
> subs(x^2 = y^2 + h, x^2/(x^2 + 1/x^2) + b*x^2/(2 + x^2) + (c + 1)/x^2);
(y^2+h)/(y^2+h+1/(x^2))+b*(y^2+h)/(2+y^2+h)+(c+1)/x^2
> algsubs(x^2 = y^2 + h, x^2/(x^2 + 1/x^2) + b*x^2/(2 + x^2) + (c + 1)/x^2);
(y^2+h)/(y^2+h+1/(x^2))+b*(y^2+h)/(2+y^2+h)+(c+1)/x^2
> Subs(x^2 = y^2 + h, x^2/(x^2 + 1/x^2) + b*x^2/(2 + x^2) + (c + 1)/x^2);
(2+3*c*y^4*h+2*c+h+y^2+4*y^2*h+2*h^2+9*y^4*h+9*y^2*h^2+4*y^6*h+6*y^4*h^2+4*y^2*h^3+b*y^8+4*b*y^6*h+6*b*y^4*h^2+4*b*y^2*h^3+2*b*y^2*h+4*c*y^2*h+3*c*y^2*h^2+2*y^4+3*y^6+3*h^3+y^8+h^4+b*y^4+b*h^4+b*h^2+2*c*y^4+2*c*h^2+c*y^6+c*h^3+c*y^2+c*h)/(y^4+2*y^2*h+h^2+1)/(2+y^2+h)/(y^2+h)
Я использую эту процедуру как в Mathematica 6/7/8, так и в Maple 10/11.
Solution of the problem can be found in the book http://search.barnesandnoble.com/Modula ... 1596822689
Книга http://www.aladjev.narod.ru/Mathematica.htm более доступна и, скорее всего, содержит более развитые средства для обеспечения алгебраических подстановок. Используя том факт, что процедуры Mathematica относительно несложно конвертируются в Maple, подобные подходы можно использовать и в последнем. Тем паче, как правило, источники многих ошибок для обоих средств одинаковы.