romanticide
Inscrit le: 13 Mar 2005 Messages: 47
|
Posté le: 03 Mai 2006 10:05 Sujet du message: pb d'extraction de liste |
|
|
salut, j'ai conçu un programme pour avoir la base spline jusqu'au cubique.
mais le problème est que je me retrouve avec une liste qui diffère selon les valeurs de t.
et je voudrais extraire pour le cas de dimension 2, les quatres listes qui dépendent de t.
Voici le programme:
Fonction de Caractérisation d'un Segment
> FonctCaract:=proc(a,b)
> local f,g,N;
> f:=piecewise(t>=a,1);
> g:=piecewise(t>b,1);
> N:=combine(f-g);
> print(N);
> N;
> end:
Equations Polynomiales des Courbes
> EquaPoly:=proc(Noeuds,k)
> local m,n,i,r,N0,a,b,N1,f;
> m:=nops(Noeuds);n:=m-k;
> print(`Calcul de la Base Spline`);
> print(`Nombre de noeuds m=`,m,` k=`,k,` n=m-k=`,n);
> print(`Classe=k-2=`,k-2,` degrés=k-1=`,k-1,` Nombre de Splines=`,n);
> print(`Noeuds=`,Noeuds);
> N0:=[];
> for i to m-1 do
> f:=FonctCaract(Noeuds[i],Noeuds[i+1]);
> N0:=[op(N0),f];
> od:
> print(`Initialisation`);
> r:=1;
> print(` `);print(`Pas de l'algorithme r=`,r,`Classe=r-2=`,r-2,`degrés=`,r-1,` Nombre de Courbes=`,m-r,`Nombre de noeuds par supports=r=`,r);
> print(N0);
>
> for r from 2 to k do
> N1:=[];
> print(`Pas de l'algorithme r=`,r,` Classe=r-2=`,r-2,` degrés=`,r-1,` Nombre de Courbes=`,m-r,` Nombre de noeuds par supports=r=`,r);
> for i to n+k-r do
> print(`r=`,r,` i=`,i);
> a:=(t-Noeuds[i])/(Noeuds[i+r-1]-Noeuds[i]); b:=(Noeuds[i+r]-t)/(Noeuds[i+r]-Noeuds[i+1]);
> f:=combine(a*N0[i]+b*N0[i+1]);f:=expand(f);
> print(`a=`,a,` b=`,b);print(` f=`,f);
> N1:=[op(N1),f];
> od;
> print(N1);
> N0:=N1;
> od;
> print(`Nombre de courbes=`,nops(N0));
> [Noeuds,k,N0]:
> end:
Merci d'avance |
|