Hi Simon!

On 11/17/2010 08:33 AM, Simon King wrote:
On 16 Nov., 23:48, Johannes Huisman<johannes.huis...@gmail.com>
wrote:
Does sage have a command for polynomial division by increasing powers? I
could not find such a command. Of course, one may use power series
division in order to compute the quotient, but it would be neat if one
could avoid all that.

What exactly do you expect?

Well, it is maybe nonstandard terminolgy, but I meant the division of a polynomial a by a polynomial b that is of the form

a = q*b + x^(n+1)*r

where q and r are polynomials, with q of degree less than or equal to n. Such a division exists and is unique if b(0)!=0 and the coefficients constitute a field, for example. I was wondering whether there is a sage command that returns q and r as above, for given a, b and n. It can be useful in several situations.

As you observe, one can obtain q by computing a/b as a power series with the right precision, and then determine r. It is, however, somewhat annoying for pedagogical reasons, to have to use the notion of power series in order to compute something that is defined purely in terms of polynomials. But maybe, I'm exaggerating. Anyway, I certainly did not want to propose that Frac(QQ[x]) be a power series ring in sage!

Thanks a lot,

Johannes


For example:

sage: P.<x>  = QQ[]
sage: p = P.random_element()
sage: q = P.random_element()
sage: p
4/3*x^2 - x + 7
sage: q
2/7*x^2 - x

1.
Apparently you do not want that the quotient of p and q lives in the
fraction field, as it is currently the case:
sage: p/q
(4/3*x^2 - x + 7)/(2/7*x^2 - x)

2.
Do you need the "quotient with remainder"? Then you could do
sage: p.quo_rem(q)
(14/3, 11/3*x + 7)

3.
Or do you want that the quotient of p and q actually is a power
series? So, like this:
sage: p/q  # not implemented
-7*x^-1 - 1 - 34/21*x - 68/147*x^2 - 136/1029*x^3 - 272/7203*x^4 -
544/50421*x^5 - 1088/352947*x^6 - 2176/2470629*x^7 - 4352/17294403*x^8
- 8704/121060821*x^9 - 17408/847425747*x^10 - 34816/5931980229*x^11 -
69632/41523861603*x^12 - 139264/290667031221*x^13 -
278528/2034669218547*x^14 - 557056/14242684529829*x^15 -
1114112/99698791708803*x^16 - 2228224/697891541961621*x^17 -
4456448/4885240793731347*x^18 + O(x^19)

Possibility 3. requires that Frac(P) does not return a formal fraction
field (which is currently the case) but a power series ring. I am sure
that it would require much persuasion and a poll on sage-devel if one
wants such change.

Also note that the term order in P and Q differs (with the additional
complication that Q(p) does not have an attribute leading_coefficient,
but p does).
sage: p
4/3*x^2 - x + 7
sage: Q(p)
7 - x + 4/3*x^2


So, if what you want is 3., then currently you have to use the power
series ring manually, such as:
sage: Q = PowerSeriesRing(QQ,'x')
sage: Q(p)/q  # q is automatically coerced into Q
-7*x^-1 - 1 - 34/21*x - 68/147*x^2 - 136/1029*x^3 - 272/7203*x^4 -
544/50421*x^5 - 1088/352947*x^6 - 2176/2470629*x^7 - 4352/17294403*x^8
- 8704/121060821*x^9 - 17408/847425747*x^10 - 34816/5931980229*x^11 -
69632/41523861603*x^12 - 139264/290667031221*x^13 -
278528/2034669218547*x^14 - 557056/14242684529829*x^15 -
1114112/99698791708803*x^16 - 2228224/697891541961621*x^17 -
4456448/4885240793731347*x^18 + O(x^19)

Cheers,
Simon



--
http://pageperso.univ-brest.fr/~huisman

--
To post to this group, send email to sage-support@googlegroups.com
To unsubscribe from this group, send email to 
sage-support+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/sage-support
URL: http://www.sagemath.org

Reply via email to