kopia lustrzana https://github.com/Dsplib/libdspl-2.0
196 wiersze
6.4 KiB
Plaintext
196 wiersze
6.4 KiB
Plaintext
/*! ****************************************************************************
|
||
\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
|
||
***************************************************************************** */
|
||
|
||
|
||
|