Hello Love,
I understand that you are applying the 'fft' function on a given compound wave, but the output is not accurate.
The reason behind such inaccurate output is that frequency components of your compound signal are not matching exactly with the discrete frequency array, defined for computing ‘fft’. The 'fft' function matches your signal by finding components close to your signal, i.e., it decomposes the signal in cosines and sines that it is allowed to sum over.
If you want to have them exactly in your transformed signal or if you want more accurate output, you must change the sampling points of the 'fft' accordingly. If you are computing n-point DFT, make sure that 'n' is an integral multiple of the number of recorded data points. That is how you can have exact peaks at your predefined frequencies.
I hope this helps.