1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
|
#include <iostream>
#include <maths.h>
typedef void (SFonc) ( double, double);
typedef SFonc * PSFonc;
void convergence(PSFonc ptSFonc)
{
std::cout << ptSFonc(d3, d4); << endl;
std::cout << ptSFonc(d3, d4); << endl;
}// Prendre une fonction qui prend en argument une autre fonction.
Extended function1(double d1,double d2) ;
Extended function2(double d1,double d2) ;
Extended function3(double d1,double d2) ;
Extended function4(double d1,double d2) ;
Extended function5(double d1,double d2) ;
Extended function6(double d1,double d2) ;
int main()
{
int i;
double du0=10;
double du1=0 ;
for(i = 0 ; i < 30 ; i++)
{
if(function2(du1 ;5) !=0)
{
du0= du1-(function1(du1 ;5)/function2(du1 ;5)) ;
}
if(fabs(du0-du1) < std::numeric_limits<double>::epsilon)//double car tu fais des comparaisons sur des double
//en fait Cette façon de comparer des doubles n'est pas très élégante, car on n'aura (presque) jamais //zéro et donc le "break" ne sera pas exécuté. il est donc mieux de comparer l'écart de du0 à du1 à une //valeur EPSILON fixée (en revenant à la définition même de la limite) ce qui se traduit par
if(fabs(du0-du1) < std::numeric_limits<double>::epsilon)
{
break ;
}
du1=du0 ;
}
if(i<30)
{
std :: cout << Ås the suites converge to Åt << du1 ;
}
else
{
std :: cout << the suites dont converge;
}
return 0;
} |
Partager