LTSpice resonant circuit simulation non-idealities
ltspice (or any simulator really) is only an approximation to both, reality and ideal components. Reality because it can not model all the details reality depends upon, and ideal because it can not run with infinite precision in values and time.

Basically how any spice works is that for the next timestep it checks all involved complex formulas and matrices, and if they converge within the required number of iterations into values with error tolerances below those specified with the *tol options, then it will go on. If not, it will lower the timestep and try again, until it either reaches a limit and errors out, or the tolerance is met.

reltol is the paramter used to specify a certain accepted error relative to the next timestep. The error is estimated using a polynomial to "predict" the value at the next chosen timestep, then it is actually computed there, and the difference taken. If its too big, make the timestep smaller.

This also means that instead of those parameters, you can make the simulation more accurate by forcing a really small timestep like 1n but that makes things really really slow, the dynamic timestep feature is one of the things that make it much faster.

Together with trtol (which specifies a factor on overestimation of the actual error) these are the major knobs you want to play with to either make the simulation more accurate, or faster.

Additionally, ltspice internally uses floats, so sometimes .opt numdgt=7 (anything over 6) is needed to force it to use doubles instead, which may or may not make things more accurate.