Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Races de un polinomio
Para calcular las races de la ecuacin
a1xn+a2xn-1+...+anx+an+1=0
se emplea la funcin roots y se le pasa el vector p formado por los coeficientes
del polinomio. La funcin roots devuelve un vector columna que contiene las
races.
>> p=[a1 a2 ... an an+1];
>> x=roots(p)
La funcin roots tiene una funcin inversa poly que se le pasa el vector x que
contiene las races y devuelve los coeficientes del polinomio
p=poly(x)
Sea f(x)= x5- 3.5x4 + 2.75x3 + 2.125x2 - 3.875x + 1.25
Guardamos los coeficientes del polinomio en el vector fila p=[1 -3.5 2.75
2.125 -3.875 1.25];
Mediante la funcin plolyval, podemos calcular el valor del polinomio cuando
proporcionamos el valor de x
>> p=[1 -3.5 2.75 2.125 -3.875 1.25];
>> polyval(p, 1.5) %valor del polinomio cuando se proporciona el valor
de x.
ans= -0.6250
>> r=roots(p) %races del polinomio
r =
2.0000
-1.0000
1.0000 + 0.5000i
1.0000 - 0.5000i
0.5000
>> c=poly(r) %reconstruimos el polinomio a partir de las races
-2)
Procedimiento grfico
Vamos a estudiar varios procedimientos para calcular la raz de una ecuacin
trascedente, por ejemplo, x-cos(x)=0
En primer lugar, vamos a hacer una representacin grfica de esta funcin para
conocer aproximadamente el punto donde la funcin corta al eje X.
Escribimos el script mouse_raiz y lo guardamos un fichero .M
x=0:0.1:pi/2;
y=x-cos(x);
plot(x,y)
grid on
xlabel('x')
ylabel('y')
title('x-cos(x)')
Races simples
Podemos utilizar el puntero del ratn para buscar los puntos en los que la
funcin corta al eje X, aadiendo el comandoginput al final del
script mouse_raiz
x=0:0.1:pi/2;
y=x-cos(x);
plot(x,y)
grid on
xlabel('x')
ylabel('y')
title('x-cos(x)')
[xRaiz,yRaiz] = ginput
xRaiz =
yRaiz =
0.7379
-0.0022
Races mltiples
Si la funcin tiene ms de una raz, se seala cada uno de los puntos de
interseccin de la funcin con el eje X con el puntero del ratn y se pulsa el
botn izquierdo del ratn. Finalmente, se pulsa Retorno y aparecen las
abscisas en el vector xRaiz y las ordenadas en el vector yRaiz de dichos
puntos.
Nos aproximaremos a las races que ya conocemos de una funcin para ilustrar
este interesante procedimiento grfico
Guardamos el script mouse_raiz mediante File/Save As.. con el
nombre mouse_raiz_1. Modificamos el script para representar la funcin
coseno con el eje horizontal en grados y lo guardamos mediante File/Save o
pulsando el icono correspondiente.
Las dos races de cos(x)=0 en el intervalo (0,360) son 90 y 270.
x=0:1:360;
y=cosd(x);
plot(x,y)
grid on
xlabel('x')
ylabel('y')
title('cos(x)')
[xRaiz,yRaiz] = ginput
2.
3.
pulsamos Retorno,
y obtenemos lo siguiente:
>> mouse_raiz_1
xRaiz = 89.8618
yRaiz = -0.0088
270.5069
-0.0029
function y=func(x,a,b)
%cdigo de la funcin
end
Funciones implcitas
La siguiente funcin se estudia en la asignatura Energa Solar Fotovoltaica
(tercer curso).
y=351012(exp(x+0.01y0.025)1)x+0.01y1000y=351012(exp(x+0.01y0
.025)1)x+0.01y1000
(2)
Despejamos x1 de la primera ecuacin
x1=b1a11a12a11x2a13a11x3a14a11x4x1=b1a11a12a11x2a13a11x3a14a11x4
a122x2+a123x3+a124x4=b12a132x2+a133x3+a134x4=b13a242x1+a143x3+a144x4=b14a2
21x2+a231x3+a241x4=b21a321x2+a331x3+a341x4=b31a422x1+a431x3+a441x4=b41
con
a1ij=aijai1a1ja11b1i=biai1b1a11(i,j2,3,4)aij1=aijai1a1ja11
bi1=biai1b1a11(i,j2,3,4)
con
a2ij=a1ija1i2a12ja122b2i=b1ia1i2b12a122(i,j
3,4)aij2=aij1ai21a2j1a221bi2=bi1ai21b21a221(i,j3,4)
con
a3ij=a2ija2i3a23ja233b3i=b2ia2i3b23a233(i,j
4)aij3=aij2ai32a3j2a332bi3=bi2ai32b32a332(i,j4)
donde
a1ij=aijai1a11a1jb1i=biai1a11b1i,j=2...na2ij=a1ija1i2a122a12j
b2i=b1ia1i2a122b12i,j=3...nakij=ak1ijak1ikak1kkak1kj
bki=bk1iak1ikak1kkbk1ki,j=k...nk=1,2...n1aij1=aijai1a11a1j
bi1=biai1a11b1i,j=2...naij2=aij1ai21a221a2j1bi2=bi1ai21a221b21
i,j=3...naijk=aijk1aikk1akkk1akjk1bik=bik1aikk1akkk1bkk1
i,j=k...nk=1,2...n1
factor=Ab(i,k)/Ab(k,k);
for j=k:n+1
Ab(i,j)=Ab(i,j)-factor*Ab(k,j);
end
end
end
%incgnitas
x=zeros(n,1);
x(n)=Ab(n,n+1)/Ab(n,n);
for i=n-1:-1:1
x(i)=Ab(i,n+1)/Ab(i,i);
for j=i+1:n
x(i)=x(i)-Ab(i,j)*x(j)/Ab(i,i);
end
end
end
19
-7
-8
0x1+4x22x32x4=41x1+2x2+4x33x4=53x13x2+8x3
2x4=71x1+1x2+6x33x4=7{0x1+4x22x32x4=41x1+2x2+4x33x4=53x13x
2+8x32x4=71x1+1x2+6x33x4=7
-2.00
4.00
8.00
6.00
-2.00
-3.00
-2.00
-3.00
-4.00
5.00
7.00
7.00
Ab =
-3.00
-3.00
8.00
-2.00
7.00
1.00
2.00
4.00
-3.00
5.00
0
4.00
-2.00
-2.00
-4.00
-1.00
1.00
6.00
-3.00
7.00
%se hacen ceros los elementos de la primera columna de las filas 2,3,4
Ab =
-3.00
-3.00
8.00
-2.00
7.00
0
1.00
6.67
-3.67
7.33
0
4.00
-2.00
-2.00
-4.00
0
2.00
3.33
-2.33
4.67
%se examinan los valores de los elementos de la segunda columna de las
filas 2,3,4
intercambio fila 2 por fila 3
Ab =
-3.00
-3.00
8.00
-2.00
7.00
0
4.00
-2.00
-2.00
-4.00
0
1.00
6.67
-3.67
7.33
0
2.00
3.33
-2.33
4.67
%se hacen ceros los elementos de la segunda columna de las filas 3,4
Ab =
-3.00
-3.00
8.00
-2.00
7.00
0
4.00
-2.00
-2.00
-4.00
0
0
7.17
-3.17
8.33
0
0
4.33
-1.33
6.67
%se examinan los valores de los elementos de la tercera columna de las
filas 3,4
%no hay intercambio
%se hacen ceros los elementos de la tercera columna de la fila 4
%se completa la matriz triangular
Ab =
-3.00
-3.00
8.00
-2.00
7.00
0
4.00
-2.00
-2.00
-4.00
0
0
7.17
-3.17
8.33
0
0
0
0.58
1.63
end
Determinante
>> rank(A)
ans =
3
a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3[a11a12a13a21a22a23a31a32a23]
[x1x2x3]=[b1b2b3]AX=B
A-1AX=IX=X
De modo que
X=A-1B
En MATLAB esta ltima expresin se escribe utilizando el operador divisin
por la izquierda
X=A\B
La divisin por la derecha se utiliza para resolver la ecuacin XC=D. En esta
ecuacin X y D son vectores fila y C es una matriz cuadrada.
XCC-1=DC-1
X=DC-1 o bien, X=D/C (divisin por la derecha)
Sistema de ecuaciones lineales
a11x1+a12x2+.....+a1nxn=b1a21x1+a22x2+.....
+a2nxn=b2...am1x1+am2x2+.....
+amnxn=bma11a21...am1a12a22...am2............a1na2n...amnx1x
2...xn=b1b2...bm{a11x1+a12x2+.....
+a1nxn=b1a21x1+a22x2+.....+a2nxn=b2...am1x1+am2x2+.....
+amnxn=bm[a11a12...a1na21a22...a2n............am1am2...amn][x1x2...xn]=[b1b2...bm]
2.
3.
>>
>>
>>
Ab
A=[2 1; 2 -1;
b=[3;0;4];
Ab=[A b]
=
2
1
2
-1
1
-2
>> rank(A)
ans =
2
>> rank(Ab)
ans =
3
1 -2];
3
0
4
El sistema no tiene solucin (primer caso). Cada una de las ecuaciones del
sistema representa una recta, identificamosx1con x y x2 con y. En la figura
vemos la representacin grfica de las rectas: y=3-2x, y=2x, y=x/2-2; que como
vemos no se cortan en un punto.
2x1+x2=34x1+2x2=66x1+3x2=9246123[x1x2]=369{2x1+x
2=34x1+2x2=66x1+3x2=9[214263][x1x2]=[369]
>> A=[2 1; 4 2; 6 3];
>> b=[3;6;9];
>> Ab=[A b];
>> rank(A)
ans =
1
>> rank(Ab)
ans =
1
>> X=A\b
X =
2.0000
-1.0000
En la figura vemos la representacin grfica de las rectas: y=3-2x, y=2x5, y=x/2-2; que como vemos se cortan en un el punto x=2, y=-1.
Esta funcin nos puede ser til para resolver sistemas de ecuaciones.
Ab=3221110145015Ab=(3102112145015)
>> A=[3 -1 0; -2
>> b=[5;0;15];
>> Ab=[A b];
>> R=rref(Ab)
R =
1
0
0
1
0
0
1 1; 2 -1 4];
0
0
1
2
1
3
x1+x2+x3=6x12x3=42x1+x2x3=18{x1+x2+x3=6x12x3=42x1+x2
x3=18
El sistema equivalente es
x12x3=0x2+3x3=00=1{x12x3=0x2+3x3=00=1
x1+x2+x3=6x12x3=42x1+x2x3=10{x1+x2+x3=6x12x3=42x1+x2x3=
10
{x12x3=4x2+3x3=2{x1=4+2x3x2=23x3{x12x3=4x2+3x3=2{x1=4+2x3x2=2
3x3
Los valores s1, s2, ... sn son las trazas de las potencias de la matriz cuadrada A.
s1=trazaAs2=trazaA2....................sn=trazaAntraza
A=i=1inaiis1=trazaAs2=trazaA2....................sn=trazaAn}trazaA=i=1inaii
x1x2x3x4=0[a11a12a13a14a21a22a23a24a31a32a33a34a41a42a43a44]
[x1x2x3x4]=[x1x2x3x4]
[a11a12a13a14a21a22a23a24a31a32a33a34a41a42a43a44][x1x2x3x4]=0
a21x1+(a22)x2+a23x3+a24x4=0a31x1+a32x2+
(a33)x3+a34x4=0a41x1+a42x2+a43x3+
(a44)x4=0(a22)x2+a23x3+a24x4=a21x1a32x2+
(a33)x3+a34x4=a31x1a42x2+a43x3+
(a44)x4=a41x1(a22)a32a42a23(a33)a43a24a34(a44)
x2x3x4=a21x1a31x1a41x1{a21x1+
(a22)x2+a23x3+a24x4=0a31x1+a32x2+(a33)x3+a34x4=0a41x1+a42x2+a43x3+
(a44)x4=0{(a22)x2+a23x3+a24x4=a21x1a32x2+
(a33)x3+a34x4=a31x1a42x2+a43x3+
(a44)x4=a41x1[(a22)a23a24a32(a33)a34a42a43(a44)]
[x2x3x4]=[a21x1a31x1a41x1]
La funcin leverrier
1.
2.
3.
Calcula las races del polinomio, que son los valores propios
empleando la funcin MATLAB roots, a la cual se le pasa el
vector de los coeficientes y devuelve el vector (columna) de
las races.
4.
1.
2.
3.
4.
5.
6.
function [V,D]=leverrier(A)
%V vectores propios en columnas
% D valores propios en la diagonal de la matriz
n=length(A); %dimensin de la matriz
p=zeros(1,n); %reserva memoria para n elementos
s=zeros(n,1);
B=zeros(n); %reserva memoria para la matriz cuadrada de dimensin n
for i=1:n
B=A^i; %potencia de la matriz A
s(i)=trace(B); %calcula la traza de las sucesivas potencias de
la matriz A
end
%calcula los coeficientes del polinomio caracterstico
p(1)=-s(1);
for i=2:n
p(i)=-s(i)/i;
for j=1:i-1
p(i)=p(i)-p(j)*s(i-j)/i;
end
end
%races del polinomio caracterstico
raiz=roots([1 p]);
%Los valores propios aparecen en la diagonal de la matriz D
D=diag(raiz);
%Vectores propios para cada valor propio
C=-1.*A(2:n,1); %columna de A
V=zeros(n);
S=zeros(n,1); %vector propio
for i=1:length(D)
B=A(2:n,2:n)-D(i,i)*eye(n-1); %submatriz de A
S=[1 (B\C)'];
% vectores propios normalizados
%cada vector propio es una columna de V
V(1:n,i)=S/norm(S);
end
end
4 3 2 1]
0.2706
-0.6533
0.6533
-0.2706
0
0
0
-0.5858
ans =
1.0000
2.0000
3.0000
4.0000
2.0000
1.0000
2.0000
3.0000
3.0000
2.0000
1.0000
2.0000
4.0000
3.0000
2.0000
1.0000
MATLAB dispone de la funcin eig que realiza las mismas tareas que la
funcin leverrier.
>> A=[1 2 3 4; 2 1 2 3; 3 2 1 2; 4 3 2 1]
A =
1
2
3
4
2
1
2
3
3
2
1
2
4
3
2
1
>> [V,D]=eig(A)
V =
0.6533
-0.4483
0.2706
0.5468
0.2706
0.5468
-0.6533
0.4483
-0.2706
0.5468
0.6533
0.4483
-0.6533
-0.4483
-0.2706
0.5468
D =
-3.4142
0
0
0
0
-1.0990
0
0
0
0
-0.5858
0
0
0
0
9.0990
Ejercicio
Calcular los vectores propios y los valores propios de las matrices
111310210711151115
Integracin numrica
El procedimiento de Simpson
El desplazamiento del mvil durante el intervalo de tiempo ti=ti-ti1 comprendido entre ti-1 y ti es aproximadamente el rea del rectngulo <vi>ti.
El desplazamiento total x-x0 entre el instante inicial t0, y el instante
final t=tn es, aproximadamente
xx0i=1n<vi>tixx0i=1n<vi>ti
ti-1
ti
<vi>
<vi>ti
27.5
27.5
39.5
39.5
49.5
49.5
57.5
57.5
63.5
63.5
67.5
67.5
69.5
69.5
67.5
67.5
10
63.5
63.5
10
575.0
xx0=t0t(t2+14t+21)dt=t33+7t2+21t100=17303=576.6667
mxx0=t0t(t2+14t+21)dt=t33+7t2+21t|010=17303=576.6667m
2.
3.
4.
5.
function suma=integral_1(f,t)
suma=0;
v1=f(t(1));
for i=1:length(t)-1
v2=f(t(i+1));
vm=(v1+v2)/2;
suma=suma+vm*(t(i+1)-t(i));
v1=v2;
end
end
2.
3.
function suma=integral_2(f,x)
suma=0;
for i=1:length(x)-1
xm=(x(i+1)+x(i))/2;
suma=suma+f(xm)*(x(i+1)-x(i));
end
end
hyi+12h(yi+1yi)=12h(yi+1+yi)hyi+12h(yi+1yi)=12h(yi+1+yi)
h2(y1+y2)+h2(y2+y3)+h2(y3+y4)+...
+h2(yn2+yn1)+h2(yn1+yn)=h2(y1+2y2+2y3+2y4+...
+2yn2+2yn1+yn)h2(y1+y2)+h2(y2+y3)+h2(y3+y4)+...
+h2(yn2+yn1)+h2(yn1+yn)=h2(y1+2y2+2y3+2y4+...+2yn2+2yn1+yn)
+2(2ax0+b)h2+83ah3=h3(y0+4y1+y2)I=x0x0+2h(ax2+bx+c)dx=a3(6x02+12x0h2+
8h3)+b2(4x0h+4h2)+c(2h)=2h(ax02+bx0+c)+2(2ax0+b)h2+83ah3=h3(y0+4y1+y2)
end
suma=suma*h/3;
end
Integrales simples
La funcin quad(function, a, b);devuelve el resultado aproximado de la
integral cuando se le pasa la funcin a integrar en el primer
parmetro function, los lmites a y b de la integral. Ejemplos:
010(t2+14t+21)dt=t33+7t2+21t100=17303=576.6667
m010(t2+14t+21)dt=t33+7t2+21t|010=17303=576.6667m
>> f=@(x) -x.^2+14*x+21;
>> q=quad(f,0,10)
q = 576.6667
Integrales dobles
>> integral_doble
El valor de la integral es: 10.500
end
end
xi+1=xi+f(ti,xi)h
El procedimiento de Euler produce un error que se acumula a cada paso h de
integracin, que es el segmento en color azul que une los dos puntos en la
figura.
Escribimos una funcin denominada euler, a la que le pasaremos:
la funcin f(t,x),
el instante final tf
t
0
dxdt=costdxdt=cost
x(Euler)
0
x=sin t
0
/6
0.866
0.523
0.5
/3
0.5
0.977
0.866
/2
1.239
2/3
-0.5
1.239
0.866
5/6
-0.866
0.977
0.5
0.523
Esta tabla nos ilustra el modo de aplicar el mtodo de Euler a una ecuacin
diferencial de primer orden. Para aplicar el mtodo de Euler precisamos de un
paso h pequeo, incluso as los errores se van acumulando y al cabo de cierto
tiempo la diferencia entre el valor exacto y el calculado es grande.
Escribimos en script euler_script en el que definiremos la funcin f(t,x), las
condiciones iniciales y llamaremos a la funcin euler. Finalmente,
representaremos grficamente la solucin exacta y la obtenida aplicando el
mtodo de Euler
tf=input('tiempo final, tf: ');
n=input('nmero de pasos, n: ');
f=@(t,x) cos(t);
%condiciones iniciales
t0=0;
x0=0;
[t,x]=euler(f,t0,tf,x0,n);
hold on
plot(t,x,'b')
y=sin(t);
plot(t,y,'r')
xlabel('t')
ylabel('x');
legend('aproximada','exacta')
title('dx/dt=cost')
hold off
Sea una ecuacin diferencial de primer orden, con la condicin inicial de que
en el instante t0 el valor inicial de x es x0
Se elige una anchura de paso h y se calculan cuatro nmeros k1, k2, k3, k4 de
acuerdo con el procedimiento esquematizado en la tabla adjunta. Segn el
procedimiento ordinario de Runge-Kutta, a partir del valor de x en el
instantet se determina el valor de x en el instante t+h mediante la frmula que
figura en la ltima fila de dicha tabla.
dxdt=f(t,x)dxdt=f(t,x)
k1=hf(t,x)k2=hf(t+12h,x+12k1)k3=hf(t+12h,x+12k2)k4=hf(t+h,x+k3)k1=hf(t,x
)k2=hf(t+12h,x+12k1)k3=hf(t+12h,x+12k2)k4=hf(t+h,x+k3)
x(t+h)=x(t)+16(k1+2k2+2k3+k4)x(t+h)=x(t)+16(k1+2k2+2k3+k4)
la funcin f(t,x),
la condicin inicial de que en el instante t0el valor inicial
es x0,
el instante final tf
el nmero de pasos de integracin n comprendidos entre el
instante inical t0 y final tf.
h=(tf-t0)/n;
t=t0:h:tf;
x=zeros(n+1,1); %reserva memoria para n elementos del vector x
x(1)=x0;
for i=1:n
k1=h*f(t(i),x(i));
k2=h*f(t(i)+h/2,x(i)+k1/2);
k3=h*f(t(i)+h/2,x(i)+k2/2);
k4=h*f(t(i)+h,x(i)+k3);
x(i+1)=x(i)+(k1+2*k2+2*k3+k4)/6;
end
end
Rdqdt=VqC0qdqCVq=1RC0tdt
q=CV(1exp(tRC))Rdqdt=VqC0qdqCVq=1RC0tdt
q=CV(1exp(tRC))
El tiempo final, tf
o
2.
el nmero de pasos, n.
3.
4.
5.
6.
el valor inicial de x es x0
el valor inicial de y es y0
dxdt=f(t,x,y)dxdt=f(t,x,y)
dydt=g(t,x,y)dydt=g(t,x,y)
k1=hf(t,x,y)k2=hf(t+12h,x+12k1,y+12l
l1=hg(t,x,y)l2=hg(t+12h,x+12k1,y+12l
1,)k3=hf(t+12h,x+12k2,y+12l2)k4=hf(t
1)l3=hg(t+12h,x+12k2,y+12l2)l4=hg(t
+h,x+k3,y+l3)k1=hf(t,x,y)k2=hf(t+12h,
+h,x+k3,y+l3)l1=hg(t,x,y)l2=hg(t+12h,
x+12k1,y+12l1,)k3=hf(t+12h,x+12k2,y+1
2l2)k4=hf(t+h,x+k3,y+l3)
x+12k1,y+12l1)l3=hg(t+12h,x+12k2,y+1
2l2)l4=hg(t+h,x+k3,y+l3)
x(t+h)=x(t)
y(t+h)=y(t)
+16(k1+2k2+2k3+k4)x(t+h)=x(t)
+16(l1+2l2+2l3+l4)y(t+h)=y(t)
+16(k1+2k2+2k3+k4)
+16(l1+2l2+2l3+l4)
exp(bt))dxdt=axx=x0exp(at)dydt=axbyy=abax0(exp(at)exp(bt))
dxdt=vdxdt=v
dvdt=f(t,x,v)dvdt=f(t,x,v)
k1=hvk2=h(v+12l1)k3=h
l1=hf(t,x,v)l2=hf(t+12h,x+12k1,v+12l1)l3=hf(t+12h,
(v+12l2)k4=h(v+l3)k1=hv
x+12k2,v+12l2)l4=hf(t+h,x+k3,v+l3)l1=hf(t,x,v)l2=hf
k2=h(v+12l1)k3=h(v+12l2
)k4=h(v+l3)
(t+12h,x+12k1,v+12l1)l3=hf(t+12h,x+12k2,v+12l2)l4=h
f(t+h,x+k3,v+l3)
x(t+h)=x(t)
+16(k1+2k2+2k3+k4)x(t
v(t+h)=v(t)+16(l1+2l2+2l3+l4)v(t+h)=v(t)
+h)=x(t)
+16(k1+2k2+2k3+k4)
+16(l1+2l2+2l3+l4)
la funcin f (t,x,v)
Nos devuelve los vectores de las posiciones x y las velocidades v para cada
instante que se guarda en el vector tcomprendido entre el instante inicial t0 y el
final tf.
function [t,x,v] =rk_2(f,t0,tf,x0,v0,n)
h=(tf-t0)/n;
t=t0:h:tf;
x=zeros(n+1,1); %reserva memoria para n+1 element(i)os del
vect(i)or x(i)
v=zeros(n+1,1);
x(1)=x0; v(1)=v0;
for i=1:n
k1=h*v(i);
l1=h*f(t(i),x(i),v(i));
k2=h*(v(i)+l1/2);
l2=h*f(t(i)+h/2,x(i)+k1/2,v(i)+l1/2);
k3=h*(v(i)+l2/2);
l3=h*f(t(i)+h/2,x(i)+k2/2,v(i)+l2/2);
k4=h*(v(i)+l3);
l4=h*f(t(i)+h,x(i)+k3,v(i)+l3);
x(i+1)=x(i)+(k1+2*k2+2*k3+k4)/6;
v(i+1)=v(i)+(l1+2*l2+2*l3+l4)/6;
end
end
+Bcos(t))v=dxdt=exp(t)(Asin(t)+Bcos(t))+exp(t)(Acos(t)
Bsin(t))d2xdt2+2dxdt+02x=0=022x=exp(t)(Asin(t)
+Bcos(t))v=dxdt=exp(t)(Asin(t)+Bcos(t))+exp(t)(Acos(t)Bsin(t))
grid on
xlabel('t')
ylabel('x');
legend('aproximado','exacto')
title('oscilador amortiguado')
hold off
dxdt=vxdxdt=vx
dvxdt=f(t,x,vx,y,vy)dvxdt=f(t,x,vx,y,vy)
k1=hvxk2=h(vx+12l1)
l1=hf(t,x,vx,y,vy)l2=hf(t+12h,x+12k1,vx+12l1,y+12q1,vy+12m1)l3=hf(t
k3=h(vx+12l2)k4=h(vx
+12h,x+12k2,vx+12l2,y+12q2,vy+12m2)l4=hf(t+h,x+k3,vx+l3,y+q3,vy+
+l3)k1=hvxk2=h(vx+12
m3)l1=hf(t,x,vx,y,vy)l2=hf(t+12h,x+12k1,vx+12l1,y+12q1,vy+12m1)l3=hf
l1)k3=h(vx+12l2)k4=h(
vx+l3)
(t+12h,x+12k2,vx+12l2,y+12q2,vy+12m2)l4=hf(t+h,x+k3,vx+l3,y+q3,vy+m
3)
x(t+h)=x(t)
+16(k1+2k2+2k3+k4)
vx(t+h)=vx(t)+16(l1+2l2+2l3+l4)vx(t+h)=vx(t)+16(l1+2l2+2l3+l4)
x(t+h)=x(t)
+16(k1+2k2+2k3+k4)
dydt=vydydt=vy
dvydt=g(t,x,vx,y,vy)dvydt=g(t,x,vx,y,vy)
q1=hvyq2=h(vy+12m1
m1=hg(t,x,vx,y,vy)m2=hg(t+12h,x+12k1,vx+12l1,y+12q1,vy+12m1)m3
)q3=h(vy+12m2)q4=h
=hg(t+12h,x+12k2,vx+12l2,y+12q2,vy+12m2)m4=hg(t+h,x+k3,vx+l3,y
(vy+m3)q1=hvyq2=h(v
+q3,vy+m3)m1=hg(t,x,vx,y,vy)m2=hg(t+12h,x+12k1,vx+12l1,y+12q1,vy+
y+12m1)q3=h(vy+12m2
)q4=h(vy+m3)
12m1)m3=hg(t+12h,x+12k2,vx+12l2,y+12q2,vy+12m2)m4=hg(t+h,x+k3,vx
+l3,y+q3,vy+m3)
y(t+h)=y(t)
+16(q1+2q2+2q3+q4)
vy(t+h)=vy(t)+16(m1+2m2+2m3+m4)vy(t+h)=vy(t)
y(t+h)=y(t)
+16(q1+2q2+2q3+q4)
+16(m1+2m2+2m3+m4)
Nos devuelve los vectores posicin (x,y) y velocidad (vx,vy) para cada instante
que se guarda en el vector tcomprendido entre el instante inicial t0 y el final tf.
function [t,x,vx,y,vy]=rk_2_2(f,g,t0,tf,x0,vx0,y0,vy0,n)
h=(tf-t0)/n;
t=t0:h:tf;
x=zeros(n+1,1); %reserva memoria para n+1 element(i)os del
vect(i)or x(i)
y=zeros(n+1,1);
vx=zeros(n+1,1);
vy=zeros(n+1,1);
x(1)=x0; vx(1)=vx0;
y(1)=y0; vy(1)=vy0;
for i=1:n
k1=h*vx(i);
l1=h*f(t(i),x(i),vx(i),y(i),vy(i));
q1=h*vy(i);
m1=h*g(t(i),x(i),vx(i),y(i),vy(i));
k2=h*(vx(i)+l1/2);
l2=h*f(t(i)+h/2,x(i)+k1/2,vx(i)+l1/2,y(i)+q1/2,vy(i)+m1/2);
q2=h*(vy(i)+m1/2);
m2=h*g(t(i)+h/2,x(i)+k1/2,vx(i)+l1/2,y(i)+q1/2,vy(i)+m1/2);
k3=h*(vx(i)+l2/2);
l3=h*f(t(i)+h/2,x(i)+k2/2,vx(i)+l2/2,y(i)+q2/2,vy(i)+m2/2);
q3=h*(vy(i)+m2/2);
m3=h*g(t(i)+h/2,x(i)+k2/2,vx(i)+l2/2,y(i)+q2/2,vy(i)+m2/2);
k4=h*(vx(i)+l3);
l4=h*f(t(i)+h,x(i)+k3,vx(i)+l3,y(i)+q3,vy(i)+m3);
q4=h*(vy(i)+m3);
m4=h*g(t(i)+h,x(i)+k3,vx(i)+l3,y(i)+q3,vy(i)+m3);
x(i+1)=x(i)+(k1+2*k2+2*k3+k4)/6;
vx(i+1)=vx(i)+(l1+2*l2+2*l3+l4)/6;
y(i+1)=y(i)+(q1+2*q2+2*q3+q4)/6;
vy(i+1)=vy(i)+(m1+2*m2+2*m3+m4)/6;
end
end
Teniendo en cuenta que la fuerza que ejerce el Sol sobre un planeta viene
descrita por la ley de la Gravitacin Universal
F=GMmr2F=GMmr2
=GMP2L3x'(x'2+y'2)3/2d2x'dt'2LP2=GM(x'2+y'2)3/2x'LL3d2x'dt'2=GMP2L3x'(x'2+
dt'2
y'2)3/2
+y2)3/2
E=12m(v2x+v2y)GmMx2+y2E=12m(vx2+vy2)GmMx2+y2
1x'2+y'2e'=EmP2L2=12v'2421x'2+y'2
ylabel('y');
title('rbita de un planeta')
%energa final
m=length(t);
ef=(vx(m)*vx(m)+vy(m)*vy(m))/2-4*pi*pi/sqrt(x(m)*x(m)+y(m)*y(m));
%error relativo
fprintf('Error en energia %1.4f\n',abs((ef-e0)/e0))
Su sintaxis es la siguiente
[t,x]=ode45(odefun,tspan,x0, options, params)
fg=@(t,x) func_radioactivo_1(t,x,a,b);
dxdt=vdxdt=v
dvdt=f(t,x,v)dvdt=f(t,x,v)
dxdt=vxdxdt=vx
dydt=vydydt=vy
dvxdt=f(t,x,vx,y,vy)dvxdt=f(t,x,vx,y,vy
)
dvydt=g(t,x,vx,y,vy)dvydt=g(t,x,vx,y,v
y)
dydt=vydvydt=42y(x2+y2)3/2d2xdt2=42x(x2+y2)3/2
{dxdt=vxdvxdt=42x(x2+y2)3/2d2ydt2=42y(x2+y2)3/2
{dydt=vydvydt=42y(x2+y2)3/2
[t,x]=ode45(fg,tspan,x0);
plot(x(:,1),x(:,3),'r')
xlabel('x')
ylabel('y');
title('rbita de un planeta')
Opciones de ode45
Velocidad Indice
x(2)
ie
0.0000
2.5000
-0.0000
2.4378
0.0000
2.7173
3.1662
1.1322
-0.0000
function [detect,stopin,direction]=opcion1_ode45(t,x)
detect=[x(1) x(2)]; %[posicin, velocidad]
stopin=[0 0];
direction=[0 0];
end
ylabel('x');
title('oscilador amortiguado')
hold off
xy
2.
3.
4.
5.
6.
Interpolacin de Lagrange
que pase por todos los pares de datos (x1,y1), (x2,y2), ...(xN+1,yN+1). Los
coeficientes se pueden obtener resolviendo el sistema de ecuaciones:
a1xN1+a2xN11+aNx1+aN+1=y1a1xN2+a2xN12+aNx2+aN+1=
y2.....a1xNN+1+a2xN1N+1+aNxN+1+aN+1=yN+1{a1x1N+a2x1N1+aNx1+aN+1=y1
a1x2N+a2x2N1+aNx2+aN+1=y2.....a1xN+1N+a2xN+1N1+aNxN+1+aN+1=yN+1
En forma matricial
xN1xN2...xNN+1xN11xN12...xN1N+1............x1x2...xN+111...1a1
a2...aN+1=y1y2...yN+1(x1Nx1N1...x11x2Nx2N1...x21...............x
N+1NxN+1N1...xN+11)(a1a2...aN+1)=(y1y2...yN+1)
0.9 1.1 2.9 3.0 3.3 3.9 6.1 8.3 8.5 9.4
7
2
2
0
3
7
0
9
6
4
2.5 0.4 0.0 5.7 7.4 8.0 6.3 2.5 1.4 0.5
8
3
6
4
4
7
7
1
4
2
0.3782
-1.4951
3.6430
(xxN+1)(x1x2)(x1x3)...(x1xN+1)y1+(xx1)(xx3)...(xxN+1)(x2x1)(x2x3)...
(x2xN+1)y2+...+(xx1)(xx2)...(xxN)(xN+1x1)(xN+1x2)...(xN+1xN)yN+1
Como puede probarse fcilmente este polinomio pasa por todos los puntos
(xi,yi).
Podemos elaborar una funcin denominada lagrange_3 que devuelva el valor
interpolado yy de xx cuando se le pasa los vectores x e y que guardan las
abscisas y ordenadas (xi,yi) de los datos
function yy = lagrange_3(x,y,xx)
n = length(x);
for i=1:n
w(i)=prod(xx-x([1:i-1 i+1:n]))*y(i)/prod( x(i)-x([1:i-1 i+1:n]) )
;
end
yy=sum(w);
end
x=[0.97 1.12 2.92 3.00 3.33 3.97 6.10 8.39 8.56 9.44];
y=[2.58 0.43 0.06 5.74 7.44 8.07 6.37 2.51 1.44 0.52];
yy=lagrange_3(x,y,1.0)
=
10.0725
yy=lagrange_3(x,y,2.0)
= -203.7000
-10
-20
-16
3.6430
1.8338
Dado el conjunto de pares de datos (x1,y1), (x2,y2), (x3,y3), (x4,y4), (x5,y5) puntos
de color rojo en la fihgura. Definimos la funcin S(x)
S(x)=s1(x)x1x<x2s2(x)x2x<x3s3(x)
x3x<x4s4(x)x4x<x5si(x)=ai(xxi)3+bi(xxi)2+ci(xxi)+di
i=1,2,3,4S(x)={s1(x)x1x<x2s2(x)x2x<x3s3(x)x3x<x4s4(x)
x4x<x5si(x)=ai(xxi)3+bi(xxi)2+ci(xxi)+dii=1,2,3,4
+2bii=1,2,3,4dsidx=3ai(xxi)2+2bi(xxi)+cid2sidx2=6ai(xxi)+2bii=1,2,3,4
x5x4)2+c4(x5x4)+d4=y5
2.
3.
s'i1(xi)=s'i(xi)3a1(x2x1)2+2b1(x2x1)+c1=c23a2(x3x2)2+2b
2(x3x2)+c2=c33a3(x4x3)2+2b3(x4x3)+c3=c4s'i1(xi)=s'i(xi)
{3a1(x2x1)2+2b1(x2x1)+c1=c23a2(x3x2)2+2b2(x3x2)+c2=c33a3(x4x3)2+2
b3(x4x3)+c3=c4
4.
5.
Supongamos que el espaciado entre dos puntos consecutivos es constante h=xixi-1, i=2,3,4,5.
Vamos a expresar las incgnitas a1,a2,a3,a4, b1,b2,b3,b4, c1,c2,c3,c4, d1,d2,d3,d4, en
trminos de h, el valor de las ordenadas yi y el valor de la derivada segunda
de S(x), mi en cada punto xi, i=1,2,3,4,5.
De (4) y (5) expresamos a1,a2, a3, a4 en trminos de m1, m2, m3, m4, m5.
a1=m2m16ha2=m3m26ha3=m4m36ha4=m5m46ha1=m2m16h
a2=m3m26ha3=m4m36ha4=m5m46h
=y3m4m36hh3+m32h2+c3h+y3=y4
Que nos permite despejar c1, c2, c3 en trminos de m1, m2, m3, m4, y1, y2, y3, y4
c1=y2y1hm2+2m16hc2=y3y2hm3+2m26hc3=y4y3hm4+2m36hc1=y2y1hm2+2m16h
c2=y3y2hm3+2m26hc3=y4y3hm4+2m36h
c4=y5y4hm5+2m46h
Caso general
Fijamos los valores de los extremos del vector de las incgnitas m: m1=0, mn1=0, a continuacin, obtenemos mediante el operador divisin por la izquierda
los valores de m2, m3, ...mn-2, finalmente, se calculan:
a1=m2m16ha2=m3m26ha3=m4m36h....
an1=mnmn16ha1=m2m16ha2=m3m26ha3=m4m36h.... an1=mnm
n16h
b1=m12b2=m22b3=m32.... bn1=mn12b1=m12b2=m22
b3=m32.... bn1=mn12
c1=y2y1hm2+2m16hc2=y3y2hm3+2m26hc3=y4y3hm4+2m36h.....cn1=ynyn1hmn+
2mn16hc1=y2y1hm2+2m16hc2=y3y2hm3+2m26hc3=y4y3hm4+2m36h.....cn1
=ynyn1hmn+2mn16h
La funcin diag nos permite crear una matriz a partir de los vectores de sus
diagonales
A=diag(4*ones(3,1))+diag(ones(2,1),1)+diag(ones(2,1),-1)
A =
4
1
0
1
4
1
0
1
4
y=sin(x)./(1+x.^2);
h=x(2)-x(1); %espaciado constante
n=length(x); %nmero de pares de datos
A=diag(4*ones(n-2,1))+diag(ones(n-3,1),1)+diag(ones(n-3,1),-1); %matriz
de dimensin n-2
s=diff(diff(y))*6/h^2; %vector de los trminos indpendientes
mm=A\s'; %vector de las incgnitas
m=[0;mm;0]; %ceros en los extremos
for i=1:n-1
a(i)=(m(i+1)-m(i))/(6*h);
b(i)=m(i)/2;
c(i)=(y(i+1)-y(i))/h-(m(i+1)+2*m(i))*h/6;
d(i)=y(i);
end
%dibuja los puntos
hold on
plot(x,y,'o','markersize',4,'markeredgecolor','b','markerfacecolor','b')
for i=1:n-1
xx=x(i):h/50:x(i+1);
yy=a(i)*(xx-x(i)).^3+b(i)*(xx-x(i)).^2+c(i)*(xx-x(i))+d(i);
plot(xx,yy,'r')
end
xx=linspace(-4,4,300); %funcin
yy=sin(xx)./(1+xx.^2);;
plot(xx,yy,'g')
hold off
grid on
xlabel('x')
ylabel('y')
title('Interpolacin por splines')
con los nueve puntos unidos mediante polinomios de tercer grado (en color
rojo) veremos que la curva interpolada y la exacta estn prximas.
Los puntos de color azul, son los nueve pares de datos, cada una de las curvas
de color rojo entre dos puntos azules consecutivos es un polinomio de tercer
grado que pasa por dichos puntos y cumple las condiciones de continuidad de
su derivada primera y segunda.
Comparacin
Funcin spline de MATLAB
plot(x,y,'o','markersize',4,'markeredgecolor','b','markerfacecolor','b')
xx=linspace(-4,4,300);
yy=spline(x,y,xx); %interpolacin
plot(xx,yy, 'r')
yy=sin(xx)./(1+xx.^2);
plot(xx,yy,'g') %funcin
hold off
grid on
xlabel('x')
ylabel('y')
title('Interpolacin por splines de MATLAB')
Interplacin de Lagrange
Ahora interpolamos mediante un polinomio de grado n-1 que pasa por los
nueve puntos (xi,yi) del ejemplo anterior
x=-4:4;
y=sin(x)./(1+x.^2);
%dibuja los puntos
hold on
plot(x,y,'o','markersize',4,'markeredgecolor','b','markerfacecolor','b')
n=length(x);
p=polyfit(x,y,n-1); %polinomio que pasa por los puntos
%p=lagrange_p(x,y); %se obtiene el mismo resultado
xx=linspace(-4,4,300); %superposicin de la curva
yy=polyval(p,xx);
plot(xx,yy, 'r')
yy=sin(xx)./(1+xx.^2);
plot(xx,yy,'g')
hold off
grid on
xlabel('x')
ylabel('y')
title('Interpolacin por Lagrange')
Aproximacin de funciones
b=4;
xx=lincheby(a,b,n+1);
yy=f(xx);
p=polyfit(xx,yy,n);
x1=linspace(0,b,100);
y1=polyval(p,x1); %aproximacin mediante el polinomio p
y2=f(x1);
%funcin
hold on
plot(x1,y1,'b')
plot(x1,y2,'r')
plot(xx(xx>=0),yy(xx>=0),'ro','markersize',2,'markerfacecolor','r')
hold off
xlabel('x')
ylabel('y')
title('Interpolacin de una funcin')
http://www.sc.ehu.es/sbweb/fisica_/cinematica/rectilineo/regresion/regresion.h
tml
Abordaremos en esta pgina las distribuciones bidimensionales. Las
observaciones se dispondrn en dos columnas, de modo que en cada fila
figuren la abscisa x y su correspondiente ordenada y. La importancia de las
distribuciones bidimensionales radica en investigar como influye una variable
sobre la otra. Esta puede ser una dependencia causa efecto, por ejemplo, la
cantidad de lluvia (causa), da lugar a un aumento de la produccin agrcola
(efecto). O bien, el aumento del precio de un bien, da lugar a una disminucin
de la cantidad demandada del mismo.
Si utilizamos un sistema de coordenadas cartesianas para representar la
distribucin bidimensional, obtendremos un conjunto de puntos conocido con
el diagrama de dispersin, cuyo anlisis permite estudiar cualitativamente, la
relacin entre ambas variables. El siguiente paso, es la determinacin de la
dependencia funcional entre las dos variables x e y que mejor ajusta a la
distribucin bidimensional. Se denomina regresin lineal cuando la funcin es
lineal, es decir, requiere la determinacin de dos parmetros: la pendiente y la
ordenada en el origen de la recta de regresin, y=ax+b.
La regresin nos permite adems, determinar el grado de dependencia de las
series de valores X e Y, prediciendo el valor y estimado que se obtendra para
un valor x que no est en la distribucin.
Vamos a determinar la ecuacin de la recta que mejor ajusta a los datos
representados en la figura. Se denomina error ia la diferencia yi-y, entre el
valor observado yi, y el valor ajustado y= axi+b, tal como se ve en la figura
inferior. El criterio de ajuste se toma como aqul en el que la desviacin
cuadrtica media sea mnima, es decir, debe de ser mnima la suma
E=1n2i=1n(yi(axi+b))2E=1ni2=1n(yi(axi+b))2
b=1nyia1nxinEa=0Eb=0a=n1nxiyi(1nxi)(1nyi)n1nxi2
(1nxi)2b=1nyia1nxin
Ejemplo
Un vehculo que se mueve supuestamente con velocidad constante. Los datos
de las medidas del tiempo en cuatro posiciones separadas 900 m son las
siguientes
Tiempo t (
s)
Posicin x (
m)
17.6
40.4
900
67.7
1800
90.1
2700
y=cxa
Se puede trasformar en
log y=alog x+log c
Si usamos las nuevas variables X=log x e Y=log y, obtenemos la relacin
lineal
Y=aX+b.
Donde b=log c
Ejemplo:
x
10
20
30
40
50
60
70
80
1.30
1.47
1.69 1.77 1.84 1.90
1.60
7
9
8
5
3
[a b]=regresion(log10(x),log10(y));
fprintf('exponente a= %2.3f\n',a(1));
fprintf('coeficiente c= %3.3f\n',10^b(1));
%grfica
hold on
plot(x,y,'ro','markersize',8,'markerfacecolor','r')
z=(10^b(1))*x.^a(1);
plot(x,z,'b')
xlabel('x')
ylabel('y')
title('Regresin potencial')
hold off
Funcin exponencial
y=ceax
Tomando logaritmos neperianos en los dos miembros resulta
ln y=ax+ln c
Si ponemos ahora X=x, e Y=ln y, obtenemos la relacin lineal
Y=aX+b
Donde b=ln c.
Ejemplo:
x
12
41
93
147
204
264
373
509
773
930
815
632
487
370
265
147
76
17
12
41
93
147
204
264
Y=ln y
373
509
773
%grficos
hold on
plot(x,y,'ro','markersize',8,'markerfacecolor','r')
x=linspace(min(x),max(x),100);
y=exp(b(1))*exp(x*a(1));
plot(x,y,'b')
xlabel('x')
ylabel('y')
title('Regresin exponencial')
hold off
Polinomio aproximador
Supongamos que hemos medido un conjunto de pares de datos (xi, yi) en una
experiencia, por ejemplo, la posicin de un mvil en ciertos instantes de
tiempo.
Queremos obtener una funcin y=f(x) que se ajuste lo mejor posible a los
valores experimentales. Se pueden ensayar muchas funciones, rectas,
polinomios, funciones potenciales o logartmicas.
Una vez establecido la funcin a ajustar se determinan sus parmetros, en el
caso de un polinomio, sern los coeficientes del polinomio de modo que los
datos experimentales se desven lo menos posible de la frmula emprica. La
funcin ms sencilla es la funcin lineal y=ax+b, que hemos descrito en la
seccin anterior
Queremos aproximar un polinomio de grado n, a un conjunto de m pares de
datos (xi, yi) de modo que n<m. Sea el polinomio
P(x)=a1xn+a2xn-1+...anx+an+1
Se calcula la cantidad
S=j=1m(P(xi)yi)2=j=1m(a1xnj+a2xn1j+anxj+an+1yi)2S=j=1m(P(xi)
yi)2=j=1m(a1xjn+a2xjn1+anxj+an+1yi)2
+anxj+an+1yi)
xn1j....................................12San=j=1m(a1xnj+a2xn1j+anxj+an+1yi)
xj12San+1=j=1m(a1xnj+a2xn1j+anxj+an+1yi)12Sa1=j=1m(a1xjn+a2xjn
1+anxj+an+1yi)xjn12Sa2=j=1m(a1xjn+a2xjn1+anxj+an+1yi)
xjn1....................................12San=j=1m(a1xjn+a2xjn1+anxj+an+1yi)
xj12San+1=j=1m(a1xjn+a2xjn1+anxj+an+1yi)
Obtenemos un sistema de n+1 ecuaciones con n+1 incgnitas, a1, a2, a3, ...an,
an+1
(j=1mx2nj)a1+(j=1mx2n1j)a2+...+(j=1mxn+1j)an+
(j=1mxnj)an+1=j=1myjxnj(j=1mx2n1j)a1+(j=1mx2n2j)a2+...+
(j=1mxnj)an+(j=1mxn1j)an+1=j=1myjxn1j.........(j=1mxnj)a1+
(j=1mxn1j)a2+...+(j=1mxj)an+man+1=j=1myj(j=1mxj2n)a1+
(j=1mxj2n1)a2+...+(j=1mxjn+1)an+
(j=1mxjn)an+1=j=1myjxjn(j=1mxj2n1)a1+(j=1mxj2n2)a2+...+(j=1mxjn)an+
(j=1mxjn1)an+1=j=1myjxjn1.........(j=1mxjn)a1+(j=1mxjn1)a2+...+
(j=1mxj)an+man+1=j=1myj
k=1...2n+1tk=j=1myjxn+1kj
k=1...n+1{s1a1+s2a2+....snan+sn+1an+1=t1s2a1+s3a2+....sn+1an+sn+2an+1=t2.......s
n+1a1+sn+2a2+....s2nan+s2n+1an+1=tn+1sk=j=1mxj2n+1k
k=1...2n+1tk=j=1myjxjn+1kk=1...n+1
function p=pol_regresion(x,y,n)
s=zeros(2*n+1,1);
t=zeros(n+1,1);
A=zeros(n+1);
for k=1:2*n+1
s(k)=sum(x.^(2*n+1-k));
end
%vector de los trminos independientes
for k=1:n+1
t(k)=sum(y.*x.^(n+1-k));
end
%elementos de la matriz A de las incgnitas
for i=1:n+1
for j=1:n+1
A(i,j)=s(i+j-1);
end
end
%coeficientes del polinomio a1, a2... an, an+1
p=A\t;
end
t (s)
n/100
t(min)
100
242
4.03
200
487
8.12
300
854
14.23
400
1220
20.33
500
1626
27.1
600
2072
34.53
700
2558
42.63
2786
7.44
46.43
744
0.3446
3.7004
-0.1188
y=a1x2+a2x+a3y1y2...yn=x21x22...x2nx1x2...xn11...1
a1a2a3y=a1x2+a2x+a3(y1y2...yn)=(x12x11x22x21.........xn2xn1)(a1a2a3)
Tenemos n=9 pares de datos (xi,yi). Por lo que tenemos un sistema de nueve
ecuaciones con tres incgnitas, que podemos resolver con el operador \
(divisin por la izquierda)
x=[0,1,2,3,4,5,6,7,7.44]';
y=[0,4.03,8.12,14.23,20.33,27.1,34.53,42.63,46.43]';
M=[x.^2,x,ones(size(x))];
a=M\y %coeficientes del polinomio
hold on
plot(x,y,'ro','markersize',8,'markerfacecolor','r')
x=(0:0.1:max(x))';
y=[x.^2,x,ones(size(x))]*a; %evala el polinomio para cada valor de x
plot(x,y,'b')
xlabel('x')
ylabel('y')
title('Polinomio aproximador')
hold off
3.7004
-0.1188
Tambin se puede utilizar polyfit para realizar ajustes a una funcin potencial,
exponencial, logartmica, etc, tal como se muestra en el siguiente cuadro
Funcin
Llamada a polyfit
y=cxa
p=polyfit(log(x), log(y),1)
y=ceax
p=polyfit(x, log(y),1)
y=aln(x)+c p=polyfit(log(x),y,1)
y=1ax+cy=1ax
+c
p=polyfit(x,1./y,1)
coeficiente c = 1036.896
0.0
0.1
0.2
0.3
0.1
0.2
0.3
0.4
5
5
5
5
0.1729
p1 = -3.381
p2 = 4.0976
p3 = 0.046071
Norm of residuals =
0.045696
Pulsamos el botn con la flecha --> para ampliar otra vez el cuadro de dilogo,
podemos introducir un valor o una expresin para ser evaluada pulsando el
botn Evaluate en el tercer panel titulado Find y=f(x).