On Sep 6, 7:26 pm, Jason Merrill <[EMAIL PROTECTED]> wrote: > Is there a simple way to think of the difference between a vector with > n elements, and a 1 by n matrix in Sage. When would I want to use one > instead of the other? > > sage: m = matrix([1,2,3,4,5]) > sage: parent(m) > Full MatrixSpace of 1 by 5 dense matrices over Integer Ring > > sage: v = vector([1,2,3,4,5]) > sage: parent(v) > Ambient free module of rank 5 over the principal ideal domain Integer > Ring > > m seems to have many more methods than v, but looking at matrix? and > vector? didn't make things perfectly clear.
mhansen caught up with me on IRC and cleared things up a bit. I thought I'd paste in the conversation for the benefit of any others who are wondering. [9:22pm] mhansen: jwmerrill: I don't know if I understand your question about matrices and vectors. What are you trying to do? [9:22pm] mhansen: "Vectors" in Sage are elements of a free module / vector space. [9:23pm] mhansen: One usually thinks about matrices as representing homomorphisms between such spaces. [10:01pm] jwmerrill: mhansen: re vectors/matrices, I'm not trying to do anything too specific [10:01pm] jwmerrill: just trying to fit my head around sage [10:02pm] mhansen: Well, they're very different mathematical objects that just happened to have 5 "numbers" associated with them. [10:04pm] jwmerrill: fair enough [10:05pm] mhansen: Addition is defined component-wise for both of them and they both support scalar multiplication. [10:05pm] jwmerrill: can you right multiply either of them by an appropriately sized matrix? [10:06pm] mhansen: Yep. [10:06pm] mhansen: Vectors have no notion of being a "row vector" or "column vector". [10:06pm] jwmerrill: oh, that's interesting [10:07pm] mhansen: So, if you have a vector of size n, you can act on it on either side with an nxn matrix. [10:08pm] jwmerrill: ok [10:08pm] mhansen: Multiplying two vectors is a shortcut for the inner product on that space (typically the standard dot product). [10:09pm] jwmerrill: got it [10:09pm] jwmerrill: one of the things I was wondering about was what kind of sage object should represent the type of thing that ode solvers would want as the jacobian [10:11pm] jwmerrill: in practice, it has to be a function that returns a collection of numbers [10:11pm] jwmerrill: when evaluated at some point [10:11pm] jwmerrill: is that more like a vector, or a matrix? [10:12pm] jwmerrill: Hubbard and Hubbard makes a point of making the distinction that the gradient is a vector, but the jacobian is a row matrix [10:13pm] jwmerrill: but I didn't really get what the point was, other than that the gradient can change if you have a different inner product rule, but the jacobian doesn't need any inner product at all [10:15pm] mhansen: Yes, I would do the Jacobian as a matrix. [10:15pm] mhansen: You can evaluate matrices over the symbolic ring in Sage. [10:15pm] mhansen: sage: m = matrix(SR, [[x, x+1],[2*x,0]]); m [10:15pm] mhansen: [ x x + 1] [10:15pm] mhansen: [ 2*x 0] [10:15pm] mhansen: sage: m(2) [10:15pm] mhansen: [2 3] [10:16pm] mhansen: [4 0] [10:16pm] jwmerrill: ok, cool JM --~--~---------~--~----~------------~-------~--~----~ To post to this group, send email to sage-support@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sage-support URLs: http://www.sagemath.org -~----------~----~----~----~------~----~------~--~---