On the picture below you can see mathematically perfect smooth transition from black to white. But I noticed that on all gradient picture I see strange strips and the color transition doesn't feel smooth. I even see that if you pass from black to white, there are some small jumps back to a bit darker color, when theoretically the color should become always whiter and whiter.
The 'jumps' to 'a bit darker' are an optical illusion due to how human perception works. Check out Mach bands in wikipedia. Now as for why you get a step function even though you have a smooth transition in code: this is due to quantization. Your monitor can reproduce a finite amount of grey levels, so you quantize your otherwise continuous range.
The image's histogram isn't entirely flat which could imply that some grey levels are represented more than others, I'm not sure this would cause the effects you see - I expect not. Try printing the image as a hight quality photo on glossy paper, this should eliminate the shortcomings of your screen.
The non smooth appearance, or visual stripes you see, is called color banding. (Wikipedia) It is produced since the medium, in this case your screen, is only capable of producing a finite array of colors and as the mathematical equation progressively passes through the color change you monitor "jumps" a visual amount of "steps". Higher resolution monitors will suffer from banding less but still still have noticeable steps in high contrast gradients, such as from black to white.
The "jumps" back to a darker color is, as lightxbulb mentioned, an optical illusion called Mach bands. (Wikipedia)
Printing a gradient will often have the same issue, no matter how high the resolution is. I have often had clients provide artwork for high quality printing and have been very disappointed with banding effect.
Banding is not only present in gradients but most noticeable in high contract change gradients and low resolution mediums.
There are techniques to help with banding like dithering or adding noise. But these techniques will often require moving to pixel based artwork and not mathematical perfect vector. Here is a great article to understand banding and how to avoid it using Photoshop. https://www.slrlounge.com/remove-banding-photoshop/