 |
Apprendre Maple Site dédié au logiciel de calcul formel Maple
|
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
|
Posté le: 30 Mar 2004 16:46 Sujet du message: Toujours avec mon projet de spline!!! |
|
|
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 |
|
 |
meriam
Inscrit le: 04 Mar 2004 Messages: 11 Localisation: sain etienne du rouvray
|
Posté le: 31 Mar 2004 18:50 Sujet du message: merci c'est génial!!!! |
|
|
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 |
|
 |
meriam
Inscrit le: 04 Mar 2004 Messages: 11 Localisation: sain etienne du rouvray
|
Posté le: 07 Avr 2004 17:08 Sujet du message: toujours des problemes!!!! |
|
|
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 i(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 s
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 |
|
 |
meriam
Inscrit le: 04 Mar 2004 Messages: 11 Localisation: sain etienne du rouvray
|
Posté le: 08 Avr 2004 12:45 Sujet du message: Un énorme MERCI |
|
|
Je te remercie infiniment je vai de suite essayer tout ca et comprendre les changements encore une fois merci et a bientot!!!  _________________ meriam |
|
Revenir en haut de page |
|
 |
meriam
Inscrit le: 04 Mar 2004 Messages: 11 Localisation: sain etienne du rouvray
|
Posté le: 08 Avr 2004 12:46 Sujet du message: Un énorme MERCI |
|
|
Je te remercie infiniment je vai de suite essayer tout ca et comprendre les changements encore une fois merci et a bientot!!!  _________________ meriam |
|
Revenir en haut de page |
|
 |
|
|
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
|

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.
|