Accueil > Forum > > > > Trapèzes et intégrales
Trapèzes et intégrales
lundi 31 mars 2003 à 15:33:15 |
Trapèzes et intégrales

Pallas4
|
Voila je dois faire un programme calculant une intégrale par la méthode des trapèzes, plus précisément celle de Romberg. Et il faudrait qu'au lancement du programme, l'utilisateur puisse choisir les fonctions qui pourront être utiliées dans le programme. exemple : l'utilisateur lance le programme, il a le choix entre : exponentielle, cosinus, ln, sinus, tangeante, ch,sh et th. C'est assez pressé, merci d'avance.  
|
|
lundi 31 mars 2003 à 15:36:12 |
Re : Trapèzes et intégrales

Pallas4
|
 ------------------------------- Réponse au message : ------------------------------- > Voila je dois faire un programme calculant une intégrale par la méthode des trapèzes, plus précisément celle de Romberg. Et il faudrait qu'au lancement du programme, l'utilisateur puisse choisir les fonctions qui pourront être utiliées dans le programme. > exemple : l'utilisateur lance le programme, il a le choix entre : exponentielle, cosinus, ln, sinus, tangeante, ch,sh et th. > C'est assez pressé, merci d'avance. > >  > 
|
|
lundi 4 juillet 2005 à 09:34:35 |
Re : Trapèzes et intégrales

