Calcul intégral à l'aide de façon analytique et les méthodes de Simpson

  • frenchcookie
  • Born
  • Born
  • No Avatar
  • Inscription: Déc 06, 2012
  • Messages: 1
  • Status: Offline

Message Décembre 6th, 2012, 4:47 am

Salut
J'ai problème avec mon programme. Je suis en train de calculer analytiquement la valeur de l'intégrale avec deux ensemble différent de paramètres


et puis pour les deux j'ai calculer la valeur à l'aide de la règle de Simpson.

Je ne sais pas comment faire pour modifier mon code pour calculer un) avec règle de Simpson, parce que maintenant tous les résultats sont le même n et je ne sais pas pourquoi, après n = 15 tous mes résultats sont 0.

Je lisais à propos de la double représentation et j'étais analysant la règle de Simpson et mon analytiquement code pour integral, mais je ne peut pas comprendre pourquoi il y a 0, car le calculer avec Mathematica pour améliorer mes résultats et il donne
mes quelques numéros pas 0.

Pour l'instant, j'ai ce code, les résultats de la section b) et analytiquement d'un) sont ok attendre n > 15 où j'ai 0.

CPP Code: [ Select ]
#include <iomanip>
#include <iostream>
#include <cmath>
#include <fstream>
 
using namespace std;
const int N = 1;
 
double f(double x)
{
    double dx, b=2.0, z, p;
    int n;
    for(n=1;n<=20;n++){
        p=1 - (pow(10.0, (-n)));
        z=1/(pow(x, p));
    return z;}
}
 
double fx(double x)
{
    double n;
    double p=0.5;
    double b=1 + (pow(10.0, (-n)));
    double dx=(b-1)/N;
    double z=dx/(pow(x, p));
    return z;
}
 
