C - calcul d'intégrale

Résolu/Fermé
v1rg1le Messages postés 5 Date d'inscription mercredi 30 mai 2012 Statut Membre Dernière intervention 27 août 2012 - 27 août 2012 à 09:54
v1rg1le Messages postés 5 Date d'inscription mercredi 30 mai 2012 Statut Membre Dernière intervention 27 août 2012 - 27 août 2012 à 13:04
Bonjour,

Je développe actuellement un programme où je manipule des matrices en C, et je me vois contraint d'utiliser une intégrale, ce que je n'arrive pas à programmer. Il s'agirait de faire l'opération suivante :
x = intégrale de y(1-10^(-z)) dw
les variables w, x, y et z sont toutes de type "double".

Merci d'avance
A voir également:

5 réponses

Utilisateur anonyme
27 août 2012 à 10:01
Bonjour

Ton expression y(1-10^(-z)) ne dépend pas de la variable d'intégration w ? Alors il suffit d'une multiplication par la longueur de l'intervalle d'intégration.
1
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
27 août 2012 à 12:39
En gros tu connais déjà toutes tes valeurs w, y(w), et z(w), il est donc facile de calculer f(w)=y(w)[1-10^-z(w)]

Après tu ne peux faire qu'une approximation de l'aire sous la courbe de f, avec par exemple la méthode des trapèzes :

Entre deux valeurs successives de w (w1 et w2 par exemple), tu calcules l'aire du trapèze dessiné par f(w1) et f(w2) ce qui donne sauf erreur (w2-w1)[f(w1)+f(w2)]/2

Il faut bien sûr faire la somme de ces aires pour toutes les valeurs de w.

Remarque : il y a des méthodes d'approximation plus précises, mais celle-ci est simple à mettre en oeuvre et te suffira surement.
1
v1rg1le Messages postés 5 Date d'inscription mercredi 30 mai 2012 Statut Membre Dernière intervention 27 août 2012
27 août 2012 à 13:04
Wunderbach, c'est exactement ce que je cherchais. Merci beaucoup à vous deux, bonne journée et ayez une longue vie, remplie de bonheur, d'enfants et de la bénédiction de dieu.
0
v1rg1le Messages postés 5 Date d'inscription mercredi 30 mai 2012 Statut Membre Dernière intervention 27 août 2012
27 août 2012 à 10:05
Ow. Tout d'abord, merci pour la réponse (plus que) rapide.
Et ensuite, comment fait-on donc ça :$ ?
0
Utilisateur anonyme
27 août 2012 à 10:29
Une multiplication en C ? Avec *.
Si tu as le niveau pour manipuler des matrices, tu dois déjà être au courant.
En appelalnt w0 et w1 les bornes de l'intervalle d'intégration :
x= (w1-w0) * y * (1-pow(10,-z));

Mais ça me semble trop simple. Mon petit doigt me dit que tu vas revenir en modifiant ta question initiale.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
v1rg1le Messages postés 5 Date d'inscription mercredi 30 mai 2012 Statut Membre Dernière intervention 27 août 2012
27 août 2012 à 11:18
En effet, me revoilà.

Mon y et mon z sont en fait, bien que stockés en tant que valeurs numériques, dépendants de mon w. Je ne sais pas si je suis clair.

J'ai deux tableaux avec à chaque fois la valeur de w et la valeur de y ou z correspondant. Je pense qu'on peut donc plutôt associer y et z à des fonctions, même si chez moi je n'utilise que des valeurs numériques. Est-ce que cela fonctionne toujours ou pas ?
0