Sei sulla pagina 1di 9

08. POLINOMIOS, CURVAS DE AJUSTE E INTERPOLACION Lic.

Amado Malca Villalobos

POLINOMIOS, CURVAS DE AJUSTE E INTERPOLACION

MATLAB trabaja indistintamente con números reales o complejos, pero hay algunas propiedades
específicas de estos últimos que hay que tener en cuenta. Polinomios son vectores cuyas componentes son
los coeficientes del polinomio. Sumar polinomios es como sumar vectores, pero también se puede
multiplicar y dividir polinomios. MATLAB tiene una serie de funciones que ayudan a trabajar con
polinomios cómodamente.

Números Complejos
El comando abs(a) devuelve el valor absoluto o el modulo del numero a según que este sea real o
complejo. De la misma forma abs(A) devuelve una matriz cuyos elementos son los módulos o los valores
absolutos de los elementos de A según que estos sean números complejos o reales. Además, hay que tener
en cuenta que MATLAB no produce un error si se le pide la raíz cuadrada o el logaritmo de un numero
negativo sino que devuelve el correspondiente numero complejo. La unidad imaginaria es una constante
predefinida en MATLAB. Las letras que la designan son bien i, bien j.
Hay que tener cuidado con la trasposición. Si A es una matriz de números complejos entonces A’ es la
transpuesta conjugada de A (lo que nosotros solemos designar como A*). Si queremos la transpuesta de A
debemos usar A.’. Por ejemplo

>> A=[1-i 2+i; 3+i i]


A=
1.0000 - 1.0000i 2.0000 + 1.0000i
3.0000 + 1.0000i 0.0000 + 1.0000i
>> Atc=A'
Atc =
1.0000 + 1.0000i 3.0000 - 1.0000i
2.0000 - 1.0000i 0.0000 - 1.0000i
>> At=A.'
At =
1.0000 - 1.0000i 3.0000 + 1.0000i
2.0000 + 1.0000i 0.0000 + 1.0000i
>>

Finalmente, el comando plot cuando se emplea con números complejos tiene un significado especial: Si y
es un vector de números complejos la sentencia plot(y) es equivalente a plot(real(y),imag(y)).

>> y=[1+i 6+4i 4i 5+i 3+6i 1+i]


y=
Columns 1 through 5
1.0000 + 1.0000i 6.0000 + 4.0000i 0.0000 + 4.0000i 5.0000 + 1.0000i 3.0000 + 6.0000i
Column 6
1.0000 + 1.0000i
>> plot(y)
>>
6

5.5

4.5

3.5

2.5

1.5

1
0 1 2 3 4 5 6

Calculo con Polinomios


08 polinomios 1
08. POLINOMIOS, CURVAS DE AJUSTE E INTERPOLACION Lic. Amado Malca Villalobos

Los polinomios son herramientas matemáticas muy fáciles de manipular, ya sea derivando y/o
integrando. Por lo cual los hace ideales para representar algún suceso discreto o también una
función cuya integral sea imposible de hallar o muy difícil de calcular.
La idea es que el error que se pueda dar con esta aproximación polinomial, a una función
desconocida o una expresión complicada, sea el mínimo. Tendiendo hacia cero. Este
procedimiento de aproximar una función se denomina interpolación.

Un polinomio es una expresión de la forma:


p (x)= an xn + an- 1xn- 1 + L + a1x + a0 , n Î Z +
Polinomio En Matlab
p (x)= 2 x + 5 > > p = [2 5]
q (x)= 6x3 - 7 x2 + 2 > > q = [6 - 7 0 2]
r (x)= 4x5 + 6x2 - 8 > > r = [4 0 0 6 0 - 8]

VALOR DE UN POLINOMIO
Para evaluar un polinomio en la variable x, se realiza con el siguiente comando:
polyval ( p, x)
Donde p es el vector con los coeficientes del polinomio, y x es el valor para el cual se debe
evaluar el polinomio. Este comando evalúa el polinomio como si fuera una función.

Ejemplo: Dado el polinomio p (x)= x5 - 12,1x4 + 40,59x3 - 17,015x2 - 71,95x + 35,88


a) Hallar p(5), p(9), p(-1)
b) Representar gráficamente el polinomio p(x), con - 1,5 £ x £ 6, 7
Solución:
>> p=[1 -12.1 40.59 -17.015 -71.95 35.88]
p = 1.0000 -12.1000 40.5900 -17.0150 -71.9500 35.8800
>> polyval(p,5)
ans = -112.9950
>> polyval(p,9)
ans = 7.2611e+003
>> polyval(p,-1)
ans = 37.1250
>> x=-1.5:0.1:6.7;
>> y=polyval(p,x);
>> plot(x,y)
>> grid
>>
150

100

50

-50

-100

