Page 1 sur 1

Question matrice creuse

Publié : ven. sept. 08, 2017 2:24 pm
par frederic han
Salut, comment fait on pour transformer une matrice creuse en une matrice de taille voulue ou plus grande?

Je pensai affecter la valeur nulle au coefficient voulu, mais les valeurs nulles sont retirees de la table:

Code : Tout sélectionner

0>> A:=table(idn(5))
table(
(0,0) = 1,
(1,1) = 1,
(2,2) = 1,
(3,3) = 1,
(4,4) = 1
)

2>> A[10,10]:=1
table(
(0,0) = 1,
(1,1) = 1,
(2,2) = 1,
(3,3) = 1,
(4,4) = 1,
(10,10) = 1
)
5>> dim(matrix(A))
[11,11]
6>> A[10,10]:=0
table(
(0,0) = 1,
(1,1) = 1,
(2,2) = 1,
(3,3) = 1,
(4,4) = 1
)
7>> dim(matrix(A))
[5,5]

Re: Question matrice creuse

Publié : ven. sept. 08, 2017 6:22 pm
par parisse
Il faut utiliser convert(.,array), par exemple A[3,4]:=1; B:=convert(A,array);
Pour changer la dimension utilise redim, par exemple redim(B,6,6)

Re: Question matrice creuse

Publié : mer. sept. 13, 2017 1:57 pm
par frederic han
En fait j'avais manqué redim car elle fait partie des fonction que je dois retirer de giacpy car leur forme non évaluée ne marche pas:

Code : Tout sélectionner

0>> a:='gcd'
'gcd'
// Time 0
1>> a(5,6)
1
// Time 0
2>> b:='redim'
:1: syntax error, unexpected T_QUOTE, expecting T_BEGIN_PAR line 1 col 10 at '
a t'elle un equivalent c++?

Re: Question matrice creuse

Publié : mer. sept. 13, 2017 4:14 pm
par parisse
C'est une erreur:

Code : Tout sélectionner

diff rpn.cc rpn.cc~
1646c1646
<   define_unary_function_ptr5( at_redim ,alias_at_redim,&__redim,_QUOTE_ARGUMENTS,T_UNARY_OP);
---
>   define_unary_function_ptr5( at_redim ,alias_at_redim,&__redim,_QUOTE_ARGUMENTS,T_UNARY_OP_38);
La fonction C++ est _REDIM
(c'est non standard parce que c'etait au depart une commande pour les calculatrices HP)

Re: Question matrice creuse

Publié : jeu. sept. 14, 2017 7:55 pm
par frederic han
OK merci, probablement "replace" est dans le meme cas.
Fred

Re: Question matrice creuse

Publié : ven. sept. 15, 2017 5:06 am
par parisse
Oui, je vais regarder tout le fichier rpn.cc.