[Gnuplot] Représenter une aire sous la courbe

Tout ce qui concerne par exemple les outils de calcul numérique, de calcul formel ou de géométrie.
[participation réservée aux membres inscrits]
Règles du forum
Merci de soigner la rédaction de vos messages et de consulter ce sujet avant de poster. Pensez également à utiliser la fonction recherche du forum.
ladgalen

[Gnuplot] Représenter une aire sous la courbe

Message non lu par ladgalen »

Bonjour

Je connais l'option filledcurves sous gnuplot qui permet (littéralement) de remplir l'espace sous une courbe.

Code : Tout sélectionner

plot x**2 with filledcurves
Mon problème c'est que si, par exemple, je calcule l'intégrale entre 0 et 1, je voudrais ne remplir l'espace sous la courbe qu'entre x=0 et x=1. Est ce que quelqu'un sait faire ?

Merci
François D.
Utilisateur chevronné
Utilisateur chevronné
Messages : 1367
Inscription : dimanche 30 juillet 2006, 10:04
Localisation : Alsace

Re: [Gnuplot] Représenter une aire sous la courbe

Message non lu par François D. »

Essaye :

Code : Tout sélectionner

plot x**2
plot [0:1] x**2 with filledcurves
ladgalen

Re: [Gnuplot] Représenter une aire sous la courbe

Message non lu par ladgalen »

Non cela ne fonctionne pas mais j'ai trouvé une solution :) !

En fait tu ne peux pas définir un xrange différent dans la commande set xrange et dans la commande plot. De plus dans plot tu ne peux pas définir deux xrange différents. Donc en faisant ce que tu proposes tu remplis tout l'espace sous la courbe sur toute la gamme de xrange et non uniquement sur le domaine d'intégration.

La solution que j'ai trouvée consiste à définir une fonction par morceaux. On la définit nulle partout sauf sur l'intervalle d'intégration :
fill.png
fill.png (5.53 Kio) Consulté 2826 fois
Et voilà le code gnuplot :

Code : Tout sélectionner

# terminal
set terminal png linewidth 2
set output 'fill.png'

# plot parameters
set grid
set xrange[0:6]
set style fill transparent solid 0.6 noborder
set sample 1000
set xlabel 'r   /   A'
set key on center top

# function parameters
a=0.529

# functions
F1(x) = 4/a**3 * x**2 * exp(-2*x/a)
pF1(x)= (x < 0.9*a) ? 0. : ( x > 1.1*a ) ? 0. : F1(x) 
p2F1(x)= (x < 2*a) ? 0. : F1(x) 

# plot
plot  pF1(x) title 'integrale 2' with filledcurves linetype 2, \
      p2F1(x) title 'integrale 1' with filledcurves linetype 3, \
      F1(x) title 'F1(x)' linetype 1