Mathematica [Mathematica] Simple Problem with the plot function

AI Thread Summary
The discussion revolves around a user's exploration of the Fibonacci sequence using a formula that includes the golden ratio and its conjugate. The user noted that the 12th Fibonacci number is 144 and sought to investigate if there are other numbers with this property by plotting graphs in Mathematica. However, they encountered issues with the plot not displaying correctly due to the presence of the negative conjugate term, which results in non-real values for non-integer inputs. The solution offered involves using DiscretePlot to visualize only integer values, as the original plot fails to render due to the function becoming complex for certain inputs. The conversation highlights the importance of recognizing the behavior of negative bases in exponentiation, particularly regarding their real-valued outputs, and discusses how Mathematica handles complex values in plotting.
PEZenfuego
Messages
48
Reaction score
0
I have a formula for the fibonacci sequence (with 1 being the first) and I noticed that the 12th fibonacci number was 144. I thought that was a neat coincidence, so I I headed over to mathematica to see if this (and 1) were the only numbers that had this property. I was almost certain that it was. So I plotted the two graphs, but only the x^2 graphed showed up. Here was my input. My question is about what I did wrong.

phi := (1 + Sqrt[5])/2

phih := (1 - Sqrt[5])/2

f:={(phi^n)-(phih^n)}/{Sqrt[5]}

y:=n^2

Plot[{f, y}, {n, -20, 20}]

Now, this works when I remove the phih term, which works well enough that I can clearly see that only 1 and 12 are solutions. On the other hand, this is not plotting something that it should be plotting...

Anyway, thank you in advance for the help.
 
Physics news on Phys.org
The problem is that plot tries to make a continuous plot. It then runs into the problem that phih^x is not a real-valued function for non-integer x, and refuses to plot it altogether. To just plot the values at integer values of x, you can use DiscretePlot:

DiscretePlot[{f, y}, {n, -20, 20, 1}]
 
Hypersphere said:
The problem is that plot tries to make a continuous plot. It then runs into the problem that phih^x is not a real-valued function for non-integer x, and refuses to plot it altogether. To just plot the values at integer values of x, you can use DiscretePlot:

DiscretePlot[{f, y}, {n, -20, 20, 1}]

That's really neat and useful. I was so accustomed to just glazing over (1-Sqrt[5])/2, that I forgot that it was negative. If you raise it to the power of 1/2 for example, then the answer is imaginary. That's why it is not a real-valued function, correct? Thank you, sir.
 
PEZenfuego said:
That's really neat and useful. I was so accustomed to just glazing over (1-Sqrt[5])/2, that I forgot that it was negative. If you raise it to the power of 1/2 for example, then the answer is imaginary. That's why it is not a real-valued function, correct? Thank you, sir.

You are welcome. And, yeah, if the function has a non-zero imaginary part for at least one value of x, then clearly it's not real-valued on the whole domain (i.e. the plot range). However, Mathematica is able to handle cases where the function is piecewise real-valued, it just doesn't plot the part where the values are comples, see eg.
Plot[(1 + I*HeavisideTheta[x - 5]*HeavisideTheta[6 - x]), {x, 0, 10}]
(I would prefer it to give an error message or a warning, but it doesn't seem to do that.)Your function is a bit worse though as it is only real-valued on integer values of x. The proof just uses the general definition of the power of a number a (negative, complex etc.), which makes use of the complex logarithm:
a^b=e^{b log a}.
If a is real and negative, then this simplifies to
a^b=e^{bLog(|a|)+ib\pi}=|a|^b e^{ib\pi},
which is only real for integer values of b.
 

Similar threads

Replies
2
Views
2K
Replies
1
Views
2K
Replies
1
Views
2K
Replies
4
Views
2K
Replies
1
Views
2K
Back
Top