I'd like to generate a table of sums which each a non-correlated, normally distributed random variate inside. Here is the sample code:

Ir = Cos[2 Pi xr/P + 2 Pi k/n] + Subscript[\[Epsilon], k];
Io = ReplaceAll[Ir, {xr -> xo, k -> j}];
d\[Phi]measured =     FullSimplify[ArcTan[-Sum[Io Sin[2 Pi j/n], {j, 1, n}]/Sum[Io Cos[2 Pi j/n], {j, 1, n}]] - ArcTan[-Sum[Ir Sin[2 Pi k/n], {k, 1, n}]/Sum[Ir Cos[2 Pi k/n], {k, 1, n}]]];
nval = 4;
numvars = 4;
a = Table[
ReplaceAll[d\[Phi]measured, { xo -> 0.1, xr -> 0, P -> 10, n -> nval}], 
{x, 1,numvars}]

When this returns, I want each Epsilon to be a random variate, but I'm not sure how to generate a new random variate for each of the values.

Thanks in Advance...


I found a slight workaround by adding: /. {x_Subscript :> RandomVariate[NormalDistribution[0, .001]]} after the output of the summation, I was able to get the random variables to replace all of the subscripted epsilons

  • $\begingroup$ However, $\epsilon_1$ in the first term will not be the same as $\epsilon_1$ in the second term. They will independent random numbers. $\endgroup$
    – C. E.
    Aug 15 '19 at 22:15
  • $\begingroup$ This is actaully what I was looking for, but my wording did indeed convey that I wanted each subscripted term to match. Thanks for you solution, it may help others. $\endgroup$ Aug 17 '19 at 23:06

This is a simple solution, similar to your own except that with this solution all $\epsilon$ with the same index will be replaced by the same random number.

values = Table[
   Subscript[\[Epsilon], k] -> RandomVariate[NormalDistribution[0, 0.001]],
   {k, numvars}
a /. values

{0.0629043, 0.0629043, 0.0629043, 0.0629043}

  • $\begingroup$ Thanks for the response! My application requires each and every epsilon to be a different variate, but this solution may be useful if I need to match the subscripts $\endgroup$ Aug 16 '19 at 23:07

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.