Home | Develop | Download | Contact
Namespaces
Funciones Pds::Vector – Polinómios

Funciones que usan Pds::Vector, Ejemplo: Pds::PolyMat(), Pds::PolyFit(), Pds::PolyVal(), etc. Más...

Namespaces

namespace  Pds
 Nombre de espacio para Pds (Procesamiento Digital de Senales)
 

funciones de fitting

Descripción de algunas funciones que usan Pds::Vector.

Pds::Vector Pds::PolyFit (const Pds::Vector &X, const Pds::Vector &Y, unsigned int N)
 Retorna Un polinomio de grado N con el menor error cuadrático medio para el par X e Y. Más...
 

funciones básicas

Descripción de algunas funciones que usan Pds::Vector.

Pds::Matrix Pds::PolyMat (const Pds::Vector &X, unsigned int N)
 Retorna la Matriz de Vandermonde del vector X de M elementos. Más...
 
Pds::Matrix Pds::PolyMat (double x, unsigned int N)
 Retorna la Matriz de Vandermonde del vector X de M elementos. Más...
 
Pds::Vector Pds::PolyVal (const Pds::Vector &P, const Pds::Vector &X)
 Retorna El resultado de evaluar un polinomio P de grado N. Más...
 
Pds::Matrix Pds::PolyVal (const Pds::Vector &P, const Pds::Matrix &X)
 Retorna El resultado de evaluar un polinomio P de grado N. Más...
 
double Pds::PolyVal (const Pds::Vector &P, double x)
 Retorna El resultado de evaluar un polinomio P de grado N. Más...
 

funciones relativas al calculo

Descripción de algunas funciones que usan Pds::Vector.

Pds::Vector Pds::PolyDer (const Pds::Vector &P, unsigned int N=1)
 Retorna la derivada D del polinomio P(x). Más...
 

funciones aritméticas

Descripción de algunas funciones que usan Pds::Vector.

Pds::Vector Pds::PolyMul (const Pds::Vector &P, const Pds::Vector &Q)
 Retorna la multiplicación de los polinomio P(x) e Q(x). Más...
 
Pds::Vector Pds::PolyAdd (const Pds::Vector &P, const Pds::Vector &Q)
 Retorna la suma de los polinomio P(x) e Q(x). Más...
 
bool Pds::PolyAcc (Pds::Vector &Acc, const Pds::Vector &P)
 Retorna la suma de los polinomio Acc(x) e P(x). Más...
 
Pds::Vector Pds::PolyPoly (const Pds::Vector &P, const Pds::Vector &Q)
 Dados los polinomios P(x) y P(x), la función retorna la evaluación de P(Q(x)). Más...
 

Descripción detallada

Funciones que usan Pds::Vector, Ejemplo: Pds::PolyMat(), Pds::PolyFit(), Pds::PolyVal(), etc.

#include <Pds/FuncVectorPoly>


Estas funciones trabajan con una matriz de la forma.

\[
\left(\begin{matrix}
a_{0} \\ 
a_{1} \\
... \\
a_{Nlin-1} 
\end{matrix}\right)
   \]

Informacion adicional puede ser encontrada en [5]

Documentación de las funciones

◆ PolyFit()

Pds::Vector Pds::PolyFit ( const Pds::Vector X,
const Pds::Vector Y,
unsigned int  N 
)

Retorna Un polinomio de grado N con el menor error cuadrático medio para el par X e Y.

\[
\hat{X}=\frac{X-mean}{std}
   \]

\[
A=\left(\begin{matrix}
\hat{X}^0 &  \hat{X}^1  & \hat{X}^2  & ... & \hat{X}^N \\
\end{matrix}\right)
   \]

\[
R \leftarrow (A^T A )^{-1}A^T Y
   \]

\[
r(\hat{x})= r_0 + r_1 \hat{x}^1 + r_2 \hat{x}^2 + ... + r_{N} \hat{x}^N 
   \]

\[
p(x)\equiv r\left(\frac{x-mean}{std}\right) 
= p_0 + p_1 x^1 + p_2 x^2 + ... + p_{N} x^N 
   \]


unsigned int L=100;
Pds::Vector X=Pds::LinSpace(0,1,L);
Pds::Vector Y=Pds::Pow(X,2)+0.05*Pds::RandN(L,1);
Pds::Vector P=Pds::PolyFit(X,Y,2);

P.T().Print("P.T():\n");

La salida sería:

P.T():  -0.0053770932721563 0.017219023067994   0.98828000248775 
Atención
Si X.Std()==0 entonces la funcion retorna un vector vacio.
Parámetros
[in]XVector a evaluar.
[in]YVector a evaluar.
[in]NOrden del polinomio.
Devuelve
Retorna un vector $P=[p_0~p_1~p_2~...p_N]$ que representa um polinomio $p(x)$ de grado N con el menor error cuadrático medio para el par X e Y.
Ejemplos
example_vector_poly.cpp.

◆ PolyMat() [1/2]

Pds::Matrix Pds::PolyMat ( const Pds::Vector X,
unsigned int  N 
)

Retorna la Matriz de Vandermonde del vector X de M elementos.

\[
\left(\begin{matrix}
1 & x_0^1 & x_0^2   & ... &  x_0^{N-1} & x_0^N \\
1 & x_1^1 & x_1^2   & ... &  x_1^{N-1} & x_1^N \\
\hdots & \hdots    & ... & \hdots & \hdots & \hdots \\ 
1 & x_{M-1}^1 & x_{M-1}^2   & ... &  x_{M-1}^{N-1} & x_{M-1}^N \\
\end{matrix}\right)
   \]


Pds::Vector X="1\n 2\n -1\n 3";
Pds::Matrix M=Pds::PolyMat(X,3);

M.Print("M:\n");

La salida sería:

M:
1  1  1  1  
1  2  4  8  
1  -1 1  -1 
1  3  9  27
Parámetros
[in]XVector a evaluar.
[in]NOrden del polinomio.
Devuelve
Retorna una matriz con el resultado.
Ejemplos
example_vector_poly.cpp.

◆ PolyMat() [2/2]

Pds::Matrix Pds::PolyMat ( double  x,
unsigned int  N 
)

Retorna la Matriz de Vandermonde del vector X de M elementos.

\[
\left(\begin{matrix}
1 & x_0^1 & x_0^2   & ... &  x_0^{N-1} & x_0^N \\
\end{matrix}\right)
   \]


double x=-2;
Pds::Matrix M=Pds::PolyMat(x,3);

M.Print("M:\n");

La salida sería:

M:
1  -2  4  -8 
Parámetros
[in]xValor a evaluar.
[in]NOrden del polinomio.
Devuelve
Retorna una matriz con el resultado.

◆ PolyVal() [1/3]

Pds::Vector Pds::PolyVal ( const Pds::Vector P,
const Pds::Vector X 
)

Retorna El resultado de evaluar un polinomio P de grado N.

\[
y= p_0 x^0 + p_1 x^1 + p_2 x^2 + ... + p_{N-1} x^{N-1} + p_{N} x^N 
   \]

\[
Y= P(X)
   \]


Pds::Vector P="1 0 1";
Pds::Vector X="1 -1 2 -2";
Pds::Vector V=Pds::PolyVal(P,X);

V.T().Print("V.T():\n");

La salida sería:

V.T(): 2 2 5 5  
Parámetros
[in]PPolinomio a evaluar.
[in]XVector a evaluar.
Devuelve
Retorna Y=P(X).
Ejemplos
example_vector_poly.cpp.

◆ PolyVal() [2/3]

Pds::Matrix Pds::PolyVal ( const Pds::Vector P,
const Pds::Matrix X 
)

Retorna El resultado de evaluar un polinomio P de grado N.

\[
y= p_0 x^0 + p_1 x^1 + p_2 x^2 + ... + p_{N-1} x^{N-1} + p_{N} x^N 
   \]

\[
Y= P(X)
   \]


Pds::Vector P="1 0 1";
Pds::Matrix X=  "0 1 2\n"
                "3 4 5\n"
                "6 7 8";
Pds::Matrix A=Pds::PolyVal(P,X);

A.Print("A:\n");

La salida sería:

A:
1  2  5  
10 17 26 
37 50 65  
Parámetros
[in]PPolinomio a evaluar.
[in]XMatriz a evaluar.
Devuelve
Retorna Y=P(X).

◆ PolyVal() [3/3]

double Pds::PolyVal ( const Pds::Vector P,
double  x 
)

Retorna El resultado de evaluar un polinomio P de grado N.

\[
y= p_0 + p_1 x^1 + p_2 x^2 + ... + p_{N-1} x^{N-1} + p_{N} x^N 
   \]

\[
y= P(x)
   \]


Pds::Vector P="1 0 1";
double x= -2;
double a=Pds::PolyVal(P,x);

std::cout<<a<<"\n";

La salida sería:

5 
Parámetros
[in]PPolinomio a evaluar.
[in]xVariable a avaliar.
Devuelve
Retorna Y=P(x).

◆ PolyDer()

Pds::Vector Pds::PolyDer ( const Pds::Vector P,
unsigned int  N = 1 
)

Retorna la derivada D del polinomio P(x).

\[
P(x) = p_0 + p_1 x^1 + p_2 x^2 + ... + p_{N-1} x^{N-1} + p_{N} x^N 
   \]

\[
D(x) \leftarrow  \frac{ d^NP(x)}{dx^N} 
   \]


Pds::Vector P="1 0 1";
Pds::Vector D=Pds::PolyDer(P,1);

