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 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195
|
#include < iostream > #include < cmath > #include < string > #include < vector > #include < fstream > #include < cstdlib >
using namespace std;
int operation, choix1, degre, methode;
double a, b, c, alpha, beta;
vector < float > polynome(degre + 1);
//Liste des intégrations exactes
double exponentielle_exacte() {
return ((a / b) * (exp(b * beta + c)) - (a / b) * (exp(b * alpha + c)));
}
double logarithme_exacte() {
return (a * (1 / b) * (((log(b * beta + c)) - (b * beta + c)) - ((log(b * alpha + c)) - (b * alpha + c))));
}
double cosinus_exacte() {
return (a * ((1 / b) * (sin(b * beta + c)) - (1 / b) * (sin(b * alpha + c))));
}
double sinus_exacte() {
return (a * (1 / b) * ((cos(b * alpha + c)) - (cos(b * beta + c))));
}
double tangente_exacte() {
return ((-a / b) * ((log(fabs(cos(b * beta + c)))) - (log(fabs(cos(b * alpha + c))))));
}
double quotient_affine() {
return ((a / b) * ((log(fabs(b * beta + c))) - (log(fabs(b * alpha + c)))));
}
//double racinecarree_exacte() {return (( (2.0)*a)/(3.0)*( ( (sqrt(b*beta+c))^(3.0))-( (sqrt(b*alpha+c))^(3.0)) )); }
typedef double( * Fonction)(double);
//Liste des fonctions à intégrer
double fonction_exponentielle(double x) {
return (a * (exp(b * x + c)));
}
double fonction_logarithme(double x) {
return (a * (log(b * x + c)));
}
double fonction_cosinus(double x) {
return a * (cos(b * x + c));
}
double fonction_sinus(double x) {
return a * (sin(b * x + c));
}
double fonction_tangente(double x) {
return a * (tan(b * x + c));
}
double fonction_quotient(double x) {
return a / (b * x + c);
}
double fonction_racinecarree(double x) {
return a * (sqrt(b * x + c));
}
double Simpson(double u, double v, Fonction f) {
return (v - u) * ((1 / 6) * (( * f)(u)) + (2 / 3) * (( * f)((u + v) / 2)) + (1 / 6) * (( * f)(v)));
}
int main() {
cout << "Entrez le choix de calcul d'intégrale que vous souhaitez effectuer :" << endl;
cout << "1.Calculer l'intégrale d'une fonction à une variable réelle" << endl;
cout << "2.Calculer l'intégrale de la somme de deux fonctions à une variable réelle" << endl;
cout << "3.Calculer l'intégrale de la différence de deux fonctions à une variable réelle" << endl;
cout << "4.Calculer l'intégrale du produit de deux fonctions à une variable réelle" << endl;
cout << "5.Calculer l'intégrale du quotient de deux fonctions à une variable réelle" << endl;
cout << "6.Calculer l'intégrale de la composée de deux fonctions à une variable réelle" << endl;
cin >> operation;
if (operation == 1) {
cout << "Vous avez choisi d'intégrer une fonction à une variable réelle, choisissez laquelle parmi les suivantes :" << endl;
cout << "1.fonction exponentielle de la forme a*exp(b*x+c)" << endl;
cout << "2.fonction logarithme népérien de la forme a*ln(b*x+c)" << endl;
cout << "3.fonction cosinus de la forme a*cos(b*x+c)" << endl;
cout << "4.fonction sinus de la forme a*sin(b*x+c)" << endl;
cout << "5.fonction tangente de la forme a*tan(b*x+c)" << endl;
cout << "6.fonction de la forme a/(bx+c)" << endl;
cout << "7.fonction racine carrée de la forme a*(b*x+c)^(1/2)" << endl;
cout << "8.fonction polynomiale" << endl;
cin >> choix1;
}
if (choix1 != 8) {
cout << "Entrez successivement a, b et c" << endl;
cin >> a;
cin >> b;
cin >> c;
cout << "Choisissez les bornes sur lesquelles vous souhaitez intégrer votre fonction" << endl;
cin >> alpha;
cin >> beta;
}
cout << "Quelle méthode d'intégration souhaitez vous utiliser ?" << endl;
cout << "1.La méthode d'intégration exate" << endl;
cout << "2.La méthode de Simpson" << endl;
cout << "3.La méthode des trapèzes" << endl;
cin >> methode;
if (choix1 == 1) {
if (methode == 1) {
cout << "L'intégrale exacte de " << alpha << "à " << beta << " de " << a << "*exp(" << b << "x+" << c << ") est :" << exponentielle_exacte() << endl;
}
if (methode == 2) {
cout << "L'intégrale approchée par la méthode de Simpson de " << alpha << "à" << beta << " de " << "exp(" << b << "x+" << c << ") est :" << Simpson(alpha, beta, fonction_exponentielle) << endl;
}
}
if (choix1 == 2) {
if (methode == 1) {
cout << "L'intégrale exacte de " << alpha << "à " << beta << " de " << a << "*ln(" << b << "x+" << c << ") est :" << logarithme_exacte() << endl;
}
//if(methode==2) {cout<<"L'intégrale approchée par la méthode de Simpson de "<<alpha<<"à"<<beta<<" de "<<"log"<<b<<"x+"<<c<<") est :"<<Simpson(*fonction_logarithme)<<endl;}
}
if (choix1 == 3) {
if (methode == 1) {
cout << "L'intégrale exacte de " << alpha << "à " << beta << " de " << a << "*cos(" << b << "x+" << c << ") est :" << cosinus_exacte();
}
//if(methode==2) {cout<<"L'intégrale approchée par la méthode de Simpson de "<<alpha<<"à"<<beta<<" de "<<"cos("<<b<<"x+"<<c<<") est :"<<Simpson(*fonction_cosinus)<<endl;}
}
if (choix1 == 4) {
if (methode == 1) {
cout << "L'intégrale exacte de " << alpha << "à " << beta << " de " << a << "*sin(" << b << "x+" << c << ") est :" << sinus_exacte();
}
//if(methode==2) {cout<<"L'intégrale approchée par la méthode de Simpson de "<<alpha<<"à"<<beta<<" de "<<"sin("<<b<<"x+"<<c<<") est :"<<Simpson(*fonction_sinus)<<endl;}
}
if (choix1 == 5) {
if (methode == 1) {
cout << "L'intégrale exacte de " << alpha << "à " << beta << " de " << a << "*tan(" << b << "x+" << c << ") est :" << tangente_exacte();
}
//if(methode==2) {cout<<"L'intégrale approchée par la méthode de Simpson de "<<alpha<<"à"<<beta<<" de "<<"tan("<<b<<"x+"<<c<<") est :"<<Simpson(*fonction_tangente)<<endl;}
}
if (choix1 == 6) {
if (methode == 1) {
cout << "L'intégrale exacte de " << alpha << "à " << beta << " de " << a << "/(" << b << "x+" << c << ") est :" << quotient_affine();
}
//if(methode==2) {cout<<"L'intégrale approchée par la méthode de Simpson de "<<alpha<<"à"<<beta<<" de "<<a<<"/("<<b<<"x+"<<c<<") est :"<<Simpson(*fonction_quotient)<<endl;}
}
if (choix1 == 8) {
cout << "Entrez le degré du polynôme que vous souhaitez intégrer" << endl;
cin >> degre;
for (int i = 0; i <= degre; i++) {
cout << "Entrez le coefficient du monome de degré :" << i << ":" << endl;
cin >> polynome[i];
}
cout << "Le polynôme que vous souhaitez intégrer est :" << endl;
for (int k = degre; k > 0; --k) {
cout << polynome[k] << "x^" << k;
if (polynome[k - 1] >= 0) {
cout << "+";
}
cout << polynome[0] << endl;
}
}
return 0;
} |
Partager