2
$\begingroup$

Say I define a function as follows:

pos[n_] := If[Cos[288 ((n Pi)/233)] > 0 && Sin[288 ((n Pi)/233)] > 0, 1, 0]

Then I want to evaluate at this function at from $n=1$ to $n=233$. Okay so for now, I type it by hand...

pos /@ {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
   19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
   36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
   53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
   70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
   87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 
  103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 
  116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 
  129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 
  142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 
  155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 
  168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 
  181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 
  194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 
  207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 
  220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 
  233}

This is really tiring, let along that I will evaluate from $n=1$ to $n=377$ in the next step. Is there a way for me to do this easier? I tried to evaluate as something like

pos/@{n,1<=n<=233}

but it didn't work.

Thank you!

$\endgroup$
5
  • 2
    $\begingroup$ Boole is better than If, i.e., pos[n_] := Boole[Cos[288 ((n Pi)/233)] > 0 && Sin[288 ((n Pi)/233)] > 0] Then pos /@ Range[233] or if instead you want to know the positions Select[Range[233], pos[#] == 1 &] $\endgroup$ – Bob Hanlon Nov 14 '20 at 15:57
  • $\begingroup$ @BobHanlon oh nice. This gives what I want!! $\endgroup$ – JacobsonRadical Nov 14 '20 at 15:59
  • $\begingroup$ @BobHanlon would you like to post an answer so that I can accept and people (and I) can upvote? :) I believe moving your comment to the answer will be great enough $\endgroup$ – JacobsonRadical Nov 14 '20 at 15:59
  • $\begingroup$ You can answer your own question. $\endgroup$ – Bob Hanlon Nov 14 '20 at 16:01
  • $\begingroup$ @BobHanlon okay. thank you! $\endgroup$ – JacobsonRadical Nov 14 '20 at 16:05
2
$\begingroup$

As "BobHanlon" suggested, we can re-define the pos function as

pos[n_] := Boole[Cos[288 ((n Pi)/233)] > 0 && Sin[288 ((n Pi)/233)] > 0]

Then, if we want to evaluate from $n=1$ to $n=233$, we can use

pos /@ Range[233]

This will directly give us

    {0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 
0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 
1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 
0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 
0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 
0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 
0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 
1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 
0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 
0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 
0, 0, 0}
$\endgroup$

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.