Why do the DTFT and FFT give me completely different results for magnitude at a specific frequency? I am trying to write a program to compute the magnitude and phase of a specific, non-integer frequency component (i.e. given a sampled finite signal of length $N$, I want to know the magnitude and phase of the spectrum at frequency 40.678 Hz).
I tried using the equation for the Discrete Time Fourier Transform:
$$
X(\omega) = \sum_{n=-\infty}^{\infty} x[n] e^{-j\omega n} = \sum_{n=0}^{N-1} x[n] e^{-j\omega n}
$$
such that
$$
X(2\pi\cdot40.678) = \sum_{n=0}^{N-1} x[n] e^{-j 2\pi\cdot40.678\cdot n}
$$
I did this as follows:
t = np.linspace(0,1,100)
x = np.sin(2*np.pi*40.678*t)

Xf = 0
for n in range(len(x)):       
    Xf += (x[n]*np.exp((-np.complex(0,1))*2*np.pi*40.678*n))
print(abs(Xf))


Which printed $0.6149015687259044$.
I know that this is wrong because if I do an FFT as follows:
X = np.fft.fft(x)
plt.figure();
plt.plot(abs(X))


I can see peaks of magnitude $50$ at around (what I assume after correcting the axis is) 40.678 Hz.

What is the reason for this difference? I also tried the equation of the DFT just like I did with the DTFT code above this time to measure magnitude at 50 Hz of a sinusoid of frequency 50 Hz and I got a completely wrong value again as compared to what the plot of the FFT shows.
What causes this discrepancy?
Thank you.
HINT:
Try introducing the sampling frequency $F_s$. Then $f$ in the relation in Equation $(1)$ is relative to the sampling frequency
$$
\omega = 2\pi f\quad\text{where}\quad f = \frac FF_s\tag{1}
$$
Where the units are as follows:

$\omega$ in [radians/sample]
$f$ in [cycles/sample]
$F_s$ in [samples/second]
$F$ in [cycles/second] or [Hz]

Your discrete time vector for your signal should be as shown in equation $(2)$
$$
t = nT_s\quad\text{where}\quad T_s = \frac 1F_s\quad\text{and}\quad n = 0, \ldots, N - 1\tag{2}
$$
You seem to use the frequency $F$ in [Hz] instead of the relative frequency $f$ in [cycles/sample].