Consider $n$-dimensional vectors $c^i = \left(c^i_1, c^i_2 ...c^i_n \right)$ , whose entries are complex and generated at random. These vectors are normalized such that

$$|c^i|^2 = 1.$$

Using Mathematica, how do I construct such a set of $k$ vectors $\{ c^i\}$? Does it numerically satisfy the following relation in the limit of large-$n$,

$$|(c^i)^* c^j| <<1, \quad i \neq j ?$$

Note: As an explicit example, can this be seen numerically for $n \approx 1000$?


One way to generate some random vectors that satisfy your normalization rule:

v = RandomPoint[Sphere[1000],100] /. {x_?NumericQ :> x Exp[I RandomReal[{0, 2 Pi}]]}

v will be a set of 100 1000-d vectors where


will yield all 1. Now we look at your test

test = Outer[Abs@*Dot, Conjugate[v], v, 1];

ListDensityPlot[test, PlotLegends -> Automatic,ScalingFunctions -> "Log"]


A slice:


| improve this answer | |
  • $\begingroup$ Forgot to say this, thank you. It was immensely useful to me. A typo, you meant "test = Outer[Abs@*Dot, Conjugate[v], v, 1]", right? $\endgroup$ – Michael Williams Feb 28 at 17:34
  • $\begingroup$ Ah yes, whoops let me correct that. $\endgroup$ – chuy Mar 2 at 16:02
  • $\begingroup$ I have another question which is related to your this answer. Please have a look! mathematica.stackexchange.com/q/215687/60781 $\endgroup$ – Michael Williams Mar 3 at 12:43

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.