Yves Dubois
|
Voici le code que mon collègue Michel Bernard a écrit, Cette méthode converge très rapidememt.
En espérant cette réponse pas trop ardive (je viens de m'inscrire). Si vous avez entretemps une autre méthode qui convergerait encore plus ramidement, n'hesitez pas à nous la transmettre !
Bien à vous,
Yves
#include <iostream>
#include <string>
#include <sstream>
#include <vector>
#include <math.h>
using namespace std;
double RombergIntegrator( double func(double), ///< Function to integrate
double a, ///< Lower bound of the integral
double b, ///< Upper bound of the integral
double eps = 1.E-9 ///< Accuracy
)
{
double h = (b-a)/2.; // initial step
int n = 0; // iteration counter
int pow2 = 1; // powers of 2
double i00, iprev;
vector< double > I; // store extrapolated values from the Neville's algorithm
int k;
// compute I(0,0)
double i = h*( (*func)(a) + (*func)(b) );
double i0 = i;
while ( n<20 )
{
I.push_back(i);
// save latest estimation
iprev = i;
// save I(n,0)
i00 = i0;
// compute I(n+1,0) with recursive trapezoidal rule
i0 = 0;
for (k=1;k<=pow2;k++)
{
i0 += (*func)( a + h*( 2.*k - 1) );
}
i = i0 = i00/ 2 + h * i0;
// Richardson extrapolation using Neville's algorithm
int pow4 = 1;
for (k=0;k<=n;k++)
{
pow4 *= 4;
double itemp = I[k];
cout << "I(" << n << "," << k << ") = " << itemp << '\t';
I[k] = i;
i = (pow4 * i - itemp) / (pow4 - 1);
}
cout << endl;
// exit if wanted accuracy has been raached
if ( fabs( i - iprev ) <= eps*fabs(i) ) return i;
n++;
pow2 *= 2;
h /= 2;
}
cout << "Too many steps in RombergIntegrator" << endl;
return 0.;
}
double f(double x)
{
return ( x*x + x + 1) * cos(x);
}
double g(double x)
{
return ( x*x*x*x*log( x + sqrt( x*x + 1 ) ) );
}
main()
{
double pi=3.1415926535;
cout.precision( 15);
cout << "I(f)=" << RombergIntegrator( f, 0., pi/2. ) << endl;
cout << "I(g)=" << RombergIntegrator( g, 0., 2. ) << endl;
return 0;
}
|
|
lundi 4 juillet 2005 à 09:36:37 |
Re : Trapèzes et intégrales

Yves Dubois
|
Voici le code que mon collègue Michel Bernard a écrit, Cette méthode converge très rapidememt.
En espérant cette réponse pas trop ardive (je viens de m'inscrire). Si vous avez entretemps une autre méthode qui convergerait encore plus ramidement, n'hesitez pas à nous la transmettre !
Bien à vous,
Yves
#include <iostream>
#include <string>
#include <sstream>
#include <vector>
#include <math.h>
using namespace std;
double RombergIntegrator( double func(double), ///< Function to integrate
double a, ///< Lower bound of the integral
double b, ///< Upper bound of the integral
double eps = 1.E-9 ///< Accuracy
)
{
double h = (b-a)/2.; // initial step
int n = 0; // iteration counter
int pow2 = 1; // powers of 2
double i00, iprev;
vector< double > I; // store extrapolated values from the Neville's algorithm
int k;
// compute I(0,0)
double i = h*( (*func)(a) + (*func)(b) );
double i0 = i;
while ( n<20 )
{
I.push_back(i);
// save latest estimation
iprev = i;
// save I(n,0)
i00 = i0;
// compute I(n+1,0) with recursive trapezoidal rule
i0 = 0;
for (k=1;k<=pow2;k++)
{
i0 += (*func)( a + h*( 2.*k - 1) );
}
i = i0 = i00/ 2 + h * i0;
// Richardson extrapolation using Neville's algorithm
int pow4 = 1;
for (k=0;k<=n;k++)
{
pow4 *= 4;
double itemp = I[k];
cout << "I(" << n << "," << k << ") = " << itemp << '\t';
I[k] = i;
i = (pow4 * i - itemp) / (pow4 - 1);
}
cout << endl;
// exit if wanted accuracy has been raached
if ( fabs( i - iprev ) <= eps*fabs(i) ) return i;
n++;
pow2 *= 2;
h /= 2;
}
cout << "Too many steps in RombergIntegrator" << endl;
return 0.;
}
double f(double x)
{
return ( x*x + x + 1) * cos(x);
}
double g(double x)
{
return ( x*x*x*x*log( x + sqrt( x*x + 1 ) ) );
}
main()
{
double pi=3.1415926535;
cout.precision( 15);
cout << "I(f)=" << RombergIntegrator( f, 0., pi/2. ) << endl;
cout << "I(g)=" << RombergIntegrator( g, 0., 2. ) << endl;
return 0;
}
|
|
Cette discussion est classée dans : programme, utilisateur, trapèzes, intégrales, img
Répondre à ce message
Sujets en rapport avec ce message
base de données (besoin d'aide) [ par Hansol ]
Bonjour,Je suis en train de créer un programme de Budget. Mon problème est que lorsqu'un utilisateur utilise le programme, il doit inscrire son préno
Programme de téléphone [ par smitchel ]
LE but serai de fabriquer un prog pour téléphoné en répétiton via le modem en enregistrant en un temp donné ce qui passe sur la ligneYoman
Propagation sur le principe d'un vers [ par Florian95 ]
Bonjour,Voila je developpe un petit programme de gestion à distance, d'aide a distance, enfin il a plein d'application...Pour le moment il marche sur
Gestionnaire d'impression [ par danyboy94 ]
BonjourJe suis sur le développement d'un gestionnaire d'impression,et j'ai besoin d'aide pour trouver codes source ou documentations.J'explique,Dans u
[C#] Dialog Box - Input Box [ par bibicool ]
Bonjour à tous,Je suis face à un problème, je dois poser une question à un utilisateur, et absolument attendre sa réponse avant de continuer mon code.
Arrêt du programme [ par mltgn ]
Salut,Je souhaite arrêter mon application quand l'utilisateur ne travaille plus la dessus. C'est à dire quand certain temps passe sans que l'utilisate
PHPbb [ par Ben2998 ]
Bonjour,Je commence à créer un programme assez simple d'utilisation mais pour l'utiliser, il me faudrait faire une Form pour me connecter sur le serve
MOt de passe [ par tekila_bandita ]
Je fais un programme vb qui demande à l'utilisateur de créer un mot de passe, le probleme, c'est que je ne sais pas comment faire pour que "frmPswd"
Ouvrir plusieurs fichiers, définis par l'utilisateur [ par dhartex ]
Bonjour, je souhaiterai, dans mon programme, que l'utilisateur puisse choisir un certain nombre de fichier pour qu'ils soient traités par le programme
Faire attendre un programme... [ par Simouss33 ]
Bonjour tout le monde!Je vais aller droit au but (je programme sur Visual Studio 2003). J'ai créé un bouton qui exécute une requête nécessitant des pa
Livres en rapport
|
Derniers Blogs
XNA IS DEAD!XNA IS DEAD! par richardc
Depuis la semaine dernière (et grâce aux TechDays 2012), je me penche activement sur la nouvelle version de Windows, aka Windows 8. Vous me direz, il était temps puisque la première preview date de Septembre dernier.
OK. Remarquez, on n'en est qu'aux...
Cliquez pour lire la suite de l'article par richardc TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 !TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 ! par ROMELARD Fabrice
Speakers: Fabrice Meillon et Stanislas Quastana Cette session est basée entièrement sur celle donnée lors de la BUILD cet hiver. Il n'y a pas d'ajout d'information en rapport avec cet évènement passé. Windows 8 Server sera intégralem...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [HTML5] AUTOUR DU W3C : NOUVEAUX STANDARDS ET WEB MOBILE (LILLE)[HTML5] AUTOUR DU W3C : NOUVEAUX STANDARDS ET WEB MOBILE (LILLE) par Gio
Je m'y prends un peu tard je sais, mais bon je suis développeur web et donc hyper fainéant ! Toujours dans le cadre des technologies émergentes, ici HTML5, parce qu'on aime HTML5 chez Wyg , nous seront présent, le vieux ( Aurélien V.) et moi, pour pr...
Cliquez pour lire la suite de l'article par Gio [WP7] DYNAMICALLY CHANGE STARTUP PAGE[WP7] DYNAMICALLY CHANGE STARTUP PAGE par KooKiz
Let's say that you want to allow the user to customize the startup page of your application. You can easily change the startup page by editing the 'NavigationPage' attribute in the manifest file. But the manifest cannot be modified once the applicatio...
Cliquez pour lire la suite de l'article par KooKiz
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|