Tienes varios polinomios que están solos, ¡así que conviértelos en compañeros (que no amenacen con apuñalar)!
Para un polinomio de grado n
, hay una matriz de cubon by n
compañera para él. Debe realizar una función que acepte una lista de coeficientes para un polinomio en orden ascendente ( ) o descendente ( ) (pero no en ambos) y generar la matriz complementaria. a + bx +cx^2 + …
ax^n + bx^(n-1) + cx^(n-2)+…
para un polinomio c0 + c1x + c2x^2 + ... + cn-1x^(n-1) + x^n
, su matriz compañera es
(0, 0, 0, ..., -c0 ),
(1, 0, 0, ..., -c1 ),
(0, 1, 0, ..., -c2 ),
(...................),
(0, 0, ..., 1, -cn-1)
tenga en cuenta que el coeficiente para x^n
es 1. Para cualquier otro valor, divida el resto de los coeficientes por x^n
's. Además, los 1 están desplazados de la diagonal.
Si el idioma que está utilizando ya contiene una función o módulo que hace esto, no puede usarlo, debe escribir el suyo.
Por ejemplo, si tuviera 4x^2 – 7x + 12
, los coeficientes en orden ascendente son (12, -7, 4)
y en orden descendente (4, -7, 12)
. La función o el programa deben salir [(0, -3.0), (1, 1.75)]
para cualquier orden. Especifique qué orden acepta su código. El polinomio mínimo debe ser cuadrático. Los coeficientes están restringidos a números reales.
A continuación se muestran ejemplos: su salida no tiene que coincidir con el formato bonito, pero debe generar las filas (en el ()
) de la matriz en orden.
Orden ascendente:
input:
[3., 7., -5., 4., 1.]
output:
[(0, 0, 0, -3.),
(1, 0, 0, -7.),
(0, 1, 0, 5.),
(0, 0, 1, -4.)]
input:
[-4., -7., 13.]
output:
[(0, 0.30769231),
(1, 0.53846154)]
input:
[23., 1., 92., 8., -45., 88., 88.]
output:
[(0, 0, 0, 0, 0, -0.26136364),
(1, 0, 0, 0, 0, -0.01136364),
(0, 1, 0, 0, 0, -1.04545455),
(0, 0, 1, 0, 0, -0.09090909),
(0, 0, 0, 1, 0, 0.51136364),
(0, 0, 0, 0, 1, -1. )]
Orden descendiente:
input:
[1., 4., -5., 7., 3.]
output:
[(0, 0, 0, -3.),
(1, 0, 0, -7.),
(0, 1, 0, 5.),
(0, 0, 1, -4.)]
input:
[13., -7., -4.]
output:
[(0, 0.30769231),
(1, 0.53846154)]
input:
[88., 88., -45., 8., 92.,1., 23.]
output:
[(0, 0, 0, 0, 0, -0.26136364),
(1, 0, 0, 0, 0, -0.01136364),
(0, 1, 0, 0, 0, -1.04545455),
(0, 0, 1, 0, 0, -0.09090909),
(0, 0, 0, 1, 0, 0.51136364),
(0, 0, 0, 0, 1, -1. )]
¡Dennis gana con 20 bytes!