Random quadratic forms - Quadratic Forms

Skip to content
Back to top
View this page
Edit this page

# Random quadratic forms

This file contains a set of routines to create a random quadratic form.

sage.quadratic_forms.random_quadraticform.random_quadraticform(R, n, rand_arg_list=None)

  Create a random quadratic form in \(n\) variables defined over the ring \(R\).

  The last (and optional) argument `rand_arg_list` is a list of at most 3 elements which is passed (as at most 3 separate variables) into the method `R.random_element()`.

  INPUT:

  - `R` – a ring

  - `n` – integer \(\ge 0\)

  - `rand_arg_list` – list of at most 3 arguments which can be taken by `R.random_element()`

  OUTPUT: a quadratic form over the ring \(R\)

  EXAMPLES:

  Sage

      sage: random_quadraticform(ZZ, 3, [1,5])    # random
      Quadratic form in 3 variables over Integer Ring with coefficients:
      [ 3 2 3 ]
      [ * 1 4 ]
      [ * * 3 ]

      sage: random_quadraticform(ZZ, 3, [-5,5])    # random
      Quadratic form in 3 variables over Integer Ring with coefficients:
      [ 3 2 -5 ]
      [ * 2 -2 ]
      [ * * -5 ]

      sage: random_quadraticform(ZZ, 3, [-50,50])    # random
      Quadratic form in 3 variables over Integer Ring with coefficients:
      [ 1 8 -23 ]
      [ * 0 0 ]
      [ * * 6 ]

  Python

      >>> from sage.all import *
      >>> random_quadraticform(ZZ, Integer(3), [Integer(1),Integer(5)])    # random
      Quadratic form in 3 variables over Integer Ring with coefficients:
      [ 3 2 3 ]
      [ * 1 4 ]
      [ * * 3 ]

      >>> random_quadraticform(ZZ, Integer(3), [-Integer(5),Integer(5)])    # random
      Quadratic form in 3 variables over Integer Ring with coefficients:
      [ 3 2 -5 ]
      [ * 2 -2 ]
      [ * * -5 ]

      >>> random_quadraticform(ZZ, Integer(3), [-Integer(50),Integer(50)])    # random
      Quadratic form in 3 variables over Integer Ring with coefficients:
      [ 1 8 -23 ]
      [ * 0 0 ]
      [ * * 6 ]

sage.quadratic_forms.random_quadraticform.random_quadraticform_with_conditions(R, n, condition_list=[], rand_arg_list=None)

  Create a random quadratic form in \(n\) variables defined over the ring \(R\) satisfying a list of boolean (i.e. True/False) conditions.

  The conditions \(c\) appearing in the list must be boolean functions which can be called either as `Q.c()` or `c(Q)`, where `Q` is the random quadratic form.

  The last (and optional) argument `rand_arg_list` is a list of at most 3 elements which is passed (as at most 3 separate variables) into the method `R.random_element()`.

  EXAMPLES:

  Sage

      sage: check = QuadraticForm.is_positive_definite
      sage: Q = random_quadraticform_with_conditions(ZZ, 3, [check], [-5, 5])
      sage: Q    # random
      Quadratic form in 3 variables over Integer Ring with coefficients:
      [ 3 -2 -5 ]
      [ * 2 2 ]
      [ * * 3 ]

  Python

      >>> from sage.all import *
      >>> check = QuadraticForm.is_positive_definite
      >>> Q = random_quadraticform_with_conditions(ZZ, Integer(3), [check], [-Integer(5), Integer(5)])
      >>> Q    # random
      Quadratic form in 3 variables over Integer Ring with coefficients:
      [ 3 -2 -5 ]
      [ * 2 2 ]
      [ * * 3 ]

sage.quadratic_forms.random_quadraticform.random_ternaryqf(rand_arg_list=None)

  Create a random ternary quadratic form.

  The last (and optional) argument `rand_arg_list` is a list of at most 3 elements which is passed (as at most 3 separate variables) into the method `R.random_element()`.

  INPUT:

  - `rand_arg_list` – list of at most 3 arguments which can be taken by `R.random_element()`

  OUTPUT: a ternary quadratic form

  EXAMPLES:

  Sage

      sage: random_ternaryqf()  # random
      Ternary quadratic form with integer coefficients:
      [1 1 4]
      [-1 1 -1]
      sage: random_ternaryqf([-1, 2])  # random
      Ternary quadratic form with integer coefficients:
      [1 0 1]
      [-1 -1 -1]
      sage: random_ternaryqf([-10, 10, "uniform"])  # random
      Ternary quadratic form with integer coefficients:
      [7 -8 2]
      [0 3 -6]

  Python

      >>> from sage.all import *
      >>> random_ternaryqf()  # random
      Ternary quadratic form with integer coefficients:
      [1 1 4]
      [-1 1 -1]
      >>> random_ternaryqf([-Integer(1), Integer(2)])  # random
      Ternary quadratic form with integer coefficients:
      [1 0 1]
      [-1 -1 -1]
      >>> random_ternaryqf([-Integer(10), Integer(10), "uniform"])  # random
      Ternary quadratic form with integer coefficients:
      [7 -8 2]
      [0 3 -6]

sage.quadratic_forms.random_quadraticform.random_ternaryqf_with_conditions(condition_list=[], rand_arg_list=None)

  Create a random ternary quadratic form satisfying a list of boolean (i.e. True/False) conditions.

  The conditions \(c\) appearing in the list must be boolean functions which can be called either as `Q.c()` or `c(Q)`, where `Q` is the random ternary quadratic form.

  The last (and optional) argument `rand_arg_list` is a list of at most 3 elements which is passed (as at most 3 separate variables) into the method `R.random_element()`.

  EXAMPLES:

  Sage

      sage: check = TernaryQF.is_positive_definite
      sage: Q = random_ternaryqf_with_conditions([check], [-5, 5])
      sage: Q    # random
      Ternary quadratic form with integer coefficients:
      [3 4 2]
      [2 -2 -1]

  Python

      >>> from sage.all import *
      >>> check = TernaryQF.is_positive_definite
      >>> Q = random_ternaryqf_with_conditions([check], [-Integer(5), Integer(5)])
      >>> Q    # random
      Ternary quadratic form with integer coefficients:
      [3 4 2]
      [2 -2 -1]