Pourriez vous me donner le code source pour calculer l'aire d'une courbe constituée de points expérimentaux.
Merci d'avance.
Pourriez vous me donner le code source pour calculer l'aire d'une courbe constituée de points expérimentaux.
Merci d'avance.
Regarde par là, s'il n'y a pas quelque chose :
http://www.efg2.com/Lab/
L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!
C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)
Je ne trouve pas la réponse de Lung!
Merci pour toute aide.
salut
Ici
mais c'est pas de Lung
@+ Phil
Blaise PascalNous souhaitons la vérité et nous trouvons qu'incertitude. [...]
Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
PS : n'oubliez pas le tag
Tu dois utiliser le calcul d'intégrale pour calculer la surface de ta courbe.
Je ne vois pas de suite les réponses, je ne sais pas comment les afficher sur le forum.
F5 pour raffraichir ta page web.
Ne prends pas celle du cache proposée par google par exemple.
ps: Peux-tu donner l'équation de ta courbe stp?
Voir ici http://www.developpez.net/forums/sho...hlight=surface
La méthode des trapèzes est en fait un calcul par intégrale.
Envoyé par defluc
Merci pour l'aide, mais je n'arrive pas à trop comprendre comment calculer l'aire de la courbe avec votre code. Moi je lis un fichier texte de valeurs expérimentales, je met ça dans un tableau par exemple et la suite je voudrais de l'aide pour calculer l'aire, je voudrais du code s'il vous plait. Merci bien pour l'aide.
Tu peux nous décrire ton application et nous donner un exemple concret de valeurs récupérées.
Pourriez vous m'expliquer davantage votre code, et comment faire pour appliquer ce code à mes données stockées dans un tableau ( après avoir lu un fichier texte).Envoyé par defluc
pour lire mon tableau:
for i:=1 to nech do
begin
val:= tab[i]; // c'est ma valeur expérimentale
end;
Merci
Et par exemple pour calculer la somme de mes valeurs, je fais comme ça:Envoyé par rabiahb
som:=0;
for i:=1 to nech do
begin
som:=som+tab[i];
end;
somme:= som; // c'est la somme de mes valeurs;
salut
en fait si on comprend bien
la valeur est implicite tu n'as que les valeur de y
@+ Phil
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45 var P:array of TPoint; i, x1, y1, x2, y2, DeltaY:integer; Surf, Trap:double; begin setlength(P,length(tab)); for i:=low(tab) to high(tab) do begin P[i].x := i; P[i].y := Tab[i]; end; DeltaY := 2147483647; For i := low(P) to high(P) do // Détermination du Minimum pour la translation des Y if P[i].Y < DeltaY then DeltaY :=P[i].Y; if DeltaY > 0 then DeltaY := 0 else DeltaY := Abs(DeltaY); Surf := 0; Trap := 0; x1 := P[0].X; y1 := DeltaY + P[0].Y; Memo1.Clear; memo1.lines.Add('Point 0 : ' + IntToStr(P[0].X) + ' , ' + IntToStr(P[0].Y) + ' devient ' + IntToStr(x1) + ' , ' + IntToStr(y1) + ' Trap ' + Floattostr(Trap)+ ' Surf : ' + Floattostr(Surf)); For i := low(P) to high(P) dobegin x2 := P[i].X; y2 := DeltaY + P[i].Y; Trap := (y1+y2)/2*(x2-x1); Surf := Surf + Trap; x1 := x2; y1 := y2; memo1.lines.Add('Point '+inttostr(i)+' : ' + IntToStr(P[i].X) + ' , ' + IntToStr(P[i].Y) + ' devient ' + IntToStr(x1) + ' , ' + IntToStr(y1) + ' Trap ' + Floattostr(Trap)+ ' Surf : ' + Floattostr(Surf)); end; memo1.lines.Add('________'); memo1.lines.Add('Surf = '+FloatToStr(Surf));
Blaise PascalNous souhaitons la vérité et nous trouvons qu'incertitude. [...]
Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
PS : n'oubliez pas le tag
Dans la dicussion citée par Defluc (Voir ici http://www.developpez.net/forums/sho...hlight=surface) tu trouves le code de la function SurfacePolygone(Points:array of TRealPoint):double; c'est cette fonction qui va calculer l'aire de la courbe.je n'arrive pas à trop comprendre comment calculer l'aire de la courbe avec votre code
Il suffit d'appeler cette fonction en lui transmettant comme paramètre le nom du tableau qui contient tes valeurs expérimentales. Ce tableau doit être de même type que le array of TRealPoint.
En bref avec maSurface:=SurfacePolygone(monTableau);
N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi
Oups!! Ca bouge vite ici.
N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi
Envoyé par anapurna
Oui, effectivement, je n'ai que les valeur de y. Merci pour l'aide. Je vais utiliser votre code. Merci bien. Je vous dirais quoi.
Vu :
pour lire mon tableau:
for i:=1 to nech do
begin
val:= tab[i]; // c'est ma valeur expérimentale
end;On en déduit que le passage de i à i+1 correspond à un DeltaX c'est à dire que x(i+1) = x(i)+DeltaX si DeltaX constant, et x(i+1) = x(i)+DeltaX(i) si le Delta est variable.tu n'as que les valeur de y
Sinon avec seulement des y il est impossible de calculer une surface, il faut les deux.
Il faut donc remplacer val:= tab[i]; par qq-chose du genre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 type TRealPoint=record X,Y:double; end; var Points: array [0..nech] of TRealPoint; procedure LaSurface; var Surface : double; begin // Préparation des données : Points[0].X:=21.297; Points[0].Y:=14.18; Points[1].X:=44.32; Points[1].Y:=69.12; ....... Points[nech].X:=12.12; Points[nech].Y:=15.12; // Calcul surface Surface:=SurfacePolygone(Points); Showmessage(FloatToStr(Surface)); end;
N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi
Pour l'axe des abscisses, donc les x, je metterai tout simplement la valeur de i, car je n'ai rien d'autre, ni le temps, ni autre variable. Donc,Envoyé par Gilbert Geyer
et je calcul la surface.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 for i:=1 to nech do begin Points[i].x:=i; Points[i].y:= tab[i]; end;
Etes vous d'accord ou non!
Du point de vue programmation OK. Par contre cela conduit à obtenir pour la surface une équation aux dimensions du type S=i*y ou i exprime une unité arithmétique et y l'unité qui correspond aux mesures expérimentales. C'est un peu comme si on disait que la Surface est égale au produit d'un nombre de carottes par un nombre de fourchettes.Pour l'axe des abscisses, donc les x, je metterai tout simplement la valeur de i, car je n'ai rien d'autre, ni le temps, ni autre variable. Donc,
for i:=1 to nech do
begin
Points[i].x:=i;
Points[i].y:= tab[i];
end;et je calcul la surface.
Etes vous d'accord ou non!
Tout dépend donc de l'utilisation qu'il sera faite du résultat du calcul.
Mais si l'objectif se limite par exemple lors d'un calcul suivant de comparer la surface S1 résultant d'une 1ère série de mesures à la Surface S2 d'une seconde, le rapport S1/S2 aura quand même une sigification.
N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi
Je suis d'accord, en général c'est axe des abscisses avec unité temps, et axe des ordonnées autre unité. Mais moi, je ne récupère que des valeurs de y que je stocke dans un tableau: ici joint le fichier texte données_brutes, et je dois calculer surface pour chaque colonne de données.Envoyé par Gilbert Geyer
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager