Apprendre Maple Index du Forum Apprendre Maple
Site dédié au logiciel de calcul formel Maple
 
  Page d'accueilPage d'accueil   FAQFAQ    RechercherRechercher    Liste des MembresListe des Membres    Groupes d'utilisateursGroupes d'utilisateurs 
S'enregistrerS'enregistrer    ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 

Toujours avec mon projet de spline!!!

 
Poster un nouveau sujet   Répondre au sujet    Apprendre Maple Index du Forum -> Programmation
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
meriam



Inscrit le: 04 Mar 2004
Messages: 11
Localisation: sain etienne du rouvray

MessagePosté le: 30 Mar 2004 16:46    Sujet du message: Toujours avec mon projet de spline!!! Répondre en citant

bonjour,

J'ai trois procedures cmat qui renvoie la matrice A , Csmb qui renvoie un un vecteur V et monslpine qui devrai resoudre Az=V.
Le probleme c'est que quand je tape linsolve(A,V) mod 5, il me retourne linsolve (A,V). Je crois avoir compris pour quoi la procedure csmb renvoie un V avec des virgules et j'ai fait le teste avec un V sans virgules et sa marche!
Bref j'arrete là mes explications qui ne sont pas tres "explicitent" et j'espere que quelqu'un pourra bien m'eclairer!Merci
Voici mes resultats:
> cmat:=proc(n)
> local i,j,A;
> A:=matrix(n+1,n+1);
> for i from 1 to n+1 do
> for j from 1 to n+1 do
> if i=j then
> if i=1 or i=n+1 then
> A[i,j]:=1;
> else
> A[i,j]:=2;
> end if;
> else
> if j=i-1 or i=j-1 then
> A[i,j]:=1/2;
> else
> A[i,j]:=0;
> end if;
> end if;
> end do;
> end do;
> evalm(A);
> end proc:
> cmat(2);

> csmb:=proc(f,n,a,b)
> local j,X,Y,V,h;
> h:=(b-a)/n;
> X:=[seq(evalf(a+h*j),j=0..n)];
> Y:=[seq(evalf(f(a+h*j)),j=0..n)];
> V:=vector(n+1,V[j]);
> for j from 1 to n+1 do ;if j=1 then
> V[j]:=((-3)/h)*(D(f)(X[1]))+(3/(h^2))*((Y[j+1])-(Y[j]));
> else if j=n+1 then
> V[j]:=((-3)/(h^2))*((Y[j-1])-(Y[j-2]))+(3/h)*(D(f)(X[n]));else
> V[j]:=(3/(h^2))*((Y[j+1])-2*(Y[j])+(Y[j-1]));
> end if; end if;
> end do;
> evalm(V);
> end proc:
> csmb(x->x^2,2,-1,1);

>
>

> monspline:=proc(f,n,a,b)
> local A,V,z,j;z:=vector(n+1,z[j]);
> A:=cmat(n);
> V:=csmb(f,n,a,b);
> z:=Linsolve(A,V) mod 5 ;evalm(z);
> end proc:
> monspline(x->x^2,2,-1,1);
Error, (in mod/Linsolve) 2nd argument must be a vector over a finite field
alors que je voudrai aoir z:=(2,2,2)


Merci
_________________
meriam
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
meriam



Inscrit le: 04 Mar 2004
Messages: 11
Localisation: sain etienne du rouvray

MessagePosté le: 31 Mar 2004 18:50    Sujet du message: merci c'est génial!!!! Répondre en citant

Merci,
J'ai pu terminer mon projet enfin il ne reste plus qu'a pofiner un peu!
bref ,j'ai fait ceci:
> with (linalg):
monspline:=proc(f,n,a,b)
local A,V,z,j,h,c,d,e,g,p,i,x,s,ts,tss;
h:=(b-a)/n;z:=vector(n+1,z[j]); A:=cmat(n);
V:=csmb(f,n,a,b);
z:=inverse(A)&*V;
evalm(z);

end proc:
monspline(x->x^2,2,1,2);


> pline:=proc(f,n,a,b)
local c,d,e,g,j,z,p,x,h,s,X,ts,tss;
h:=(b-a)/n; X:=[seq(evalf(a+h*j),j=0..n)];
g[0]:=f(a); z:=monspline(f,n,a,b);
c[0]:=((z[2]-z[1])/(6*h));
d[0]:=z[1]/2;
e[0]:=(f(X[1])-h^2*(((z[2]+2*z[1])/6)-f(a))/h);
p[0](x):=c[0]*(x-a)^3+d[0]*(x-a)^2+D(f)(a)*(x-a)+f(a);s:=p[0](x);
for j from 1 to n-1 do
g[j]:=f(X[j]);
c[j]:=((z[j+2]-z[j+1])/(6*h));
d[j]:=z[j+1]/2;
e[j]:=(f(X[j+1])-h^2*(((z[j+2]+2*z[j+1])/6)-f(X[j]))/h);
p[j](x):=c[j]*(x-X[j])^3+d[j]*(x-X[j])^2+e[j]*(x-X[j])+f(X[j]);
ts:=p[j](x);
tss:=piecewise(x>X[j],ts,s);s:=simplify(tss);
end do;
s;
end proc:
pline(x->x^2,2,1,2);

Le turc c'est que je n'est a pas reussi a concatener les deux en faire une seule!!
et je n'arrive a pas faire en sorte que ca me dessine je resultat avec plot.
Je vais tenter de le faire et te soumettre mes resultats (enfinsi tu as le temps biensur )Merci bye!!!!
_________________
meriam
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
meriam



