I want to show that "Out of the first 450 Fibonacci numbers, the odd number is twice as many as even number." with Mathematica.
Can you solve it please?
Mathematica Stack Exchange is a question and answer site for users of Wolfram Mathematica. It only takes a minute to sign up.
Sign up to join this communityFirst the Fibonacci numbers
out = Table[Fibonacci[n], {n, 450}];
then counting....
Mod[#, 2] & /@ out // Counts
(<|1 -> 300, 0 -> 150|>)
Let's find the conditions under which a Fibonacci number is odd or even. Happily, Reduce
has us covered:
isOdd = Reduce[Mod[Fibonacci[n], 2] == 1, n, Integers]
(* Element[C[1], Integers] && (n == 1 + 3 C[1] || n == 2 + 3 C[1]) *)
isEven = Reduce[Mod[Fibonacci[n], 2] == 0, n, Integers]
(* Element[C[1], Integers] && (k == 0 && n == 3*C[1]) *)
This says for all integers $ n $, $ F_n \equiv 0\,\left(\bmod 2\right) $ when $ n \equiv 0 \left(\bmod 3\right) $.
Now, let's see how many instances there are of each for $n$ between $1$ and $450$.
evens = Length@FindInstance[isEven && 1 <= n <= 450, {n, C[1]}, Integers, 450]
(* 150 *)
odds = Length@FindInstance[isOdd && 1 <= n <= 450, {n, C[1]}, Integers, 450]
(* 300 *)
Now that we've come this far, Mathematica can also help us with the basic arithmetic:
2 * evens == odds
(* True *)
Similar to mgamer's nice answer:
Mod[Array[Fibonacci, 450], 2]//Counts
<|1 -> 300, 0 -> 150|>
Edit
To 'borrow' the neat suggestion made by rcollyer in a comment to rgamer's answer:
Array[Fibonacci, 450] // CountsBy[OddQ]
<|True -> 300, False -> 150|>
Edit 2
lhf points out in a comment that "$F_n$ is even iff $n$ is a multiple of 3"
Table[Fibonacci[n], {n,3, 450,3}] // CountsBy[EvenQ]
<|True -> 150|>
A very interesting one, it seems to me. As long as $n$ is a multiple of 3, then "the odd number is twice as many as even number" as the OP asks for $n$ equal to 450.
Array[Fibonacci, 450, 1, CountsBy[OddQ] @* List]
<|True -> 300, False -> 150|>
Also
Array[Fibonacci /* OddQ, 450, 1, List /* Counts]
<|True -> 300, False -> 150|>
and
450 // Range /* Fibonacci /* CountsBy[OddQ]
<|True -> 300, False -> 150|>
Tally@Mod[Fibonacci@Range@450, 2]
$\endgroup$