Accueil > > > ROMBERG INTEGRATION
ROMBERG INTEGRATION
Information sur la source
Description
Il s'agit d'une méthode (si ce n'est la méthode) d'intégration numéric de fonction, dans le cas univarié(f(x)dx)
Source
- #include "iostream.h"
- #include "math.h"
- #include "Romberg.h"
-
- int main()
- {
- // tableau contenant des paramêtres qui n'entre pas dans l'intégration
- double * Tab;
- Tab = new double[2];
- *Tab=2.0;
- *(Tab+1)=1.0;
-
- //constructeur
- Romberg R(1,2,Tab);
-
- cout << endl
- <<R.RI();
- cout << endl;
- delete [] Tab;
-
- return 0;
- }
- //voila pour le .h qui contient la définition de la classe
- #ifndef Romberg_H
- #define Romberg_H
-
- #include "math.h"
- #define Tol 0.000000001
-
- class Romberg
- {
- public: double a; //borne inf
- double b; //borne sup
- double * para; //pointeur de tableau contenant les paramétres additionnelles de la fonction
-
- Romberg(double A, double B, double *Para)
- {
- a=A;
- b=B;
- para=Para; //ici il n'y a qu'1 paramétre
- }
-
- //fonction à intégrer et à editer (ici f(x)=1/(x^k) + g
- //on intégre par rapport à x, k et g sont des paramêtres additionnelles
-
- double ff(double i)
- {return pow(i,- *para)+ *(para+1);}
- //fin de la fonction
-
-
- double TR(double n)
- {
- double i, temp, H;
- temp=0;
- H = (b - a) / n;
-
- for(i=a; i<=b; i+=H)
- {
- if(i==a || i==b )
- {temp +=ff(i) / 2;}
- else
- {temp +=ff(i);}
- }
-
- return temp * H;
- }
-
- double Ink(double R1,double R2,int k)
- {
- return (pow(4,k) * R1 - R2) / (pow(4,k) - 1);
- }
-
- double RI()
- {
- const int MaxIter = 11;
- double temp;
- double Mresult[MaxIter][MaxIter];
- int n, k, i, m;
-
- m = 0;
-
- for(k=0;k<MaxIter;k++)
- {
- n = static_cast<int>(pow(2,k));
- if(n==1) {Mresult[m][0] = TR(n);}
- else {Mresult[m][0] = TR(n);}
-
- for(i=1;i<=k;i++)
- {Mresult[m][i] = Ink(Mresult[m][i-1], Mresult[m - 1][i-1], i);}
-
- temp= fabs(Mresult[m-1][m-1] - Mresult[m][m]);
-
- if(temp<Tol && m>=2){k = 10;}
- temp= Mresult[m][m];
- m++;
- }
- return temp;
- }
-
- };
-
-
- #endif
#include "iostream.h"
#include "math.h"
#include "Romberg.h"
int main()
{
// tableau contenant des paramêtres qui n'entre pas dans l'intégration
double * Tab;
Tab = new double[2];
*Tab=2.0;
*(Tab+1)=1.0;
//constructeur
Romberg R(1,2,Tab);
cout << endl
<<R.RI();
cout << endl;
delete [] Tab;
return 0;
}
//voila pour le .h qui contient la définition de la classe
#ifndef Romberg_H
#define Romberg_H
#include "math.h"
#define Tol 0.000000001
class Romberg
{
public: double a; //borne inf
double b; //borne sup
double * para; //pointeur de tableau contenant les paramétres additionnelles de la fonction
Romberg(double A, double B, double *Para)
{
a=A;
b=B;
para=Para; //ici il n'y a qu'1 paramétre
}
//fonction à intégrer et à editer (ici f(x)=1/(x^k) + g
//on intégre par rapport à x, k et g sont des paramêtres additionnelles
double ff(double i)
{return pow(i,- *para)+ *(para+1);}
//fin de la fonction
double TR(double n)
{
double i, temp, H;
temp=0;
H = (b - a) / n;
for(i=a; i<=b; i+=H)
{
if(i==a || i==b )
{temp +=ff(i) / 2;}
else
{temp +=ff(i);}
}
return temp * H;
}
double Ink(double R1,double R2,int k)
{
return (pow(4,k) * R1 - R2) / (pow(4,k) - 1);
}
double RI()
{
const int MaxIter = 11;
double temp;
double Mresult[MaxIter][MaxIter];
int n, k, i, m;
m = 0;
for(k=0;k<MaxIter;k++)
{
n = static_cast<int>(pow(2,k));
if(n==1) {Mresult[m][0] = TR(n);}
else {Mresult[m][0] = TR(n);}
for(i=1;i<=k;i++)
{Mresult[m][i] = Ink(Mresult[m][i-1], Mresult[m - 1][i-1], i);}
temp= fabs(Mresult[m-1][m-1] - Mresult[m][m]);
if(temp<Tol && m>=2){k = 10;}
temp= Mresult[m][m];
m++;
}
return temp;
}
};
#endif
Conclusion
Le zip contient le document qui m'a servit a creer ce code. De plus vous pouvez trouvez un alpgorithme de Romberg dans "Numerical Recepices" mais sensiblement différent. Il utilise notament une interpolation polynomial pour une raison qui m'échape (cf: pdf)
Historique
- 26 décembre 2005 22:59:13 :
- J'étais ennuyé par le fais qu'à chaque fois que l'on changait la focntion à intégrer, on devait réécrire toutes les fonctions pour tenir comptes des nouveaux paramêtres de celle ci . Ce code encapsule donc tous les paramétres dans une classe pour profiter de l'accessibilité de la propriété publique des variables d'une classe. Le constructeur nécessite que trois paramétres: les bornes d'intégration et un pointeur sur un tableau contenant les paramétres additionnelles.
- 09 mai 2006 22:39:31 :
- J'ai fixer un bug par rapport au nombre d'itération maximum (k<=Maxiter -> k<Maxiter)
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
integration des biliothèques Qt à vc++6 [ par rderdouri ]
j'arrive pas à faire compiler un client (sockets) Qt sous vc++6, pourtant le serveur compile!!!!!!si vous avez des idées je serai ravi. ok::::))))
Choix de base de données pour integration sur cd [ par bmwe21 ]
Bonjour, je suis entrain de developper un logiciel pour ma boite. ce logiciel sera distribuer sur cd et ne devra pas laissé de trace a part dans les d
Integration de fenetre OpenGL dans fenetre C# ? [ par Thilde ]
Bonjour J aimerais bien savoir si il est possible ou non d integrer une fenetre OpenGL via la SDl ou glut dans une fenetre c# ? La je commen
integration TCP [ par tarek93250 ]
je vais essayer d'etre bref et precis.j'ai créer un système client/serveur, et un automate TCP sur UNIX. chacun a part.le C/S marche en r
Integration.. [ par gdpasmini ]
Hello, j'ai un petit probleme. je cherche a faire un logiciel destiné a comporter une IHM. Ce logiciel comporte un module permettant d'effectuer diff
Integration DLL [ par Quazar ]
SalutJe cherche a encapsuler une librairie (dll) dans mon exe.J'ai une application utilisant une dll. Je voudrais faire en sorte que la dll ne soit pa
integration d'une fonction elliptique [ par prisen ]
bonjour,j'aimerais calculer l'orbite de mercure. Le probléme apres calcul analytique deja faite, je me ramene a une euation elliptique, qui la suivant
Integration de mon filtre directshow [ par pilulu ]
Bonjour,Je travaille sur un filtre de transformation directshow que je veux integrer à mon application de lecture de flux video venant d'un module d'e
Utiliser QT sous Eclipse avec Qt Eclipse Integration (Linux) [ par Chatbour ]
Salut à tous et à toutes, Je galère pour installer Qt Eclipse Integration sous Eclipse sur mon Fedora 12 en appliquant les instructions dans [url=htt
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Forum
RE : SAC A DOS RE : SAC A DOS par hadjkaddour
Cliquez pour lire la suite par hadjkaddour
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|