I understand now. Thanks for the clear explanation. So, let's talk about functionality that we want to give the user. In the module I have proposed, the CoordSystem class provides a method to initialize a user-defined basis, let us say B.
Now, let us define a vector v in this coordinate system. In code, we will just pass to the Vector class this CoordSystem object. So, now we have a vector v defined whose components in the basis B are [ a1, a2, ... , an] transpose. Now, as you said, we need a way to represent the inner product. For this, we can have a class, InnerProduct. To initialize this class, the user will have to provide a positive definite Hermitian matrix which will be used to implement the inner product. The other way we can do this is for user to provide a definition for <v1, v2>. Then we can check whether this definition conforms to the standard rules of the inner product. Once we have a well defined InnerProduct object with us, then we can move on to finding the dual of v represented in the basis B. So, our objective is to find out the row vector v'. Now, since repr(v')*repr(v) = <v, v> = repr(v).T * H *repr(v) So, if we assume repr(v') = [ b1, b2, .. , bn], then the LHS will be just: [ a1 b1 + a2 b2 + .. + an bn] and RHS is, for a given H and v, just a scalar. So, as I see it, we have n-1 free variables and one dependent variable ( b1 through bn are all the variables here). Am I right thus far? If I am, then we can just set the n-1 variables to be unity ( in fact, zero seems a simpler choice) and the remaining variable can be found from the relation I mentioned above. Is this what you wanted? Or am I off base? -- You received this message because you are subscribed to the Google Groups "sympy" group. To unsubscribe from this group and stop receiving emails from it, send an email to sympy+unsubscr...@googlegroups.com. To post to this group, send email to sympy@googlegroups.com. Visit this group at http://groups.google.com/group/sympy?hl=en-US. For more options, visit https://groups.google.com/groups/opt_out.