Ticket #11863: Trac_11863v2.patch

File Trac_11863v2.patch, 2.1 KB (added by Anna Haensch, 10 years ago)
  • sage/quadratic_forms/quadratic_form.py

    # HG changeset patch
    # User Anna Haensch <annahaensch@gmail.com>
    # Date 1317152380 14400
    # Node ID bdc98b9bcc39076ebe3b15f8149cc3a50a983534
    # Parent  d06cf4b2215d37d3a87a58f65ac53234502dd471
    [mq]: Tuesday
    
    diff --git a/sage/quadratic_forms/quadratic_form.py b/sage/quadratic_forms/quadratic_form.py
    a b  
    14771477   
    14781478        return ideal(self.base_ring()(self.level()))
    14791479
     1480    def bilinear_map(self,v,w):
     1481        """
     1482        Given a quadratic form `Q` over some base ring `R` with characteristic
     1483        not equal to 2, this gives the image of two vectors in `Q` under
     1484        the associated bilinear map `B`, given by the relation
     1485        `2B(v,w)=Q(v)+Q(w)-Q(v+w).`
     1486           
     1487        INPUT:
     1488           
     1489            `v,w` -- vectors.
     1490           
     1491            `Q` -- Quadratic Form
     1492           
     1493        OUTPUT:
     1494       
     1495            element of the base ring `R`.
     1496           
     1497        EXAMPLES::
     1498           
     1499            sage: Q=QuadraticForm(ZZ,3,[1,4,0,1,4,1])
     1500            sage: v=vector((1,2,0));w=vector((0,1,1))
     1501            sage: Q.bilinear_map(v,w)
     1502            8
     1503
     1504        ::
     1505           
     1506            sage: Q=QuadraticForm(QQ,2,[1/2,2,1])
     1507            sage: v=vector(QQ,(1,1))
     1508            sage: w=vector(QQ,(1/2,2))
     1509            sage: Q.bilinear_map(v,w)
     1510            19/4
     1511           
     1512        ::
     1513           
     1514            sage: Q=DiagonalQuadraticForm(ZZ,[1,7,7])
     1515            sage: v=vector((1,2))
     1516            sage: w=vector((1,1,1))
     1517            sage: Q.bilinear_map(v,w)
     1518            (<type 'exceptions.TypeError'>, 'Bilinear form can only be evaluated on vectors with length 3.')
     1519
     1520        """
     1521        if len(v)!=self.dim() or len(w)!=self.dim():
     1522            return TypeError, "Bilinear form can only be evaluated on vectors with length " + str(self.dim()) + "."
     1523        if self.base_ring().characteristic()==2:
     1524            return TypeError, "Not defined for rings of characteristic 2."
     1525        return (self(v+w)-self(v)-self(w))/2
     1526
     1527
    14801528
    14811529
    14821530## =====================================================================================================