Confusing terminology in singular-poisson demo

Issue #186 resolved
Nikolaus Rath created an issue

(repost from https://bugs.launchpad.net/dolfin/+bug/1267578 - didn't realize that the issue tracker has moved)

http://fenicsproject.org/documentation/dolfin/1.3.0/python/demo/documented/singular-poisson/python/documentation.html says:

[Let ] AU=b, where U gives the coefficient for the basis functions
expressing u.

Since we have pure Neumann boundary conditions, the matrix A
is singular. There exists a vector e such that Ae=0.

span {e} is the null space of A, and by removing the components
of b that lie in the null space we make the system solvable.

The last part does not make sense to me. Let A be a linear operator from V to W. Then the null space is a subspace of V, but b is defined in W. Therefore, it doesn't make sense to talk about components of b that lie in the null space.

I think a better formulation might be

[Let] AU=b, where U gives the coefficient for the basis functions
expressing u.

Since we have pure Neumann boundary conditions, the matrix A
is singular. There exists a vector e such that Ae=0. We make the
system solvable by removing the components of b that do not lie
in the column space of A, which are also the components that lie
in the null space of transpose(A).

Comments (5)

  1. Anders Logg (Chalmers)

    Changed to this:

    Since we have pure Neumann boundary conditions, the matrix :math:`A`
    is singular. There exists a non-trival vector :math:`e` such that
    
    .. math::
        Ae=0.
    
    span :math:`\{ e \}` is the null space of A. Consequently, the matrix
    :math:`A` is rank deficient and the right-hand side vector :math:`b`
    may fail to be in the column space of :math:`A`. We therefore need
    to remove the components of :math:`b` that do not lie in the column
    space to make the system solvable.
    
  2. Log in to comment