On Oct 16, 2010, at 3:32 PM, Ian Tickle wrote:

> Hi Tim
> 
> As I indicated previously, the Fortran code was only meant to define
> my statement of the problem so that there can be absolutely no
> ambiguity as to the question: the answer to the problem (if it exists)
> has nothing whatsoever to do with the programming language used and I
> don't see how it can be constrained in any way by its semantics, since
> I also provided the questions in algebraic form.  You can't get more
> 'natural' than that!
> 
> The answer may be provided either algebraically (which would actually
> be preferable) or in any programming language of your choice: I am
> certainly not forcing anyone to code in Fortran if they don't want to.
> If you're saying that I'm unable to solve the problem just because
> I'm programming in Fortran, then you don't understand how algorithmic
> problem solving works: first an working solution must be obtained
> algebraically, then algorithmically, and only then programmatically.
> The first two steps are always the hardest, the last is almost always
> relatively trivial, and the programming language chosen is a matter of
> personal preference.  It cannot constrain the solution, since that
> must already have been completely defined by the first two steps.  I
> have not yet come across a purely algebraic problem which possesses
> semantics that couldn't be expressed in Fortran.  That doesn't mean
> there aren't any, it's just that none of the problems that I've yet
> come across absolutely require programmng in another language: until
> they do I'm happy to stick with Fortran.
> 
> Just to be clear again, the statement of the problem, expressed
> entirely algebraically, is:
> 
> 1) To express F.G using vector notation only, where F and G are
> complex vectors of arbitrary dimension, and
> 
> 2) Same with F1/G1 where F1 and G1 are complex numbers (e.g.
> individual elements of the above complex vectors).