-150

-200
-2 -1 0 1 2 3 4 5 6 7

08 polinomios 2
08. POLINOMIOS, CURVAS DE AJUSTE E INTERPOLACION Lic. Amado Malca Villalobos
RAICES DE UN POLINOMIO
Siempre es necesario hallar los valores reales x, para los cuales un polinomio es cero.
Resolviendo la ecuación: p (x)= 0
Para este cometido será necesario utilizar la función roots de MatLab, cuya sintaxis es:
r = roots ( p)
p es un vector fila con los coeficientes del polinomio
r es un vector columna con las raíces del polinomio.

Ejemplo: En el polinomio del ejemplo anterior calculando las raíces del polinomio dado:
>> r=roots(p)
r = 6.5000
4.0000
2.3000
-1.2000
0.5000
>>

Ejemplo: También tenemos el siguiente polinomio: p (x)= x4 - 1


>> p=[1 0 0 0 -1]
p= 1 0 0 0 -1
>> r=roots(p)
r = -1.0000
-0.0000 + 1.0000i
-0.0000 - 1.0000i
1.0000
>>

Ejemplo: También podemos hacerlo directamente:

>> r=roots([1 0 0 0 -1])


r = -1.0000
-0.0000 + 1.0000i
-0.0000 - 1.0000i
1.0000
>>

Ahora veamos el proceso inverso, es decir dadas las raíces debemos encontrar el polinomio
correspondiente. Para ello usaremos el comando poly, la sintaxis de este comando es como sigue:
p = poly (r )
r es un vector fila o columna con las raíces del polinomio
p es un vector con los coeficientes del polinomio.

Ejemplo: Hallar el polinomio cuyas raíces son:


a) 1, 2, 3, 4 y 5.
b) 1+4i, 1-4i, 2+sqrt(5), 2-sqrt(5).
>> r=[1 2 3 4 5]
r= 1 2 3 4 5
>> p=poly(r)
p = 1 -15 85 -225 274 -120
>> r=[1+4i 1-4i 2+sqrt(5) 2-sqrt(5)]
r = 1.0000 + 4.0000i 1.0000 - 4.0000i 4.2361 -0.2361
>> p=poly(r)
p = 1.0000 -6.0000 24.0000 -66.0000 -17.0000
>>

SUMA DE POLINOMIOS
08 polinomios 3
08. POLINOMIOS, CURVAS DE AJUSTE E INTERPOLACION Lic. Amado Malca Villalobos
Para sumar polinomios solo se debe tener en cuenta que los vectores asociados tengan la misma
dimensión. Si fuera el caso deberá completarse con ceros a la izquierda.

Ejemplo: Sumar p (x)= x4 + 6x3 - 5x + 7 y q (x)= 3x2 + 8x - 5

>> p=[1 6 0 -5 7]
p = 1 6 0 -5 7
>> q=[0 0 3 8 -5]
q = 0 0 3 8 -5
>> p+q
ans = 1 6 3 3 2
>> 2*p-3*q
ans = 2 12 -9 -34 29
>>

MULTIPLICACIÓN DE POLINOMIOS
Para el producto de polinomios no es necesario completar, y se utiliza el comando conv, de
MatLab.
c = conv ( p, q)
p y q son los polinomios a multiplicar.
c es el vector que contiene los coeficientes del producto

Ejemplo: Multiplicar p (x)= 4x3 - 5x2 + 6x + 2 y q (x)= x2 - 7 x + 3

>> p=[4 -5 6 2]
p = 4 -5 6 2
>> q=[3 8 -5]
q = 3 8 -5
>> c=conv(p,q)
c = 12 17 -42 79 -14 -10
>>

DIVISIÓN DE POLINOMIOS
Para la división, se usa el comando deconv, de MatLab.
[q, r ]= deconv (u, v)
u y v son los polinomios a dividir.
q es el cociente de la división y r es el residuo.

Ejemplo: Dividir u (x)= 6x5 + 3x2 - 8x + 20 y v (x)= 2 x2 + 8x - 3


>> u=[6 0 0 3 -8 20]
u = 6 0 0 3 -8 20
>> v=[2 8 -3]
v = 2 8 -3
>> [q,r]=deconv(u,v)
q = 1.0e+002 *
0.030000000000000 -0.120000000000000 0.525000000000000 -2.265000000000000
r = 1.0e+003 * 0 0 0 0 1.961500000000000 -0.659500000000000
>>

08 polinomios 4
08. POLINOMIOS, CURVAS DE AJUSTE E INTERPOLACION Lic. Amado Malca Villalobos
DERIVADA DE UN POLINOMIO
Para calcular en forma específica la derivada de un polinomio, se usa el comando polyder.
Sea que p y q son vectores de los polinomios
k = polyder ( p) Donde k (x)= p '(x)
Derivada de un producto de polinomios
k = polyder ( p, q) Donde k (x) = ( p (x)×q (x))'
Derivada de una división de polinomios
n (x )
[n, d ]= polyder ( p, q) Donde = ( p ( x) q ( x))'
d (x)

