Besoin d'aide pour un algo

C’est pour un projet, je cherche à calculer l’integrale de la dérivée au carré d’une fonction strictement croissante, en discret. C’est donc une série de points.

Pour calculer l’intégrale, c’est pas très compliqué, il suffit de calculer l’aire de chaque trapèze. C’est la méthode d’intégration rapprochée de Riemann, ça se code facilement. Mais comment faire pour calculer la dérivée d’une fonction dont on ne connaît que quelques points ? Je ne vois pas du tout :stuck_out_tongue:

tu peux utiliser la formule à l’ordre 1 :
(y1-y0)/h
avec h la distance entre tes points
Après y’a plein d’autres formules + complquées et + précises :stuck_out_tongue:

(j’ai pris 4 à ce partiel :P)

T’aurais pas un exemple sous la main?

[quote name=‹ lucasbfr › date=’ 28 Jan 2005, 15:20’]tu peux utiliser la formule à l’ordre 1 :
(y1-y0)/h
[right][post=« 326713 »]<{POST_SNAPBACK}>[/post][/right][/quote]

Merci !! Je pense que c’est ce que je dois utiliser.

Voici le code pour dix valeurs :

for (j = 0; j < 10; j++) {
if (nextx-lastx !=0)
integral += sqr((nexty-lasty)/(nextx-lastx));
lastx = nextx;
lasty = nexty;
nextx = lasty;
nexty = h[lastx];
}

Bon je suis encore un peu paumé… Je fais le calcul de l’intégrale en additionnant les valeurs de la dérivé, en principe je devrais utiliser Riemann mais là je vois pas comment faire vu que je n’ai pas de x correspondant à la valeur de la dérivée :stuck_out_tongue:

[quote name=‘Mickey45’ date=’ 28 Jan 2005, 15:20’]T’aurais pas un exemple sous la main?
[right][post=“326714”]<{POST_SNAPBACK}>[/post][/right][/quote]
Je ne vois pas ce que je pourrais dire de plus pour mieux expliciter le problème. C’est juste calculer l’intégrale de la dérivée d’une fonction discrète, à partir d’une série de poins. C’est une question assez générale.

h c’est le pas de temps
T c’est la periode

i 0 —> T / h
//f[i] correspond a la fonction au temps i
// h = la distence entre de valeur en absice

donc la valeur de la derivé discret
c’est f[i+1] - f[i] /h
aprés tu n’as plus qu’a mettre au carré les resultat

Et pour le cacule de l’intégrale c’est du discret toujours donc tu coupes entre chaques abscice et tu calcules l’aire du polygones (hi,0) (h(i+1),0) (hi,f’(i)²) (h(i+1),f’(i+1)²)

Ca va je suis assez claire ?

Koubiak

koubiak : erreur, tu considères que h est constant, c’est pas dans l’ennoncé du problème… donc c’est juste à condition de remplacer h par (x(i+1)-x(i)) partout, et pour f(i), mieux vaut parler de y(i), car i n’est pas l’abscice, c’est le numéro d’un point. La seule donnée que l’on a c’est que y(i)>y(i+1) <=> x(i)>x(i+1)

Donc primo, dans ton algo, tes ‹ i › tu les reclasse dans l’ordre croissant de x(i), sinon on va jamais snas sortir. On aura donc pour tout i entre 0 et n : x(i)<x(i+1) et y(i)<y(i+1)

une fois classé et numéro de 0 à n (on va dire) et il faut considérer d(i,j), la dérivée de la fonction entre i et j. On ne peut pas parler de d(i), car la dérivée en un point n’existe pas dans ce cas… elle existe avant le point (lim d(a) lorsque a tant vers i-), après le point, mais sur le point on ne sait pas dire

Alors là effectivement, d(i,j)=(y(j)-y(i))/(x(j)-x(i)).

Si tu trace le graphe représentant tes d(i,i+1), ca fera un style histogramme (des barres horizontales), ce qui est logique, puisqu’entre tes points i et i+1, c’est une droite que tu dessines… donc des dérivées constantes.

Pour l’intégrale de cette merdasse, si on admet que tu as déjà calculé d(i,i+1) pour tous les i entre 0 et n-1, alors l’intégrale est la somme des aires des rectangles :
(d(i,i+1)²)*(x(i+1)-x(i))

(didoum dim, di doum doum, le compte est bon)
j’ai bon, j’ai bon ? :stuck_out_tongue: (j’suis sur que j’ai dit une connerie, mais je cherche)

Merci ! Merci mille fois !! C’est bien un histogramme qu’on obtient et l’intégrale est bien la somme des aires des rectangles !!