Hai un numero di polinomi che sono soli, quindi rendili alcuni compagni (che non minacciano di pugnalare)!
Per un polinomio di grado n
, esiste una matrice cubon by n
compagno per esso. È necessario creare una funzione che accetta un elenco di coefficienti per un polinomio in ordine crescente ( ) o decrescente ( ) (ma non entrambi) e generare la matrice associata. a + bx +cx^2 + …
ax^n + bx^(n-1) + cx^(n-2)+…
per un polinomio c0 + c1x + c2x^2 + ... + cn-1x^(n-1) + x^n
, la sua matrice compagna è
(0, 0, 0, ..., -c0 ),
(1, 0, 0, ..., -c1 ),
(0, 1, 0, ..., -c2 ),
(...................),
(0, 0, ..., 1, -cn-1)
si noti che il coefficiente per x^n
è 1. Per qualsiasi altro valore, dividere tutto il resto dei coefficienti per x^n
's. Inoltre, gli 1 sono sfalsati rispetto alla diagonale.
Se la lingua che stai utilizzando contiene già una funzione o un modulo che lo fa, non puoi usarla - devi scrivere la tua.
Ad esempio, se avessi 4x^2 – 7x + 12
, i coefficienti in ordine crescente sono (12, -7, 4)
e in ordine decrescente (4, -7, 12)
. La funzione o il programma dovrebbero essere emessi [(0, -3.0), (1, 1.75)]
per entrambi gli ordini. Specifica quale ordine accetta il tuo codice. Il polinomio minimo dovrebbe essere un quadratico. I coefficienti sono limitati ai numeri reali.
Di seguito sono riportati alcuni esempi: l'output non deve corrispondere alla formattazione graziosa, ma dovrebbe generare in ordine le righe (nella ()
) della matrice.
Ordine 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. )]
Ordine decrescente:
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 vince con 20 byte!