Mathc initiation/Fichiers c : c43cd


Sommaire

En géométrie, la question de la longueur d'un arc est simple à concevoir (intuitive). L'idée d'arc correspond à celle d'une ligne, ou d'une trajectoire d'un point dans un plan ou l'espace par exemple. Sa longueur peut être vue comme la distance parcourue par un point matériel suivant cette trajectoire ou encore comme la longueur d'un fil prenant exactement la place de cette ligne. La longueur d'un arc est, soit un nombre positif, soit l'infini. [wikipedia]


Installer et compiler ces fichiers dans votre répertoire de travail.

c05d.c
/* ---------------------------------- */
/* save as c05d.c                     */
/* ---------------------------------- */
#include "x_hfile.h"
#include      "fd.h"
/* ---------------------------------- */
int main(void)
{
double    a =   .5;
double    b =   2.;
double    n =  2*10;

double    h = H;

 clrscrn();

 printf(" Let f be smooth on [%.3f,%.3f].\n\n", a, b);
 printf("  f : x-> %s\n",   feq);
 printf(" Df : x-> %s\n\n\n", Dfeq);

 printf(" The arc length of the graph of f from A(a,f(a)) to B(b,f(b)) is :\n\n");
 printf("    (b\n");
 printf(" int(   sqrt( 1 + Df(x)**2 )* dx\n");
 printf("    (a\n\n");
 
 printf(" Or\n\n");  
 
 printf("    (b\n");
 printf(" int( f(x) ds\n");
 printf("    (a\n\n"); 
 stop(); 

 clrscrn();

 printf(" With the function simpson(); : \n\n"
        "    (%.3f\n"
        " int(        sqrt(1+(%s)**2) * dx = %.5f\n"
        "    (%.3f\n\n\n",

         b,
            Dfeq, simpson(ds,a,b,n),
         a);
         
 printf(" With the function int_ds(); : \n\n"
        "    (%.3f\n"
        " int(  f(x)  ds = %.5f\n"
        "    (%.3f\n\n\n",

         b,
           int_ds(f, a,b,n, h),
         a);
 stop();

 return 0;
}
/* ---------------------------------- */
/* ---------------------------------- */


Cette fois nous utilisons les intégrales pour calculer la longueur d'une courbe de la forme f(x).

Résultat dans gnuplot
With Gnuplot and with the C Language


Exemple de sortie écran :

 Let f be smooth on [0.500,2.000].

  f : x-> log(x)
 Df : x-> 1./x


 The arc length of the graph of f from A(a,f(a)) to B(b,f(b)) is :

    (b
 int(   sqrt( 1 + Df(x)**2 )* dx
    (a

 Or

    (b
 int( f(x) ds
    (a

 Press return to continue.


Exemple de sortie écran :

 With the function simpson(); : 

    (2.000
 int(        sqrt(1+(1./x)**2) * dx = 2.08047
    (0.500


 With the function int_ds(); : 

    (2.000
 int(  f(x)  ds = 2.08047
    (0.500


 Press return to continue.


Vérifier le résultat avec Octave 5.2 :

I = quad (f, a, b) 
>> I = quad (@(x) (sqrt(1+(1/x).*(1/x))), 0.500,2.000)
I =  2.0805