# algebraic substitution

How can I imitate the algsubs function of Maple? A little example:

p = x^18

algsubs(x^2=x+1,p)

The reult in Maple is:

x^9+9x^8+36x^7+84x^6+126x^5+126x^4+84x^3+36x^2+9x+1.

edit retag close merge delete

What is the mathematical meaning of this function ? If you want x^2 to be equal to x+1, then the optimal result would be a polynomial of degree 1, namely 2584*x + 1597.

( 2014-02-06 14:57:54 +0100 )edit

Sort by ยป oldest newest most voted

It seems that there are not the same function in sagemath but we can use " ratsubst " function of maxima

sage : maxima('p:x^18')
sage : maxima('ratsubst(a+1,x^2,p)')

how to use certain maxima functions (e.g. ratsubst)?

more
var('y')
P = x^18
eqn = x^2 == y + 1
soln = solve(eqn,x)
P = P.subs(x=soln[0].rhs())
P.expand().subs(y=x)
more

It works only for even powers.

( 2014-02-06 14:06:33 +0100 )edit

For example, if P = x^17 = x^16*x=(x^2)^4*x=(x+1)^4*x. But it is impossible with this method.

( 2014-02-06 14:08:24 +0100 )edit

Out of curiosity, what do you want when you have x^{17}? Something with a square root? And if so, which square root?

( 2014-02-06 14:30:50 +0100 )edit