Ian -- Fortran itself actually treats complex numbers internally as
vectors, so clearly there is a solution to your problem.  In any case,
you can easily program, in any language you want, F.G or F1/G1 using
vector arithmetic.  You cannot, however, confine yourself to the common
standard dot and cross product.  But, contrary to what you are
apparently implying, those are not the only two possible vector
multiplication operations that can be formally defined for vectors. As a
simple counterexample, you can do element-wise vector multiplication and
division. There is also the well-known geometric product (from Clifford 
algebra),
the vector perp dot product, the vector direct product, and the wedge (exterior)
product.  The geometric product is esp. relevant here, because in 2D it is the 
same operation as multiplying two complex numbers
(see http://en.wikipedia.org/wiki/Geometric_algebra#Complex_numbers ).

These pages may be helpful for other examples:

http://www.euclideanspace.com/maths/algebra/vectors/vecAlgebra/powers/index.htm
http://www.euclideanspace.com/maths/algebra/vectors/vecAlgebra/exponent/index.htm

As I said earlier, if an entity fulfills the axioms of a vector space, then
they are vectors.  

http://en.wikipedia.org/wiki/Vector_space#Definition

Complex numbers fulfill these axioms.  On the other hand, there is no
requirement for vectors to have valid dot and cross products defined.
Euclidean vectors do, but that does not mean they are not vectors. 
Complex numbers have other operations defined for them, but again that
does not mean that we cannot consider them as vectors in two dimensions.
In fact, it is common in mathematics to consider complex numbers as 2x2
*matrices*, in which the matrix corresponding to i is an orthogonal 90
degree rotation matrix.  

Cheers,

Douglas

> You see, absolutely no Fortran!
> 
> Cheers
> 
> -- Ian
> 
> On Sat, Oct 16, 2010 at 8:50 AM, Tim Gruene <t...@shelx.uni-ac.gwdg.de> wrote:
>> Dear Ian,
>> 
>> maybe you should switch from Fortran to C++. Then you would not be forced to
>> make nature follow the semantics of your programming language but can adjust
>> your code to the problem you are tackling.
>> The question you post would nicely fit into a first year's course on C++ 
>> (and of
>> course can all be answered very elegantly).
>> 
>> Cheers, Tim
>> 
>> On Fri, Oct 15, 2010 at 11:55:54PM +0100, Ian Tickle wrote:
>>> On Fri, Oct 15, 2010 at 8:11 PM, Douglas Theobald
>>> <dtheob...@brandeis.edu> wrote:
>>>> Vectors are not only three-dimensional, nor only Euclidean -- vectors can 
>>>> be
>>>> defined for any number of arbitrary dimensions.  Your initial comment
>>>> referred to complex numbers, for instance, which are 2D vectors (not 1-D).
>>>>  Obviously scalars are not 3-vectors, they are 1-vectors.  And contrary to
>>>> your earlier assertion, you can always represent complex numbers as vectors
>>>> (in fortran, C, on paper, or whatever), and it is possible to define many
>>>> different valid types of multiplication, exponentiation, logarithms, 
>>>> powers,
>>>> etc. for vectors (and matrices as well).
>>> 
>>> I didn't say that vectors are only 3D or only Euclidean (note my
>>> qualification 'Euclidean *or otherwise*').  I was stating that we're
>>> not talking here specifically about 1D (or 2D) vectors; my use of 3D
>>> is only an example, since my original example referred to structure
>>> factors which are usually defined in 3D reciprocal space. Quite
>>> obviously vectors can be generalised to any number of dimensions (as
>>> in the example below).
>>> 
>>> Let's take a simple example of an operation that's trivial to express
>>> using complex numbers as scalars.  Suppose we have 2 vectors of
>>> complex structure factors of equal dimension (n) and we want to form
>>> the (complex) scalar product.  This kind of equation arises in, for
>>> example, the theory of direct methods.
>>> 
>>> Let F = (F1, F2, F3, ... Fn)
>>> and G = (G1, G2, G3, ... Gn)
>>> 
>>> Then the scalar product F.G = F1*G1 + F2*G2 + F3*G3 + ... Fn*Gn  (or
>>> SUM [j=1 to n] Fj*Gj),
>>> where '+' and '*' here are the normal addition and multiplication
>>> operators on scalars (here complex of course).
>>> Note that the result of a scalar product of 2 vectors is by definition
>>> a scalar and here it's complex!
>>> 
>>> Also note that the RHS can be programmed exactly as written, in fact
>>> something like:
>>> 
>>>       COMPLEX F, G, S
>>>       S = 0
>>> 1    READ (*,*,END=2) F, G
>>>       S = S + F*G
>>>       GOTO 1
>>> 2    PRINT *,S
>>>       END
>>> 
>>> Now, how would you express the scalar product F.G in a way that could
>>> be programmed, using vector notation for all the complex numbers, and
>>> obviously you can only use operators that are defined for vectors,
>>> namely addition, subtraction, scalar multiplication, scalar and
>>> exterior product?
>>> 
>>> Then when you've done that, how would you express a ratio of complex
>>> numbers (say F1/G1), again using only  vector notation?
>>> 
>>> -- Ian
>>> 
>>>> 
>>>> On Oct 15, 2010, at 12:40 PM, Ian Tickle wrote:
>>>> 
>>>>> Any vector, whether in the 'mathematical' or 'physical' sense as
>>>>> defined in Wikipedia, and which is defined on a 3D vector space
>>>>> (Euclidean or otherwise - which I hope is what were talking about),
>>>>> has by definition 3 elements (real or complex). This clearly excludes
>>>>> all scalars (real or complex) which have only 1 whatever the dimension
>>>>> of the space.  Therefore it's plainly impossible for an entity in 3D
>>>>> space to be both a scalar and a vector at the same time.  Your
>>>>> conclusion that scalars and complex numbers fulfil the axioms of a
>>>>> vector space is applicable only in the case of a 1D vector space, and
>>>>> therefore is not relevant.  My original observation which started this
>>>>> thread was intended to be general one, not for a particular special
>>>>> case.
>>>>> 
>>>>> -- Ian
>>>>> 
>>>>> On Fri, Oct 15, 2010 at 5:17 PM, Douglas Theobald
>>>>> <dtheob...@brandeis.edu> wrote:
>>>>>> On Oct 15, 2010, at 11:37 AM, Ganesh Natrajan wrote:
>>>>>> 
>>>>>>> Douglas,
>>>>>>> 
>>>>>>> The elements of a 'vector space' are not 'vectors' in the physical
>>>>>>> sense.
>>>>>> 
>>>>>> And there you make Ed's point -- some people are using the general 
>>>>>> vector definition, others are using the more restricted Euclidean 
>>>>>> definition.
>>>>>> 
>>>>>> The elements of a general vector space certainly can be physical, by any 
>>>>>> normal sense of the term.  And note that physical 3D space is not 
>>>>>> Euclidean, in any case.
>>>>>> 
>>>>>>> The correct Wikipedia page is this one
>>>>>>> 
>>>>>>> http://en.wikipedia.org/wiki/Euclidean_vector
>>>>>>> 
>>>>>>> 
>>>>>>> Ganesh
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> On Fri, 15 Oct 2010 11:20:04 -0400, Douglas Theobald
>>>>>>> <dtheob...@brandeis.edu> wrote:
>>>>>>>> As usual, the Omniscient Wikipedia does a pretty good job of giving
>>>>>>>> the standard mathematical definition of a "vector":
>>>>>>>> 
>>>>>>>> http://en.wikipedia.org/wiki/Vector_space#Definition
>>>>>>>> 
>>>>>>>> If the thing fulfills the axioms, it's a vector.  Complex numbers do,
>>>>>>>> as well as scalars.
>>>>>>>> 
>>>>>>>> On Oct 15, 2010, at 8:56 AM, David Schuller wrote:
>>>>>>>> 
>>>>>>>>> On 10/14/10 11:22, Ed Pozharski wrote:
>>>>>>>>>> Again, definitions are a matter of choice....
>>>>>>>>>> There is no "correct" definition of anything.
>>>>>>>>> 
>>>>>>>>> Definitions are a matter of community choice, not personal choice; 
>>>>>>>>> i.e. a matter of convention. If you come across a short squat animal 
>>>>>>>>> with split hooves rooting through the mud and choose to define it as 
>>>>>>>>> a "giraffe," you will find yourself ignored and cut off from the 
>>>>>>>>> larger community which chooses to define it as a "pig."
>>>>>>>>> 
>>>>>>>>> --
>>>>>>>>> =======================================================================
>>>>>>>>> All Things Serve the Beam
>>>>>>>>> =======================================================================
>>>>>>>>>                              David J. Schuller
>>>>>>>>>                              modern man in a post-modern world
>>>>>>>>>                              MacCHESS, Cornell University
>>>>>>>>>                              schul...@cornell.edu
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>> 
>>>>>> 
>>>> 
>>>> 
>> 
>> --
>> --
>> Tim Gruene
>> Institut fuer anorganische Chemie
>> Tammannstr. 4
>> D-37077 Goettingen
>> 
>> phone: +49 (0)551 39 22149
>> 
>> GPG Key ID = A46BEE1A
>> 
>> 
>> -----BEGIN PGP SIGNATURE-----
>> Version: GnuPG v1.4.9 (GNU/Linux)
>> 
>> iD8DBQFMuVlgUxlJ7aRr7hoRAj9xAKCViaYrKDaXMstIUJFANe/n5hhrkwCgw5iE
>> ISYjMLOKXbM58ByD/7vGLsA=
>> =s4ZA
>> -----END PGP SIGNATURE-----
>> 
>> 

Attachment: smime.p7s
Description: S/MIME cryptographic signature

Reply via email to