Yalnız olan çok sayıda polinomunuz var, bu yüzden onlara bazı yoldaşlar olun (bıçaklamakla tehdit etmeyecekler)!
Derecesi bir polinomun için n
, bir var n by n
arkadaşı küp matris bunun için. Bir polinom için artan ( a + bx +cx^2 + …
) veya azalan ( ax^n + bx^(n-1) + cx^(n-2)+…
) sırayla (ancak her ikisini değil) bir katsayı listesini kabul eden ve tamamlayıcı matrisi çıktılayan bir işlev yapmanız gerekir .
bir polinom için c0 + c1x + c2x^2 + ... + cn-1x^(n-1) + x^n
, eşlik eden matrisi
(0, 0, 0, ..., -c0 ),
(1, 0, 0, ..., -c1 ),
(0, 1, 0, ..., -c2 ),
(...................),
(0, 0, ..., 1, -cn-1)
için katsayının x^n
1 olduğunu unutmayın. Diğer herhangi bir değer için, katsayıların geri kalanını x^n
's ile bölün . Ek olarak, 1'ler diyagonalden ofsettir.
Kullandığınız dil zaten bunu yapan bir işlev veya modül içeriyorsa, onu kullanamazsınız - kendiniz yazmalısınız.
Örneğin, eğer varsa 4x^2 – 7x + 12
, artan düzendeki katsayılar (12, -7, 4)
ve azalan düzendir (4, -7, 12)
. İşlev veya program her [(0, -3.0), (1, 1.75)]
iki sıra için de çıktı almalıdır . Kodunuzun kabul ettiği sırayı belirtin. Minimum polinom ikinci dereceden olmalıdır. Katsayılar gerçek sayılarla sınırlıdır.
Aşağıda örnekler verilmiştir - çıktınızın güzel biçimlendirmeyle eşleşmesi gerekmez, ancak ()
matrisin satırlarını (içinde ) sırayla çıkarmalıdır .
Artan düzen:
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. )]
Azalan sipariş:
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 20 bayt kazanır!