Changeset 5575:c186846c332a
Legend:
- Unmodified
- Added
- Removed
-
sage/rings/polynomial/multi_polynomial_ring_generic.pyx
r4747 r5575 5 5 import multi_polynomial_ideal 6 6 from term_order import TermOrder 7 from sage.rings.integer_ring import ZZ 8 from sage.rings.polynomial.polydict import PolyDict 9 import multi_polynomial_element 7 10 8 11 def is_MPolynomialRing(x): … … 250 253 251 254 255 def random_element(self,degree,terms=5,*args,**kwds): 256 """ 257 Generate a random polynomial in this ring 258 INPUT: 259 degree -- maximum total degree of resulting polynomial 260 terms -- maximum number of terms to generate 261 262 OUTPOUT: a random polynomial of total degree \code{degree} 263 and with \code{term} terms in it 264 265 EXAMPLES: 266 sage: R = MPolynomialRing(ZZ, 'x,y',2 ); 267 sage: R.random_element(2) #random 268 -1*x*y + x + 15*y - 2 269 270 sage: R.random_element(12) #random 271 x^4*y^5 + x^3*y^5 + 6*x^2*y^2 - x^2 272 273 sage: R.random_element(12,3) #random 274 -3*x^4*y^2 - x^5 - x^4*y 275 276 sage: R.random_element(3) # random 277 2*y*z + 2*x + 2*y 278 279 sage: R = MPolynomialRing(RR, 'x,y',2 ); 280 sage: R.random_element(2) # random 281 -0.645358174399450*x*y + 0.572655401740132*x + 0.197478565033010 282 283 sage: R.random_element(41) # random 284 -4*x^6*y^4*z^4*a^6*b^3*c^6*d^5 + 1/2*x^4*y^3*z^5*a^4*c^5*d^6 - 5*x^3*z^3*a^6*b^4*c*d^5 + 10*x^2*y*z^5*a^4*b^2*c^3*d^4 - 5*x^3*y^5*z*b^2*c^5*d 285 286 AUTHOR: 287 -- didier deshommes 288 """ 289 # General strategy: 290 # generate n-tuples of numbers with each element in the tuple 291 # not greater than (degree/n) so that the degree 292 # (ie, the sum of the elements in the tuple) does not exceed 293 # their total degree 294 295 n = self.__ngens # length of the n-tuple 296 max_deg = int(degree/n) # max degree for each term 297 R = self.base_ring() 298 299 # restrict exponents to positive integers only 300 _exponents = [ tuple([ZZ.random_element(0,max_deg+1) for _ in range(n)]) 301 for _ in range(terms) ] 302 _coeffs = [R.random_element(*args,**kwds) for _ in range(terms)] 303 304 d = dict( zip(tuple(_exponents),_coeffs) ) 305 return self(multi_polynomial_element.MPolynomial_polydict(self, PolyDict(d))) 306 307 252 308 #################### 253 309 # Leave *all* old versions!
Note: See TracChangeset
for help on using the changeset viewer.