int main()
{
   
    ofstream PLIK;
   
   
    double a, b, s1,s2,s3,s4,x, p; int i;
    int n;
    s1=0;s3=0;
    s2=0;s4=0;
   
    cout.unsetf(ios::floatfield);            
    cout.precision(16);
   PLIK.open("RESULTS.txt");
   
 
    cout << "ANALYTICALLY." << endl;
    PLIK<<"ANALYTICALLY A<<endl;
   cout << "SECTION A:" << endl; // Podpunkt pierwszy
   for (n = 1; n <= 20; n++)
   {  
       
       a=1.0; b=2.0;
       cout  << n << " ";
       p = 1 - pow(10.0, (-n));
       
       s1 = (pow(b, (1 - p)) - (pow(a, (1 - p))))/(1 - p);
       cout <<s1<<" " << endl;
       PLIK<<s1<<setprecision(16)<<" "<<endl;
       
   }
 
   
   PLIK<<"ANALYTICALLY B"<<endl;
   cout << "ANALYTICALLY " << endl;
   cout << "SECTION B:" << endl; // Podpunkt drugii
   for (n = 1; n <= 20; n++)
   {
       a=1.0; p=0.5;
       cout << n << " ";
       b = 1 + pow(10.0, (-n));
       
       s2 = (pow(b, (1 - p)) - (pow(a, (1 - p))))/(1 - p);
       cout << s2<<" " << endl;
       PLIK<<s2<<setprecision(16)<<" "<<endl;
       
   }
   
 
   
   PLIK<<"SIMPSON A"<<endl;
   cout << "SIMPSON RULE" << endl;
   cout << "SECTION A" << endl;
   
   for (n = 1; n <= 20; n++)
   {  
       p=1 - (pow(10.0, (-n)));
       a=1.0;
       cout  << n << " ";
       b=2.0;
       
       s3 = (b-a)/ 6 * (f(a) + (4*(f((a+b)/2)))+f(b));
       cout << s3<<" " << endl;
       PLIK<<s3<<setprecision(16)<<" "<<endl;
       
   }
 
   
   
   PLIK<<"SIMPSON B"<<endl;
   cout << "SIMPSON RULE " << endl;
   cout << "SECTION B" << endl;
   
   
   for (n = 1; n <= 20; n++)
   {  
       a=1.0;p=0.5;
       cout << n << " ";
       b=1 + pow(10.0, (-n));
     
       s4 = (b-a)/ 6 * (fx(a) + (4*(fx((a+b)/2)))+fx(b));
       cout <<  s4 << " "  << endl;
       PLIK<<s4<<setprecision(16)<<" "<<endl;
       
   }
 
   PLIK.close();
   
   cout<<endl;
   
 
  1. #include <iomanip>
  2. #include <iostream>
  3. #include <cmath>
  4. #include <fstream>
  5.  
  6. using namespace std;
  7. const int N = 1;
  8.  
  9. double f(double x)
  10. {
  11.     double dx, b=2.0, z, p;
  12.     int n;
  13.     for(n=1;n<=20;n++){
  14.         p=1 - (pow(10.0, (-n)));
  15.         z=1/(pow(x, p));
  16.     return z;}
  17. }
  18.  
  19. double fx(double x)
  20. {
  21.     double n;
  22.     double p=0.5;
  23.     double b=1 + (pow(10.0, (-n)));
  24.     double dx=(b-1)/N;
  25.     double z=dx/(pow(x, p));
  26.     return z;
  27. }
  28.  
  29. int main()
  30. {
  31.    
  32.     ofstream PLIK;
  33.    
  34.    
  35.     double a, b, s1,s2,s3,s4,x, p; int i;
  36.     int n;
  37.     s1=0;s3=0;
  38.     s2=0;s4=0;
  39.    
  40.     cout.unsetf(ios::floatfield);            
  41.     cout.precision(16);
  42.    PLIK.open("RESULTS.txt");
  43.    
  44.  
  45.     cout << "ANALYTICALLY." << endl;
  46.     PLIK<<"ANALYTICALLY A<<endl;
  47.    cout << "SECTION A:" << endl; // Podpunkt pierwszy
  48.    for (n = 1; n <= 20; n++)
  49.    {  
  50.        
  51.        a=1.0; b=2.0;
  52.        cout  << n << " ";
  53.        p = 1 - pow(10.0, (-n));
  54.        
  55.        s1 = (pow(b, (1 - p)) - (pow(a, (1 - p))))/(1 - p);
  56.        cout <<s1<<" " << endl;
  57.        PLIK<<s1<<setprecision(16)<<" "<<endl;
  58.        
  59.    }
  60.  
  61.    
  62.    PLIK<<"ANALYTICALLY B"<<endl;
  63.    cout << "ANALYTICALLY " << endl;
  64.    cout << "SECTION B:" << endl; // Podpunkt drugii
  65.    for (n = 1; n <= 20; n++)
  66.    {
  67.        a=1.0; p=0.5;
  68.        cout << n << " ";
  69.        b = 1 + pow(10.0, (-n));
  70.        
  71.        s2 = (pow(b, (1 - p)) - (pow(a, (1 - p))))/(1 - p);
  72.        cout << s2<<" " << endl;
  73.        PLIK<<s2<<setprecision(16)<<" "<<endl;
  74.        
  75.    }
  76.    
  77.  
  78.    
  79.    PLIK<<"SIMPSON A"<<endl;
  80.    cout << "SIMPSON RULE" << endl;
  81.    cout << "SECTION A" << endl;
  82.    
  83.    for (n = 1; n <= 20; n++)
  84.    {  
  85.        p=1 - (pow(10.0, (-n)));
  86.        a=1.0;
  87.        cout  << n << " ";
  88.        b=2.0;
  89.        
  90.        s3 = (b-a)/ 6 * (f(a) + (4*(f((a+b)/2)))+f(b));
  91.        cout << s3<<" " << endl;
  92.        PLIK<<s3<<setprecision(16)<<" "<<endl;
  93.        
  94.    }
  95.  
  96.    
  97.    
  98.    PLIK<<"SIMPSON B"<<endl;
  99.    cout << "SIMPSON RULE " << endl;
  100.    cout << "SECTION B" << endl;
  101.    
  102.    
  103.    for (n = 1; n <= 20; n++)
  104.    {  
  105.        a=1.0;p=0.5;
  106.        cout << n << " ";
  107.        b=1 + pow(10.0, (-n));
  108.      
  109.        s4 = (b-a)/ 6 * (fx(a) + (4*(fx((a+b)/2)))+fx(b));
  110.        cout <<  s4 << " "  << endl;
  111.        PLIK<<s4<<setprecision(16)<<" "<<endl;
  112.        
  113.    }
  114.  
  115.    PLIK.close();
  116.    
  117.    cout<<endl;
  118.    
  119.  
Attachments:
1.jpg

My integral calculus

  • Anonymous
  • Bot
  • No Avatar
  • Inscription: 25 Feb 2008
  • Messages: ?
  • Loc: Ozzuland
  • Status: Online

Message Décembre 6th, 2012, 4:47 am

Afficher de l'information

  • Total des messages de ce sujet: 1 message
  • Utilisateurs parcourant ce forum: Kurthead+1 et 164 invités
  • Vous ne pouvez pas poster de nouveaux sujets
  • Vous ne pouvez pas répondre aux sujets
  • Vous ne pouvez pas éditer vos messages
  • Vous ne pouvez pas supprimer vos messages
  • Vous ne pouvez pas joindre des fichiers
 
 

© 2011 Unmelted, LLC. Ozzu® est une marque déposée de Unmelted, LLC