close Warning: Can't synchronize with repository "(default)" (/var/svn/tolp does not appear to be a Subversion repository.). Look in the Trac log for more information.

Opened 15 years ago

Closed 15 years ago

Last modified 15 years ago

#971 closed defect (fixed)

Función SetMat

Reported by: Iván Robles Owned by: Víctor de Buen Remiro
Priority: normal Milestone:
Component: Various Version: 2.0.1
Severity: normal Keywords:
Cc:

Description

Buenos días,

al intentar hacer una matriz con el siguiente código da error:

  Matrix A1 =SetMat([[ [[ 1,1,-1]] ]]);


ERROR: [1] 1 no es un objeto valido para el tipo Matrix.

Si no la asignamos a un objeto da un warning:

SetMat([[ [[ 1,1,-1]] ]]);

Warning: [1] El símbolo de función  -  es ambiguo.
Real  - (Real x)
; ha sido elegido pero había estas otras 6 opciones:
  Ratio  - (Ratio r);
  Complex  - (Complex x);
  VMatrix  - (VMatrix mat);
  Polyn  - (Polyn p);
  Matrix  - (Matrix mat);
  Serie  - (Serie S);

Si ejecutamos el siguiente código (poniendo Real delante de los numeros) ya no da error:

  Matrix A2 =SetMat([[ [[Real 1,Real 1,Real (-1)]] ]]);

Si se pudiera evitar tipar todos los numeros genial

Change History (2)

comment:1 Changed 15 years ago by Víctor de Buen Remiro

Resolution: fixed
Status: newclosed

El operador [[ . ]] sirve para cualquier tipo por lo que no es posible que adivine lo que le vas a meter, pues el reconocedor sintáctico no sabe nada de tipos de datos, sólo sabe de sintaxis. Hay varias alternativas

  • tipar sólo los elementos ambiguos
      Matrix A2 =SetMat([[ [[ 1, 1,Real (-1)]] ]]);
    
  • crear variables para los elementos ambiguos
      Real _1 = -1;
      Matrix A2 =SetMat([[ [[ 1, 1,_1]] ]]);  
    
  • usar operadores no ambiguos
      Matrix A1 =SetMat(SetOfSet ( SetOfReal(1,1,-1) ));
    
  • en este caso concreto se puede usar también el constructor de vectores fila
      Matrix A1 =Row(1,1,-1);
    

comment:2 Changed 15 years ago by Pedro Gea

Hay una forma de especificar matrices que encontré por casualidad al usar FormatMatrix que es haciendo uso de paréntesis. Aprovecho para comentarla en este tique.
Por lo ambiguo del uso de paréntesis supongo que no es muy recomendable y además no vale para matrices columna, pero sí vale para hacer algo como:

Matrix A1 = ((1, 1, -1));
Matrix A2 = ((1, 1, -1), (3, 4, 5));
Note: See TracTickets for help on using tickets.