Opened 12 years ago
Closed 12 years ago
#1615 closed defect (goodtrick)
Dudas con polinomios
Reported by: | Owned by: | Víctor de Buen Remiro | |
---|---|---|---|
Priority: | normal | Milestone: | Mantainance |
Component: | Kernel | Version: | 3.1 |
Severity: | normal | Keywords: | |
Cc: |
Description
Hola Tol, probando a hacer algunos polinomios he visto las siguientes dudas:
Set monomes1 = Monomes(Polyn ?); // Devuelve cero monomios, correcto Set monomes2 = Monomes(Polyn 1); // Devuelve un monomio, correcto Set monomes3 = Monomes(Polyn 0); // Devuelve cero monomios ¿es esto correcto correcto? ¿no debería devolver un monomio "0"?
segunda:
Polyn p1 = 0+0*B; // devuelve el polinomio 0 Polyn p2 = ?+?*B; // devuelve el polinomio 0, ¿no debería ser el polinomio desconocido?
Un saludo
Change History (2)
comment:1 Changed 12 years ago by
comment:2 Changed 12 years ago by
Resolution: | → goodtrick |
---|---|
Status: | new → closed |
Note: See
TracTickets for help on using
tickets.
No hay nada correcto ni incorrecto, es lo que queramos poner, pues no hay ningún estándar en este tipo de operaciones, ya que nos lo hemos inventado nosotros.
De hecho se podría defender lo contrario, que
?
debería devolver un monomio?*B^0
y que0
no debería devolver ningún monomio.No existe el operador matemático de monomios, y en todo caso devolvería un conjunto infinito con todos los coeficientes, sean positivos, negativos, ceros, desconocidos o infinitos. Eso nos lo da virtualmente el operador
Para evitar dar infinitos, el convenio es obviar los monomios con coeficiente cero, pues todos los polinomios tienen coeficiente cero a partir de un número determinado que se conoce como grado del polinomio. En nuestro caso tenemos dos grados porque admitimos monomios en
F=B^-1
.Del mismo modo que no aparecen los monomios de coeficiente 0 de grados positivos
0*B
ó0*B^2
, ni los de grados negativos0*F
ó0*F^2
, tampoco aparece el de grado 00*B^0
.Quizás lo más sensato sería que siempre se devolvier al menos un monomio con el coeficiente de gardo 0, pero lo malo es que está función se usa en bastantes sitios y me parece peligroso cambiarla.
Habría que ver cuáles son las ventajas y cuáles los inconvenientes.
Respecto al segundo punto, los polinomios no hacen ningún tratamiento especial de los omitidos por lo que pueden pasar cosas de este tipo debido a la forma de tratarse el omitido en C++ de forma usual.
En principio no está previsto el uso de omitidos en polinomios y lo que hay que hacer es no usarlo.