Je fais un programme Java pour calculer la règle de Simpson pour Intégrales. Voici le code que j'ai. Notez la deuxième colonne de nombres dans les valeurs de sortie de count == 4,9,10,11. Ce ne sont pas des chiffres dont j'ai besoin, ils ne suivent pas le modèle. J'ai besoin de ces chiffres pour être précis. Que se passe-t-il et comment puis-je le réparer?java pour boucle problème
public static void main(String[] args)
{
double totalS = 0.0;
int count = 0;
for(double i=0; i< 4; i += 0.4)
{
count++;
totalS += Sfunction(i, count);
System.out.println(count + " " + i + " " + totalS);
}
}
public static double Sfunction(double f1, int count)
{
double value;
if (f1 == 0.0 || f1 == 4.0)
value = Math.cos(Math.sqrt(f1));
else if ((count % 2) == 1)
value = 2 * Math.cos(Math.sqrt(f1));
else
value = 4 * Math.cos(Math.sqrt(f1));
return value;
}
je reçois la sortie:
1 0.0 1.0
2 0.4 4.226313639540303
3 0.8 5.478244888601832
4 1.2000000000000002 7.30884788480188
5 1.6 7.911122809972827
6 2.0 8.534897589034324
7 2.4 8.578100205110182
8 2.8 8.168723348285942
9 3.1999999999999997 7.736055200662704
10 3.5999999999999996 6.452869366954546
11 3.9999999999999996 5.620575693860261
De quels numéros avez-vous besoin? Comment la sortie est-elle incorrecte? Vous plaignez-vous que les nombres à virgule flottante ne sont pas précis? Si oui, lisez attentivement http://en.wikipedia.org/wiki/Floating_point. – Bear
La question que je suis est dans la deuxième colonne de la sortie, pourquoi est seulement quelques chiffres dans la précision correcte des chiffres et certains ne le sont pas? – TrickyM66