kobeymane
Messages postés58Date d'inscriptiondimanche 29 janvier 2012StatutMembreDernière intervention29 avril 2012
-
5 févr. 2012 à 01:48
kobeymane
Messages postés58Date d'inscriptiondimanche 29 janvier 2012StatutMembreDernière intervention29 avril 2012
-
5 févr. 2012 à 15:04
Bonjour,
Je suis un débutant en vb.net. Je veux élaborer un programme qui calcul l'integrale d'une fonction saisie par l'utilisateur (dans le cadre d'un PFE). Le problème c'est au niveau de la saisie de la fonction: L'utilisateur doit taper une fonction f(x) donc de type string, et lors du calcul j'ai besoin de f(x+h) et f(x) en Decimal. La conversion ne se fait pas.
Voici comment mon programme se présente:
Public Class Form1
Private Sub form1_load()
TextBox1.Text = "" 'f(x)
TextBox2.Text = "" 'a
TextBox3.Text = "" 'b
Label4.Text = "" 'resultat
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim inf, sup As Integer
Dim a, b, aire As Decimal
Dim fn As String
Dim n As Integer = 1000000
Dim x, h, i, j As Decimal
aire = 0
x = a
'saisie de la fonction
fn = TextBox1.Text
fn = LCase(fn)
If fn = "" Then
MsgBox("vous devez entrer une fonction au clavier")
Exit Sub
End If
'saisie des bornes: entrer des valeurs numériques
If Not (IsNumeric(TextBox2.Text)) Then
MsgBox("entrer une valeur numérique de la borne inférieure")
Exit Sub
End If
If Not (IsNumeric(TextBox3.Text)) Then
MsgBox("entrer une valeur numérique de la borne supérieure")
Exit Sub
End If
'convertir les texts
inf = CType(TextBox2.Text, Integer) 'a
sup = CType(TextBox3.Text, Integer) 'b
If inf > sup Then
h = inf
inf = sup
sup = h
End If
'calcul de l'integral et affichage du résultat
h = (sup - inf) / n
For x = inf To sup
i = CType(fn + h, Integer)
j = CType(fn, Decimal)
aire = aire + h * (i + j) / 2
x = x + h
Next x
Label4.Text = Math.Round(aire, 2).ToString
End Sub
End Class
Est-il un moyen de corriger le problème? Sinon quelle est la solution?
Grand Merci pour vos réponses
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018212 5 févr. 2012 à 08:33
Bonjour, ShayW
je pense :
- qu'il y a là carence d'expression et que kobeymane veut parler du calcul d'intégrale d'une fonction dérivable (intégrale de f entre deux bornes).
- que ce calcul implique principalement des connaissances mathématiques
- que, s'agissant (il le dit lui-même) d'une démarche dans le cadre d'un Projet de De Fin d'Etudes, il n'est pas vraiment raisonnable de faire cette démarche à sa place.
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018212 5 févr. 2012 à 08:41
et je pense qu'il serait bien inspiré de se servir de gougoutruc et d'y rechercher à l'aide des mots que j'ai employés :
intégrale d'une fonction dérivable En se concentrant sur les liens de vulgarisation des mathématiques (par exemple)
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
kobeymane
Messages postés58Date d'inscriptiondimanche 29 janvier 2012StatutMembreDernière intervention29 avril 2012 5 févr. 2012 à 14:38
Bonjour ShayW,
Effectivement comme ucfoutu l'a dit; je vise à calculer une integrale d'une fonction dérivable qui va me servir pour traiter des signaux dans mon projet (outils mathématiques: Transformée de Fourier, de LAPLACE, produit de convolution,... que le calcul integrale représente la base). j'ai cherché les différents algorithmes, et j'ai trouvé que la méthode des rectangles à point milieu est la plus facile qui donne une précision suffisante. Donc j'ai essayé en tant que débutant de traduire cet algorithme dans un programme.
Ce programme va permettre ucfoutu de saisir une fonction f(x) pour que le programme calcul son integrale. lors de ce calcul j'ai besoin de f(x+h) (h représente le "dx") et de f(x) 'en type numérique pour effectuer le calcul' bien que l'utilisateur l'a tapé sous forme de chaine de caractère.
Exemple: Vous taper dans la zone de 'f(x)':ln(x)
pendant la partie de calcule j'ai besoin de
f(x+h)=ln(x+h) en type numéique
Lors de la compilation, un message d'erreur m'informe qu'il est impossible de convertir f(x) en type numérique. J'ai déja un programme que j'ai téléchargé sur le site qui calcul l'integrale mais les algorithmes se different en plus je ne veux pas faire de copier coller dans mon projet
Merci d'avance
Vous n’avez pas trouvé la réponse que vous recherchez ?
kobeymane
Messages postés58Date d'inscriptiondimanche 29 janvier 2012StatutMembreDernière intervention29 avril 2012 5 févr. 2012 à 15:04
voici l'algorithme pour mieux comprendre la démarche:
Considérons donc une fonction continue sur un intervalle [a,b].Intégrer signifie calculer l'aire sous la courbe de la fonction entre x = a et x = b.
La première méthode qui vienne à l'esprit, c'est de découper l'aire entre la courbe f(x), l'axe des x et les droites x a et x b, en une multitude de petits rectangles de largeur faible, appelons la h, et de hauteur f(h). L'aire sous la courbe est obtenue en sommant tous ces petits rectangles
et voici l'implémentation:
C Integration par la methode des rectangles (point milieu)