Question matrice creuse

Utilisation de Xcas

Modérateur : xcasadmin

frederic han
Messages : 1137
Inscription : dim. mai 20, 2007 7:09 am
Localisation : Paris
Contact :

Question matrice creuse

Message par frederic han » ven. sept. 08, 2017 2:24 pm

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]

parisse
Messages : 5731
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: Question matrice creuse

Message par parisse » ven. sept. 08, 2017 6:22 pm

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)

frederic han
Messages : 1137
Inscription : dim. mai 20, 2007 7:09 am
Localisation : Paris
Contact :

Re: Question matrice creuse

Message par frederic han » mer. sept. 13, 2017 1:57 pm

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++?

parisse
Messages : 5731
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: Question matrice creuse

Message par parisse » mer. sept. 13, 2017 4:14 pm

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)

frederic han
Messages : 1137
Inscription : dim. mai 20, 2007 7:09 am
Localisation : Paris
Contact :

Re: Question matrice creuse

Message par frederic han » jeu. sept. 14, 2017 7:55 pm

OK merci, probablement "replace" est dans le meme cas.
Fred

parisse
Messages : 5731
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: Question matrice creuse

Message par parisse » ven. sept. 15, 2017 5:06 am

Oui, je vais regarder tout le fichier rpn.cc.

Répondre