Ejemplo: Considere los polinomios:


p (x)= 16x6 + 12x2 - 5x + 13 y q (x)= 5x2 + 18x - 23

>> p=[16 0 0 0 12 -5 13]


p = 16 0 0 0 12 -5 13
>> q=[5 18 -23]
q = 5 18 -23
>> m=polyder(p)
m = 96 0 0 0 24 -5
>> g=polyder(p,q)
640 2016 -2208 0 240 573 -602 349
>> [n,d]=polyder(p,q)
n= 320 1440 -2208 0 0 241 -682 -119
d = 25 180 94 -828 529
>>

EVALUACIÓN DE UN POLINOMIO EN UNA MATRIZ


>> A
A=
1.0000 - 1.0000i 2.0000 + 1.0000i
3.0000 + 1.0000i 0.0000 + 1.0000i
>> p=[1 2 5 7 9]
p=
1 2 5 7 9
>> polyvalm(p,A)
ans =
88.0000 +49.0000i 46.0000 +63.0000i
77.0000 +79.0000i 25.0000 +95.0000i
>>

CURVAS DE AJUSTE

REGRESION POLINOMIAL
08 polinomios 5
08. POLINOMIOS, CURVAS DE AJUSTE E INTERPOLACION Lic. Amado Malca Villalobos
Este tema también llamado regresión, muy utilizado para modelar una función de la cual solo se
conoce una cantidad finita de valores. El polinomio puede ser lineal, cuadrático, cubico, etc.
La teoría matemática nos dice que, dados n puntos del tipo (xi , yi ) es posible hallar un
polinomio de grado n-1, que pase por tales puntos.
Pero si se tiene muchos datos es preferible buscar un polinomio de grado menor, así tendremos
que posiblemente la curva de ajuste no pase por todos los puntos, pero el error tiende a ser menor.
Esta metodología se llama de “Mínimos Cuadrados”.
La forma básica de buscar estas curvas es usando el comando polyfit, la sintaxis es como sigue:
p = polyfit (x, y, n)
p es el vector de los coeficientes del polinomio de ajuste
x es el vector de las abscisas de los puntos
y son las ordenadas de los puntos
n es el grado de la curva de ajuste

Ejemplo: Ahora tenemos los valores de la temperatura en un espacio de 12 horas.


T = [28 28 29 30 31 32 34 34 34 33 31 30]
Hallaremos una curva de ajuste, de cuarto grado
Solucion:
Programa: curvatemp.m Ejecución en MatLab
x=[1 2 3 4 5 6 7 8 9 10 11 12] >> curvatemp
T=[28 28 29 30 31 32 34 34 34 33 x = 1 2 3 4 5 6 7 8 9 10
31 30] 11 12
p=polyfit(x,T,4) T = 28 28 29 30 31 32 34 34 34
t=1:0.01:12; 33 31 30
w=polyval(p,t); p = 0.002585955710956 -0.092875874125877
plot(x,T,' *') 0.939284673659698 -2.356861888111967
hold on 29.613636363636434
plot(t,w)
grid
hold on

34

33

32

31

30

29

28

27
0 2 4 6 8 10 12

REGRESION POTENCIAL
El modelo matemático es: y = bx m , convertible a un polinomio lineal, siguiendo la formula:
ln( y ) = m ln( x) + ln(b)
La forma básica de buscar estas curvas es usando el comando polyfit, la sintaxis es como sigue:
p = polyfit (log( x),log( y),1)
Donde resulta que p, es un vector con los coeficientes del polinomio:
p = [ p(1) p(2)] = [m ln(b)]

REGRESION EXPONENCIAL
El modelo matemático es: y = bemx , convertible a un polinomio lineal, siguiendo la formula:
ln( y ) = mx + ln(b)
08 polinomios 6
08. POLINOMIOS, CURVAS DE AJUSTE E INTERPOLACION Lic. Amado Malca Villalobos
La forma básica de buscar estas curvas es usando el comando polyfit, la sintaxis es como sigue:
p = polyfit (x,log( y),1)
p es el vector de los coeficientes del polinomio lineal: p(1)=m, p(2)=ln(b)

El modelo matemático es: y = b 10mx , convertible a un polinomio lineal, siguiendo la formula:


log( y ) = mx + log(b)
La forma básica de buscar estas curvas es usando el comando polyfit, la sintaxis es como sigue:
p = polyfit (x,log10( y),1)
p es el vector de los coeficientes del polinomio lineal: p(1)=m y p(2)=log(b)

