Итак, сейчас я кодирую вопрос из старого домашнего задания по линейной алгебре. У меня есть три полинома степени 2, и я преобразовываю их в полиномы степени 2.
Каждый многочлен p имеет вид: a0 + a1x + a2x^2
Это мои полиномы:
(1 - x + 0x^2, 1 + 2x + 0x^2, 0 + 0x + 0x^2)
Здесь они представлены в коде. Я использую numpy .polynomial.Polynomial:
basis_b = np.array([[Polynomial([1, -1, 0])],
[Polynomial([1, 2, 0])],
[Polynomial([0, 0, 1])]
])
С преобразованием:
p'(2 - x) + 3*p
Представлено в коде как:
def trans_t(basis: np.array):
return np.array([polynomial.polyadd(
polynomial.polymul(poly[0].deriv(), Polynomial([2, -1, 0])),
polynomial.polymul(Polynomial([3, 0, 0]), poly[0]))
for poly in basis])
Первоначально я использовал python arithmeti c в функции, но я переключился на полиномиальную арифметику c в попытке решить проблему; это не сработало.
Итак, я получаю правильный ответ, применяя преобразование. Однако код возвращает многочлены степени 1, даже если многочлены имеют степень 2.
Вот мой результат при вызове функции:
change_of_basis(basis_b, basis_b, trans_t)
change_of_basis(basis_b, basis_b, trans_t)
array([[Polynomial([ 1., -2.], domain=[-1., 1.], window=[-1., 1.])],
[Polynomial([7., 4.], domain=[-1., 1.], window=[-1., 1.])],
[Polynomial([0., 4., 1.], domain=[-1., 1.], window=[-1., 1.])]],
dtype=object)
Каким будет numpy способ гарантировать, что у меня есть коэффициент 0 для x ^ 2, если нет коэффициента для x ^ 2 при применении функции, так что она возвращает
Polynomial([1, -2, 0])
Polynomial([7, 4, 0])