Страница 1 из 1

Одна и та же ошибка и в Mathematica 7, и в Maple 11

Добавлено: Пт май 06, 2011 3:03 pm
Selin
Уважаемые форумчане. В 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

Maple Help

Добавлено: Пт май 06, 2011 3:36 pm
hirnyk
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

Добавлено: Пт май 06, 2011 9:25 pm
hirnyk
algsubs(f(t)^3 = h(t)+t*w(t), numer((g(t)^(f(t)^3)+g(t+sin(f(t)^3)+a))/f(t)^3))/algsubs(f(t)^3 = h(t)+t*w(t), denom((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))+5))/(h(t)+t*w(t))

Re: Одна и та же ошибка и в Mathematica 7, и в Maple 11

Добавлено: Пт май 06, 2011 9:38 pm
алексей_алексей
А если вот так?
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);

Re: Одна и та же ошибка и в Mathematica 7, и в Maple 11

Добавлено: Пт май 06, 2011 9:50 pm
алексей_алексей
И так, вроде, получается:
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`);

Добавлено: Пт май 06, 2011 9:59 pm
Selin
Все это так на частных примерах и subs может дать корректный результат, но в общем случае и в Мапл, и в Математика здесь явная недоработка с подстановками. Где-то читал об этом у Аладьева, но найти не могу. Вот проблема даже в примитианом случае

> subs(x^2=h,1/x^2); # Maple 11

1
----
2
x

Правда имеющаяся у меня одна из аерсий его библиотеки дает

> Subs(x^2=h,1/x^2); # Maple 11



1/h

Добавлено: Сб май 07, 2011 11:06 am
abobroff
как и у 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)])));

Добавлено: Сб май 07, 2011 1:25 pm
hirnyk
`1`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)]))
1
------------------------------------------------------------------
(h(t) + t w(t))
g(t) + g(t + sin(h(t) + t w(t)) + 5), h(t) + t w(t)


Добавлено: Вс май 08, 2011 2:22 pm
Aivar
С Днем Победы!!!

Все представленные примеры и даже более в обоих пакетах решает одноименная процедура 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.

Добавлено: Пт июл 01, 2011 12:55 pm
Selin
Solution of the problem can be found in the book http://search.barnesandnoble.com/Modula ... 1596822689

Добавлено: Пн дек 24, 2012 4:18 pm
xyz
Книга http://www.aladjev.narod.ru/Mathematica.htm более доступна и, скорее всего, содержит более развитые средства для обеспечения алгебраических подстановок. Используя том факт, что процедуры Mathematica относительно несложно конвертируются в Maple, подобные подходы можно использовать и в последнем. Тем паче, как правило, источники многих ошибок для обоих средств одинаковы.

Добавлено: Пн дек 24, 2012 7:49 pm
Vasiliev
К сожалению, эта недоработка свойственна также и более старшим версиям и Maple (например, 15), и Mathematica (например, 8, 9). С упомянутым средством работаю в обоих системах.