REGRESION LOGARITMICA
El modelo matemático es: y = m ln( x) + b
La forma básica de buscar estas curvas es usando el comando polyfit, la sintaxis es como sigue:
p = polyfit (log( x), y,1)
p es el vector de los coeficientes del polinomio lineal: p(1)=m, y p(2)=b

El modelo matemático es: y = m log( x) + b


La forma básica de buscar estas curvas es usando el comando polyfit, la sintaxis es como sigue:
p = polyfit (log10( x), y,1)
p es el vector de los coeficientes del polinomio lineal: p(1)=m, y p(2)=b

REGRESION RECIPROCA
1 1
El modelo matemático es: y= , convertible a un polinomio lineal: = mx + b
mx + b y
La forma básica de buscar estas curvas es usando el comando polyfit, la sintaxis es como sigue:
p = polyfit (x,1. / y,1)
p es el vector de los coeficientes del polinomio lineal: p(1)=m, p(2)= b

Ejemplo: Considere la función dada por la siguiente tabla:


x 0 1 2 3 4 5
y 1.0000 -0.6242 -1.4707 3.2406 -0.7366 -6.3717
x 6 7 8 9 10
y 9.6120 2.3363 -24.5438 25.3848 23.5321

Solución:
Programa: ajustecurv.m Ejecución en MatLab
t =[0 1 2 3 4 5 6 7 8 9 10] >> ajustecur
w = [6.00 4.83 3.70 3.15 2.41 t= 0 1 2 3 4 5 6 7 8 9
1.83 1.49 1.21 0.96 0.73 0.64] 10
plot(x,y,' *') w = 6.0000 4.8300 3.7000 3.1500
p=polyfit(t,log(w),1); 2.4100 1.8300 1.4900 1.2100 0.9600
m=p(1) 0.7300 0.6400
b=exp(p(2)) m = -0.2290
tm=0:0.1:10; b = 5.9889
wm=b*exp(m*tm); >>
plot(t,w,' *',tm,wm)

08 polinomios 7
08. POLINOMIOS, CURVAS DE AJUSTE E INTERPOLACION Lic. Amado Malca Villalobos

0
0 1 2 3 4 5 6 7 8 9 10

INTERPOLACION

Esta palabra significa encontrar un valor intermedio de una función y = f (x) , dado un conjunto
de valores de ella, la cual está definida en un dominio determinado. Este valor corresponde a un
elemento intermedio en el dominio.
Dado un conjunto de valores: (xi , yi ), i = 1, n ; donde xi < xi+ 1 , " i = 1, n - 1
Para hallar este valor intermedio: se usa las curvas halladas en el tema de curvas de ajuste.
(xi , yi ), i = 1, n
Para este procedimiento se usa el comando de interp1, con la siguiente estructura:
yi = interp1(x, y, xi,' metodo ')
x es el vector de abscisas de los puntos
y es el vector de ordenadas de los puntos
xi es la abscisa de punto a interpolar
yi es el valor interpolado
Por defecto el método es ' linear ' , los otros métodos son:
' nearest ' Devuelve el valor del punto más cercano al interpolado.
' linear ' Utiliza interpolación segmentaria lineal.
' spline ' Utiliza interpolación segmentaria cubica.
' pchip ' o ' cubic ' utiliza interpolación de Hermite cubica

Ejemplo: Interpolar los valores de la función dada por la siguiente tabla:

x 0 1 2 3 4 5
y 1,0 -0,6242 -1,4707 3,2406 -0,7366 -6,3717
x
Que corresponden a la función: f (x)= 1,5 cos (2 x)
Solución:
interpolf.m Ejecución en
MatLab
x=0:1:5; >> interpolf
y=[1.0 -0.6242 -1.4707 3.2406 >>
-0.7366 -6.3717];
xi=0:0.1:5;
yilin=interp1(x,y,xi,'linear');
yispl=interp1(x,y,xi,'spline');
yipch=interp1(x,y,xi,'pchip');
yfun=1.5.^xi.*cos(2*xi);
subplot(1,3,1)
08 polinomios 8
08. POLINOMIOS, CURVAS DE AJUSTE E INTERPOLACION Lic. Amado Malca Villalobos
plot(x,y,'o',xi,yfun,xi,yilin,'-
-');
subplot(1,3,2)
plot(x,y,'o',xi,yfun,xi,yispl,'-
-');
subplot(1,3,3)
plot(x,y,'o',xi,yfun,xi,yipch,'-
-');

4 4 4

2 2 2

0 0 0

-2 -2 -2

-4 -4 -4

-6 -6 -6

-8 -8 -8
0 1 2 3 4 5 0 1 2 3 4 5 0 1 2 3 4 5

08 polinomios 9

Potrebbero piacerti anche