Bonjour,
Le but de mon TIPE est de trouver les coordonnées de l'habitat d'un criminel à partir des coordonnées des lieux de meurtres qu'il a commis. Pour cela, j'utilise une formule de densité de probabilité (probabilité pour une surface). Cette formule peut être assimilée à une fonction à deux variables. Cependant, elle admet des conditions. POur ce faire, je crée la fonction à partir d'une procédure avec des boucles if. Pour faire afficher les zones de probabilité, j'utilise contourplot. Cependant, j'avais comme message d'erreur contourplot ne pouvait pas faire d'évaluation en booléen (à cause des if). Je rajoute alors la ligne suivante pour transformer ma procédure en fonction
Prob:=(x,y)->Prob(x,y); et la commande whattype me confirme que Prob est bien une fonction. Je réessaie contourplot et là je reçois le message d'erreur suivant Error, (in plot/iplot2d/levelcurve) could not evaluate expression
Et c'est là que je n'arrive pas à comprendre et que j'ai besoin d'aide
Alors que Prob est une fonction, il n'arrive pas à la tracer !
Pour vous aider, voici l'algorithme
c:=9: Nombre de meurtres
> x[1]:=2.15:y[1]:=-0.46: Coordonnées des lieux de meurtres
> x[2]:=2.83:y[2]:=-1.16:
> x[3]:=2.41:y[3]:=-2.53:
> x[4]:=2.96:y[4]:=-3.03:
> x[5]:=2.81:y[5]:=-3.35:
> x[6]:=2.32:y[6]:=-3.28:
> x[7]:=1.82:y[7]:=-3.52:
> x[8]:=1.82:y[8]:=-3.55:
> x[9]:=2.46:y[9]:=-7.13:
> k:=(1/c): Constante
> p:=4.13: q:= -7.18: Taille de la carte
> B:=0.2: Constante (zone tampon)
> f:=0.2: g:=0.4: Constantes
Procédure pour créer la fonction
> Prob:=proc(x,y)
> local m;
> for m from 1 to c do
> if (abs(x-x[m])+abs(y-y[m])=0)
> then 0;
> else
> if (abs(x-x[m])+abs(y-y[m])<=B)
> then k*sum((B^(g-f))/((2*B-abs(x-x[n])-abs(y-y[n]))^g),n=1..c);
> else k*sum(1/(abs(x-x[n])+abs(y-y[n]))^f,n=1..c);
> fi;
> fi;
> od;
> end;
>
> Prob:=(x,y)->Prob(x,y);
> with(plots):
> contourplot(eval(Prob(x,y)),x= 0..p,y=q..0,filled=true);
> plot3d(eval(Prob(x,y)),x=0..p, y=q..0);
-----