D.T().Print("D.T():\t");

La salida sería:

D.T(): 0 2 
Parámetros
[in]PPolinomio a evaluar.
[in]NOrden de la derivada, por defecto es la primera derivada.
Devuelve
Retorna la N-esima derivada.
Ejemplos
example_vector_poly.cpp.

◆ PolyMul()

Pds::Vector Pds::PolyMul ( const Pds::Vector P,
const Pds::Vector Q 
)

Retorna la multiplicación de los polinomio P(x) e Q(x).

\[
P(x) = p_0 + p_1 x^1 + p_2 x^2 + ... + p_{N-1} x^{N-1} + p_{N} x^N 
   \]

\[
Q(x) = q_0 + q_1 x^1 + q_2 x^2 + ... + q_{M-1} x^{M-1} + q_{M} x^M 
   \]

\[
D(x) \leftarrow  P(x)Q(x)
   \]


Pds::Vector P1="1 1";
Pds::Vector P2="1 2 1";
Pds::Vector D=Pds::PolyMul(P1,P2);

D.T().Print("D.T():\t");

La salida sería:

D.T(): 1 3 3 1
Parámetros
[in]PPolinomio a multiplicar.
[in]QPolinomio a multiplicar.
Devuelve
La multiplicación de los polinomios, $ P(x)Q(x)$.
Ejemplos
example_vector_poly.cpp.

◆ PolyAdd()

Pds::Vector Pds::PolyAdd ( const Pds::Vector P,
const Pds::Vector Q 
)

Retorna la suma de los polinomio P(x) e Q(x).

\[
P(x) = p_0 + p_1 x^1 + p_2 x^2 + ... + p_{N-1} x^{N-1} + p_{N} x^N 
   \]

\[
Q(x) = q_0 + q_1 x^1 + q_2 x^2 + ... + q_{M-1} x^{M-1} + q_{M} x^M 
   \]

\[
D(x) \leftarrow  P(x)+Q(x)
   \]


Pds::Vector P1="1 1";
Pds::Vector P2="1 2 1";
Pds::Vector D=Pds::PolyAdd(P1,P2);

D.T().Print("D.T():\t");

La salida sería:

D.T(): 2 3 1
Parámetros
[in]PPolinomio a sumar.
[in]QPolinomio a sumar.
Devuelve
La suma de los polinomios, $ P(x)+Q(x)$.
Ejemplos
example_vector_poly.cpp.

◆ PolyAcc()

bool Pds::PolyAcc ( Pds::Vector Acc,
const Pds::Vector P 
)

Retorna la suma de los polinomio Acc(x) e P(x).

\[
P(x) = p_0 + p_1 x^1 + p_2 x^2 + ... + p_{N-1} x^{N-1} + p_{N} x^N 
   \]

\[
Acc(x) = q_0 + q_1 x^1 + q_2 x^2 + ... + q_{M-1} x^{M-1} + q_{M} x^M 
   \]

\[
Acc(x) \leftarrow  Acc(x)+Q(x)
   \]


Pds::Vector Acc;
Pds::PolyAcc(Acc,"1 2 1");

Acc.T().Print("Acc.T():\t");

La salida sería:

Acc.T(): 1 2 1
Parámetros
[out]AccPolinomio acumulador. Si el tamaño de $Acc$ es mayor que el tamaño de $P$ entonces la función no reserva nueva memoria, caso contraio el acumulador $Acc$ si reorganiza su memoria.
[in]PPolinomio a sumar.
Devuelve
Retorna false si $P$ está vacio, en caso contrario retorna true aun cuando $Acc$ está vacia.
Ejemplos
example_vector_poly.cpp.

◆ PolyPoly()

Pds::Vector Pds::PolyPoly ( const Pds::Vector P,
const Pds::Vector Q 
)

Dados los polinomios P(x) y P(x), la función retorna la evaluación de P(Q(x)).

\[
P(x) = p_0 + p_1 x^1 + p_2 x^2 + ... + p_{N-1} x^{N-1} + p_{N} x^N 
   \]

\[
Q(x) = q_0 + q_1 x^1 + q_2 x^2 + ... + q_{M-1} x^{M-1} + q_{M} x^M 
   \]

\[
D(x) \leftarrow  P(Q(x))
   \]


Pds::Vector P="1 1 1";
Pds::Vector Q="1 -2";
Pds::Vector D=Pds::PolyPoly(P,Q);

D.T().Print("D.T():\t");

La salida sería:

D.T(): 3 -6 4
Parámetros
[in]PPolinomio a evaluar.
[in]QPolinomio a evaluar.
Devuelve
El polinomio $ P(Q(x))$.
Ejemplos
example_vector_poly.cpp.

Enlaces de interés

HomePage Bazaar Download Bug report Ayuda Developer Feed