/*! **************************************************************************** \ingroup SPEC_MATH_COMMON_GROUP \fn int polyroots(double* a, int ord, complex_t* r, int* info) \brief Расчет корней вещественного полинома Функция рассчитывает корни полинома \f$P_N(x)\f$ \f$N-\f$ого порядка, заданного вектором коэффициентов `a`. \f[ P_N(x) = a_0 + a_1 x + a_2 x^2 + a_3 x^3 + ... a_N x^N. \f] Корни полинома рассчитываются как собственные числа характеристической матрицы полинома. Для расчета собственных чисел используется подпрограмма пакета LAPACK. \param[in] a Указатель на вектор вещественных коэффициентов полинома. \n Размер вектора `[ord+1 x 1]`. \n Коэффициент `a[0]` соответствует коэффициенту полинома \f$a_0\f$. \n Коэффициент `a[ord]` не должен быть равен нулю. \n \n \param[in] ord Порядок полинома \f$N\f$. \n \n \param[out] r Указатель на вектор комплексных корней полинома. \n Размер вектора `[ord x 1]`. \n Память должна быть выделена. \n \n \param[out] info Указатель наа код возврата пакета LAPACK. \n Данный код возвращается подпрограммой LAPACK и транслируется через данную переменную для возможности анализа. \n \n \return `RES_OK` --- корни полинома рассчитаны успешно. \n В противном случае \ref ERROR_CODE_GROUP "код ошибки". Пример расчета корней полинома: Пример использования функции `bilinear`: \include polyroots_test.c Данная программа производит расчет корней полинома \f[ P(x) = 2 + 2x + x^2 \f] и выводит рассчитанные корни на печать. Результат работы программы: \verbatim Error code: 0x00000000 r[0] = -1.00000 1.00000 j r[1] = -1.00000-1.00000 j \endverbatim Получили пару комплексно-сопряженных корней полинома. \author Бахурин Сергей. www.dsplib.org ***************************************************************************** */ /*! **************************************************************************** \ingroup SPEC_MATH_COMMON_GROUP \fn int polyval(double* a, int ord, double* x, int n, double* y) \brief Расчет вещественного полинома Функция рассчитывает полином \f$P_N(x)\f$ \f$N-\f$ого порядка для вещественного аргумента, заданного вектором `x`. \f[ P_N(x) = a_0 + a_1 \cdot x + a_2 \cdot x^2 + a_3 \cdot x^3 + ... a_N \cdot x^N. \f] Для расчета используется формула Горнера: \f[ P_N(x) = a_0 + x \cdot (a_1 + x \cdot (a_2 + \cdot ( \ldots x \cdot (a_{N-1} + x\cdot a_N) \ldots ))) \f] \param[in] a Указатель на вектор вещественных коэффициентов полинома. \n Размер вектора `[ord+1 x 1]`. \n Коэффициент `a[0]` соответствует коэффициенту полинома \f$a_0\f$. \n \n \param[in] ord Порядок полинома \f$N\f$. \n \n \param[in] x Указатель на вектор аргумента полинома. \n Размер вектора `[n x 1]`. \n Значения полинома будут расчитаны для всех значений аргумента вектора `x`. \n \n \param[in] n Размер вектора агрумента полинома. \n \n \param[out] y Указатель на значения полинома для аргумента `x`. \n Размер вектора `[n x 1]`. \n Память должна быть выделена. \n \n \return `RES_OK` --- полином рассчитан успешно. \n В противном случае \ref ERROR_CODE_GROUP "код ошибки". \author Бахурин Сергей. www.dsplib.org ***************************************************************************** */ /*! **************************************************************************** \ingroup SPEC_MATH_COMMON_GROUP \fn int polyval_cmplx(complex_t* a, int ord, complex_t* x, int n, complex_t* y) \brief Расчет комплексного полинома Функция рассчитывает полином \f$P_N(x)\f$ \f$N\f$-го порядка комплексного аргумента, заданного вектором `x`. \n \f[ P_N(x) = a_0 + a_1 \cdot x + a_2 \cdot x^2 + a_3 \cdot x^3 + ... a_N \cdot x^N. \f] Для расчета используется формула Горнера: \n \f[ P_N(x) = a_0 + x \cdot (a_1 + x \cdot (a_2 + \cdot ( \ldots x \cdot (a_{N-1} + x\cdot a_N) \ldots ))) \f] \param[in] a Указатель на вектор комплексных коэффициентов полинома. \n Размер вектора `[ord+1 x 1]`. \n Коэффициент `a[0]` соответствует коэффициенту полинома \f$a_0\f$. \n \n \param[in] ord Порядок полинома \f$N\f$. \n \n \param[in] x Указатель на вектор аргумента полинома. \n Размер вектора `[n x 1]`. \n Значения полинома будут расчитаны для всех значений аргумента вектора `x`. \n \n \param[in] n Размер вектора агрумента полинома. \n \n \param[out] y Указатель вектор значения полинома для аргумента `x`. \n Размер вектора `[n x 1]`. \n Память должна быть выделена. \n \n \return `RES_OK` --- полином расчитан успешно. \n В противном случае \ref ERROR_CODE_GROUP "код ошибки". \author Бахурин Сергей. www.dsplib.org ***************************************************************************** */