Inscrit le: 04 Mar 2004
Messages: 11
Localisation: sain etienne du rouvray

MessagePosté le: 07 Avr 2004 17:08    Sujet du message: toujours des problemes!!!! Répondre en citant

Salut,
j'ai réussi a utiliser linsolve il me manquait juste la ligne with(linalg).

Mais le probleme c'est que dans la suite de mon projet je doit faire une fonctin monspline qui definit une fonction spline par morceaux selon l'algorithme suivant:
declaration des variables
A:=cmat(n);
V:=csmb(f,n,a,b);
resolution du systeme Az=V(z:=linsolve(A,V)
h contient (b-a)/n
Calcul des coeff de P0 avec P0 le polynome tel que Razzi(x)=c(x-xi)^3d(x-xi)^2+e(x-xi)+ g
{(c,d,e,g sont dependent de i et sont tels que dans la fonction qui suit..)}
s contient Po
boucle i:1->n-1
calculs des coeff de Pi
ts contient Pi
tss contient piecewise (x->xi,ts,s)
s contient simplify(tss)
fin boucle i
retourner s (par sWink

Bref ja fait ceci maisje n'arrive pas a faire en sorte que se soit en une seule fonction et je n'arrive pas faire ene sorte que ca me dessine le resultat:
Bon voila mon travail j'espere que vous pourrez m'aider !!


> cmat:=proc(n)
local i,j,A;
A:=matrix(n+1,n+1);
for i from 1 to n+1 do
for j from 1 to n+1 do
if i=j then
if i=1 or i=n+1 then
A[i,j]:=1;
else
A[i,j]:=2;
end if;
else
if j=i-1 or i=j-1 then
A[i,j]:=1/2;
else
A[i,j]:=0;
end if;
end if;
end do;
end do;
evalm(A);
end proc:
cmat(2);


> csmb:=proc(f,n,a,b)
local j,X,Y,V,h;
h:=(b-a)/n;
X:=[seq(evalf(a+h*j),j=0..n)];
Y:=[seq(evalf(f(a+h*j)),j=0..n)];
V:=vector(n+1);
for j from 1 to n+1 do ;
if j=1 then
V[j]:=((-3)/((b-a)/n)*(D(f)(X[1]))+(3/(((b-a)/n))^2)*((Y[j+1])-(Y[j])));
else
if j=n+1 then
V[j]:=(-3)/(h^2)*((Y[j-1])-(Y[j-2]))+(3/h)*(D(f)(X[n]));else
V[j]:=3/(h^2)*((Y[j+1])-2*(Y[j])+(Y[j-1]));
end if;
end if;
end do;
evalm(V);
end proc:
V:=csmb(x->sqrt(abs(x)),5,-1,1);

> with (linalg):
pline:=proc(f,n,a,b)
local A,V,z,j,h,c,d,e,g,p,i,x,s,ts,tss;
h:=(b-a)/n;
z:=vector(n+1,z[j]);
A:=cmat(n);
V:=csmb(f,n,a,b);
z:=linsolve(A,V);
evalm(z);
end proc:
pline(x->sqrt(abs(x)),5,-1,1);


> monspline:=proc(f,n,a,b)
local c,d,e,g,j,z,p,x,h,s,X,ts,tss;
h:=(b-a)/n;
X:=[seq(evalf(a+h*j),j=0..n)];
g[0]:=f(a); z:=monspline(f,n,a,b);
c[0]:=((z[2]-z[1])/(6*h));
d[0]:=z[1]/2;
e[0]:=(f(X[1])-h^2*(((z[2]+2*z[1])/6)-f(a))/h);
p[0](x):=c[0]*(x-a)^3+d[0]*(x-a)^2+D(f)(a)*(x-a)+f(a);
s:=p[0](x);
for j from 1 to n-1 do
g[j]:=f(X[j]);
c[j]:=((z[j+2]-z[j+1])/(6*h));
d[j]:=z[j+1]/2;
e[j]:=(f(X[j+1])-h^2*(((z[j+2]+2*z[j+1])/6)-f(X[j]))/h);
p[j](x):=c[j]*(x-X[j])^3+d[j]*(x-X[j])^2+e[j]*(x-X[j])+f(X[j]);
ts(x):=p[j](x);
tss(x):=piecewise(x>X[j],ts(x),s(x));s:=evalf(simplify(tss));
end do;
s(x);
end proc:
monspline(x->sqrt(abs(x)),5,-1,1);
_________________
meriam
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
meriam



Inscrit le: 04 Mar 2004
Messages: 11
Localisation: sain etienne du rouvray

MessagePosté le: 08 Avr 2004 12:45    Sujet du message: Un énorme MERCI Répondre en citant

Je te remercie infiniment je vai de suite essayer tout ca et comprendre les changements encore une fois merci et a bientot!!! Laughing
_________________
meriam
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
meriam



Inscrit le: 04 Mar 2004
Messages: 11
Localisation: sain etienne du rouvray

MessagePosté le: 08 Avr 2004 12:46    Sujet du message: Un énorme MERCI Répondre en citant

Je te remercie infiniment je vai de suite essayer tout ca et comprendre les changements encore une fois merci et a bientot!!! Laughing
_________________
meriam
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    Apprendre Maple Index du Forum -> Programmation Toutes les heures sont au format GMT + 2 Heures
Page 1 sur 1

 
Sauter vers:  
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum


phpBB

Développé par phpBB © 2001, 2006 phpBB Group
Traduction par : phpBB-fr.com


Apprendre Maple - ©  - Alain Le Stang - Navigation optimisée pour une résolution 1024 x 768.