Je ne pense pas que l'erreur vienne des fibres, la valeur énergétique est censée refléter l'énergie utilisable par le corps;
Voici le soucis:
1g de lipide ne fait pas toujours 9kcal c'est une valeur moyenne; ça dépend de la composition des acides gras. L'acide laurique (12c) ne donne pas autant d'énergie que l'acide palmitique par exemple (16c). Si les acides gras sont sous forme libre ça donne également plus d'énergie que si ils sont sous forme de mono/di/tri glycérides.
1g de protides ne fait pas toujours 4kcal c'est une valeur approchée, par exemple la glutamine donnenplus d'énergie que la phenylalanine.
1g de glucide c'est pas toujours 4kcal: l'amidon donne plus d'énergie que du glucose libre (aucune idée de la manière mais c'est bel et bien ce que on nous apprend en cours de bioénergétique).
Du coup en fonction de la composition d'un aliment on peut avoir des valeurs très différentes, d'où l'écart trouvé par rapport aux valeurs théoriques.
L’énergie contenue dans un aliment est mesuré de la même façon que pour un carburant par exemple, c'est à dire qu'on place une quantité d'aliment dans une bombe calorimétrique (un récipient étanche avec le moins de pertes de chaleur vers l’extérieur possible), on le fait brûler et en mesurant l’élévation de température maxi, on connaît l'énergie dégagée.
Ouaip on détermine l'énergie qu'il peut liberer comme ça.
Pour les nutriments on fait des dosages.
Il faut savoir que les valeurs 4/9/4 sont corrigées par la digestibilité, en réalité les protides et les lipides apportent plus d'énergie que ces valeurs (d'où la différénce par rapport a l'énergie reellement apportée déterminée par le calorimètre).
Autre source d'erreur: la valeur de 4kcal pour les glucides par exemple est arrondie, on apprend que 1g de glucides donne en moyenne 12.1kJ ce qui ne donne pas exactement 4kcal.