 |
Apprendre Maple Site dédié au logiciel de calcul formel Maple
|
Voir le sujet précédent :: Voir le sujet suivant |
Auteur |
Message |
lol
Inscrit le: 05 Nov 2006 Messages: 4
|
Posté le: 05 Nov 2006 18:08 Sujet du message: div de polynômes |
|
|
bonjour à tous ,
voilà j'ai une procédure pr le calcul d'une division de polynôme , mais maple chercher mais trouve pas, quelqu'un peut-il me dire où est le prob : voici la procédure :
division:=proc(f,g);
a:=f;
b:=g;
c:=-1;
d:=-1;
while a<>0 do
a:=diff(a,x);
c:=c+1;
end do ;
while b<>0 do
b:=diff(b,x);
d:=d+1;
end do;
n:=c;
p:=d;
q:=0;
r:=f;
e:=lcoeff(g);
while r<>0 and n>=d do
M:=lcoeff(r)*e^(-1)*x^(r-d);
q:=q+M;
r:=r-g*M;
print(f=b*q+r);
end do;
end proc; |
|
Revenir en haut de page |
|
 |
ALS
Inscrit le: 11 Sep 2006 Messages: 647
|
Posté le: 06 Nov 2006 12:30 Sujet du message: |
|
|
Bonjour, effectivement ça plante la machine, je pense que c'est du à une mauvaise initialisation de r avant la boucle while.
Voici une procédure qui fonctionne bien:
Code: |
> division:=proc(A::polynom,B::polynom,X::name)
> local A1,n,p,Q,Q1,R,k;
> if B=0 then
> error "le second argument doit être non nul"
> else
> A1:=A;Q:=0;
> n:=degree(A);p:=degree(B);
> for k from n by -1 to p do
> Q1:=coeff(A1,X,k)/coeff(B,X,p)*X^(k-p);
> Q:=Q+Q1;
> A1:=expand(A1-B*Q1);
> end do;
> end if;
> R:=A1;
> print(A=B*Q+R);
> [Q,R];
> end proc:
> division(X^5+X^4-X^3+X-1,X^3+X^2+2,X);
5 4 3 3 2 2 2
X + X - X + X - 1 = (X + X + 2) (X - 1) + X + 1 - X
2 2
[X - 1, X + 1 - X ]
|
A plus tard |
|
Revenir en haut de page |
|
 |
mouss33
Inscrit le: 09 Oct 2006 Messages: 7
|
Posté le: 12 Nov 2006 13:59 Sujet du message: pivot |
|
|
bonjour tout le monde
deja je tiens a m'escuser car mon message s'est posté 2 fois en réponse a d'autre message et je ne sais pas pourquoi!
ensuite,je vous écris car je ne comprend pas pourquoi ma procédure ne marche pas.en fait on prend les matrice A (n lignes,m colonnes) et C (n lignes et 1 colonnes)
on me demande de déterminer une procédure qui prend comme argument les matrices A et C et qui renvoi soit le system admet au moins une solution, soit le systeme n'a pas de solution.faire tourner votre procédure sur des system de types différents.
voila ce que j'ai fait
>with(LinearAlgebra);
>pivot:=proc(A,C)
local n,m;
n:=RowDimension(A);m:=ColumnDimension(A);
A:=matrix(n,m);C:=matrix(n,1);
if Rank(A)<n then print(`pas de solution`)
else if Rank(A)=n then print(`le systeme admet une unique solution`)
end if;
end if;
end proc;
ensuite j'ai rentré une matrice A et C
>A := matrix([[2, -1, 3], [3, 1, -1], [5, -2, 1]]);
>C := matrix([[9], [7], [5]]);
pivot(A,C);
le probleme c'est que on m'affiche :Error, (in LinearAlgebra:-RowDimension) expects its 1st argument, A, to be of type Matrix, but received A.
et je ne comprend pas ce qu'il ne va pas!
quelqu'un pourrais m'aider! |
|
Revenir en haut de page |
|
 |
mouss33
Inscrit le: 09 Oct 2006 Messages: 7
|
Posté le: 12 Nov 2006 14:43 Sujet du message: |
|
|
bon j'ai effectuer une modification et maintenant, j'ai un autre mesage d'erreur.en fait , j'ai juste changer la position de A:=matrix(n,m);C:=matrix(n,1);
je l'ai placé juste avant n:=RowDimension(A);m:=ColumnDimension(A);
ensuite j'ai rentré les 2 matrices et quand j'utilise la procédure, le nouveau message d'erreur est :Error, (in matrix) 1st and 2nd arguments (dimensions) must be non negative integers
cela veut dire que le 1er et le 2ieme argument ne doivent pas etre des entiers négatif mais je ne vois pas comment remédier a ce probleme!
j'espere que quelqu'un pourra me débloquer! |
|
Revenir en haut de page |
|
 |
prof_simplet
Inscrit le: 12 Sep 2006 Messages: 86
|
Posté le: 12 Nov 2006 17:07 Sujet du message: |
|
|
Bonjour, quand tu utilises le package LinearAlgebra, mets des majuscules pour Matrix, contrairement au package linalg où on écrit en minuscules matrix. J'ai aussi supprimé une ligne qui n'avait rien à faire:
A:=matrix(n,m);C:=matrix(n,1);
Code: |
> with(LinearAlgebra):
> pivot:=proc(A,C)
> local n,m;
> n:=RowDimension(A); m:=ColumnDimension(A);
> if Rank(A)<n then print(`pas de solution`)
> else if Rank(A)=n then print(`le systeme admet une unique solution`)
> end if;
> end if;
> end proc:
> A := Matrix([[2, -1, 3], [3, 1, -1], [5, -2, 1]]);
> C := Matrix([[9], [7], [5]]);
> pivot(A,C);
|
OK? |
|
Revenir en haut de page |
|
 |
mouss33
Inscrit le: 09 Oct 2006 Messages: 7
|
Posté le: 12 Nov 2006 17:57 Sujet du message: |
|
|
merci beaucoup!effectivement, ca marche! |
|
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.
|