-
04/12/2007 - 15h06 ABN84
calcul matriciel
bonjour,
J'ai une matrice A de dimensiont 6x6, et une matrice B de meme dimension, tel que Bij=(dHij/dqj)-(dHjj/2dqi)
y a-t-il moyen avec maple de calculer directement B à partir de A sans pour autant devoir passer par le calcul explicite de chacun de ses termes?
merci.
PS: "d" c'est "d rond"
"Engineering is the art of making what you want from what you get" -
04/12/2007 - 16h54 Taar
Re : calcul matriciel
Salut.
Peut-être que ceci pourrait te donner une idée (je ne comprends pas bien ce que tu entends par éviter le calcul explicite de chacun de ses termes, je fais une proposition comme ça) : Code: > A:=matrix(3,3,[1,2,3,4,5,6,7,8,9]);
> B:=matrix(3,3,(i,j)->A[j,i]^2); Si ça ne donne rien dans ton cas, il faut peut-être utiliser unapply() ; je peux essayer si tu me donnes un exemple de matrice A.
Taar.
Dernière modification par Taar ; 04/12/2007 à 16h58.
-
04/12/2007 - 17h17 ABN84
Re : calcul matriciel
je ne comprends pas bien ce que tu entends par éviter le calcul explicite de chacun de ses termes
je voudrais eviter cette ecriture: Code: >B:=matrix(6,6);
>B[1,1]:= ;
>B[1,2]:= ;
...
>B[6,6]:= ; "Engineering is the art of making what you want from what you get" -
04/12/2007 - 17h35 Taar
Re : calcul matriciel
Dans ce cas, un calcul similaire à celui que je te donne devrait faire l'affaire.
-
04/12/2007 - 20h55 ABN84
Re : calcul matriciel
bonsoir,
en essayant avec des fct simples ça marche.
mais pour l'instant j'ai deux problemes que je ne sais resoudre:
si j'ecris "Transpose(A)" au lieu d'avoir la trans posée j'ai "Transpose(A)", il reprends simplement ce que j'ai ecris, il ne calcule rien de meme pour "Determinant".
de meme, quelque soit la fonction f que je definisse, df/dx n'est pas calculée, ça reprends simplement mon ecriture.
d'ou ça vient?
merci
PS: comm d'hab, d c'est drond
"Engineering is the art of making what you want from what you get" -
05/12/2007 - 05h31 Taar
Re : calcul matriciel
Je n'ai toujours pas compris ton problème, tu devrais donner un exemple.
En tout cas, essaie ça : Code: > H:=matrix(2,2,subs(x=q[1],y=q[2],[a(x,y),b(x,y),c(x,y),d(x,y)]));
> B:=matrix(2,2,(i,j)->diff(H[i,j],q[j])-diff(H[j,j],q[i])/2); Sinon, pour la transposée, fais : Code: > evalm(transpose(B)); et pour le déterminant : ou bien charge au préalable la fonction det dans la librairie linalg : Code: > with(linalg,det);
> det(B); Taar.
-
06/12/2007 - 22h34 ABN84
Re : calcul matriciel
bonsoir,
merci Taar pour ces indications.
c'est bon pour le determinant et la transposée, mais pas pour la derivée partielle.
j'ai trois matrices A[i,j], B[i,j], et C[i,jk] et 6 variables q1, q2, q3, q4, q5, et q6.
B est de dimension 6x6 est ce deduit de A tel que B[i,j]=(dH[i,j]/dqj)-(dH[j,j]/2dqi)
=> pas de probleme pour celle là, j'ai suivi ta methode.
C est de dimension 6x15 construite de la facon suivante:
i est l'indice des lignes.
jk est l'indice des colonnes, et prends les valeurs: 12,13,14,15,16,23,24,25,26,34, 35,36,45,46,56
telque:
Ci,jk=(dH[i,j]/dqk)+(dH[i,k]/dqj)-(dH[j,k]/dqi)
j'ai du mal à voir comment ecrire cette matrice C à partir de A sans la transformer en une matrice Ci,L et la calculer terme à terme
"Engineering is the art of making what you want from what you get" -
06/12/2007 - 23h29 ABN84
Re : calcul matriciel
ce que j'ai fait mais qui ne marche pas: 
PS: une petite erreur: 6,15 et non 6,100
"Engineering is the art of making what you want from what you get" | | |