You are on page 1of 25

ETSI de Topografa, Geodesia y Cartografa

Laboratorio de Matemticas
(Pequeo manual de MatLab)
En lo que sigue, se supone que el usuario teclea lo que aparece en color azul. En color
negro aparecer la respuesta de MATLAB a la instruccin tecleada precedida del smbolo
>>. El signo % permite aadir comentarios y aparecern en verde.

La ventana de trabajo es la que tiene el ttulo de COMMAND WINDOW


Los clculos que se asignan a una variable en concreto devuelve ans (del ingls
answer) que significa respuesta.
Si se aade un punto y coma (;) al final de la instruccin, no muestra ninguna
respuesta.
Se pueden utilizar las funciones matemticas habituales.
Al pulsar flecha hacia arriba del cursor ^ aparecen las instrucciones anteriores.

% Funcin exponencial evaluada en 1, es decir, el nmero e


>> exp(1)
ans =
2.7183
% pi es una variable con valor predeterminado 3.14159...
>> pi
ans =
3.1416
Por defecto devuelve 4 decimales, aunque no afecta a la precisin de los clculos se
puede cambiar la presentacin en pantalla.
>> format long
>> pi
ans =
3.141592653589793
%Para volver al formato estndar
>> format
>> x=pi/3
x=
1.0472
>> y=sin(x)
y=
0.8660
Para conocer las variables que se han usado hasta el momento:
>> who
Your variables are:
ans x y

U. D. de Matemticas de la ETSITGC

ETSI de Topografa, Geodesia y Cartografa

Controles de flujo para programacin

Al proceso de toma de decisiones se le llama control del flujo

>>for
En cada iteracin asigna valores y ejecuta rdenes
>>if

Acta si todos los elementos de la expresin son verdaderos

>>while
Acta si todos los elementos de la expresin son verdaderos o ceros
>>break
Termina la ejecucin de rdenes: for, while
>>end
Fin del bucle
>>x==1
Es x = 1?
>>x~=2
Es x distinto de 2?

U. D. de Matemticas de la ETSITGC

ETSI de Topografa, Geodesia y Cartografa

Vectores y Matrices
Para definir un vector, basta introducir sus coordenadas entre corchetes:
>> v=[1 2 3]
v=
1 2 3
Para trasponer se usa (debajo de ?)
>> v'
ans =
1
2
3
Las matrices se escriben como los vectores, pero separando las filas mediante un
punto y coma.
>>M=[1 2 3;4 5 6;7 8 9]
M=
1 2 3
4 5 6
7 8 9
Matriz formada por la parte triangular inferior de M.
>> tril(M)
ans =
1 0 0
4 5 0
7 8 9
Matriz formada por la parte triangular superior de M.
>> triu(M)
ans =
1 2 3
0 5 6
0 0 9
Determinante de la matriz cuadrada.
>> det(M)
ans =
0
Matriz identidad.
>> eye(3)
ans =
1 0 0
0 1 0
0 0 1
Matriz inversa.
>> M=[1 0 1;1 -1 0;1 1 -2];
>> inv(M)
ans =

U. D. de Matemticas de la ETSITGC

ETSI de Topografa, Geodesia y Cartografa


0.5000 0.2500 0.2500
0.5000 -0.7500 0.2500
0.5000 -0.2500 -0.2500
Matriz diagonal cuya diagonal es el vector v.
>> diag(v)
ans =
1 0 0
0 2 0
0 0 3
Se puede escribir una matriz diagonal con los elementos de la diagonal de otra
matriz
>> diag(diag(M))

ans =
1 0
0 5
0 0

0
0
9

Matriz tridiagonal 5x5 con 0 en la diagonal principal y 1 en la sub y superdiagonal


>> diag(ones(1,4),1)+diag(ones(1,4),-1)
ans =
0 1 0 0 0
1 0 1 0 0
0 1 0 1 0
0 0 1 0 1
0 0 0 1 0
Matriz dispersa: matriz de un gran tamao con la mayor parte de sus elementos
cero. Se indica primeramente la columna y a continuacin la fila con los elementos
distintos de cero
>>B=sparse([1,1,2,2,2,3,3,3,4,4,4,5,5,5,6,6],[1,2,1,2,3,2,3,4,3,4,5,4,5,6,5,6],[4,1,1,4,1,1,4,
1,1,4,1,1,4,1,1,4])
B=
(1,1)
4
(2,1)
1
(1,2)
1
(2,2)
4
(3,2)
1
(2,3)
1
(3,3)
4
(4,3)
1
(3,4)
1
(4,4)
4
(5,4)
1
(4,5)
1
(5,5)
4
(6,5)
1
(5,6)
1
(6,6)
4
U. D. de Matemticas de la ETSITGC

ETSI de Topografa, Geodesia y Cartografa


% Para trabajar con la matriz completa, se usa full (llena)
>> A=full(B)
A=
4 1 0 0 0 0
1 4 1 0 0 0
0 1 4 1 0 0
0 0 1 4 1 0
0 0 0 1 4 1
0 0 0 0 1 4

Polinomios
Se escriben los coeficientes de un polinomio de mayor a menor grado.
>> p=[1 2 3 4]
p=
1 2 3 4
% Polinomio x3+2x2+3x+4
Se obtiene el valor del polinomio para un valor de x
>> polyval(p,-1)
ans =
2
% Evaluacin del polinomio x3+2x2+3x+4 en x=-1
Obtener las races del polinomio
>> roots(p)
ans =
-1.6506
-0.1747 + 1.5469i
-0.1747 - 1.5469i

U. D. de Matemticas de la ETSITGC

ETSI de Topografa, Geodesia y Cartografa

Grficas de funciones
Representacin grfica de una funcin en un rango determinado
>>fplot('x^2*sin(1/x)',[-0.05, 0.05])
% Dibuja la funcin x2sin(1/x) en el intervalo cerrado [-0.05, 0.05].
-3

2.5

x 10

2
1.5
1
0.5
0
-0.5
-1
-1.5
-2
-2.5
-0.05

-0.04

-0.03

-0.02

-0.01

0.01

0.02

0.03

0.04

0.05

Representacin grfica de una funcin sin determinar el domino


>>ezplot('x^2')
x2
40
35
30
25
20
15
10
5
0
-6

-4

-2

0
x

Representacin grfica de una curva en paramtricas


>>ezplot('t-sin(t)','1-cos(t)',[0 8*pi])
x = t-sin(t), y = 1-cos(t)
10
8
6
4

2
0
-2
-4
-6
-8
0

10

15

20

25

Representacin grfica de una funcin en implcitas


>> ezplot('x^2 - y^2 - 1')
U. D. de Matemticas de la ETSITGC

ETSI de Topografa, Geodesia y Cartografa


x 2 - y2 - 1 = 0
6

-2

-4

-6
-6

-4

-2

0
x

Dibujar superficies.
>>ezsurf(' x^2 - y^2 - 1',[-1 1 -1 1])
x2 - y2 - 1

-0.5

-1

-1.5

-2
1
0.5

1
0.5

-0.5
y

-0.5
-1

-1

Grficas.
>> x=linspace(-3,3,500);
>>y=exp(-x.^2);
>>plot(x,y)
>>plot(x,y,'*')

>> plot(x,y,'--')

Mantiene en la ventana grfica los dibujos anteriores.


>> hold on
Borrar las grficas anteriores.
>> hold off
Funcin definida a trozos
>> x=linspace(-2,3,3000);
>>y=(x.^2).*(x<0)+1.*((0<=x)&(x<1))+
(-x+2).*(1<=x);
>> plot(x,y,.).

U. D. de Matemticas de la ETSITGC

>> plot(x,y,'r')

x 2

f x 1
2 x

si x<0
si 0 x<1
si 1 x

ETSI de Topografa, Geodesia y Cartografa

SISTEMAS DE ECUACIONES LINEALES


Sistema compatible determinado por el mtodo de Gauss.
>> A=[1,18,-6;2,1,16;8,1,-2],b=[-10;-2;8],x=A\b
A=
1 18 -6
2 1 16
8 1 -2
b=
-10
-2
8
x=
1.0326
-0.6834
-0.2114
%Si A es una matriz n por n y b es un vector columna de dimensin n, o una
matriz con varias columnas, entonces X = A \ b es la solucin a la ecuacin A * X = b.
El nmero de condicin de una matriz A en la norma 2, k2(A)=||A||||A-1||, se calcula
tambin como el cociente entre el valor singular ms grande y el ms pequeo de A.
>> cond(A)
ans =
2.5217
Factorizacin LU
>> [L,U]=lu(A)
L=
0.1250 1.0000
0
0.2500 0.0420 1.0000
1.0000
0
0
U=
8.0000 1.0000 -2.0000
0 17.8750 -5.7500
0
0 16.7413
%Se cumple L*U=A
Si L no sale triangular superior hace falta permutar las ecuaciones
>> [L,U, P]=lu(A)
L=
0.1250 1.0000
0
0.2500 0.0420 1.0000
1.0000
0
0
U=
8.0000 1.0000 -2.0000
0 17.8750 -5.7500
0
0 16.7413P =
P=
0 0 1
U. D. de Matemticas de la ETSITGC

ETSI de Topografa, Geodesia y Cartografa


1 0 0
0 1 0
>> B=[8,1,-2;1,18,-6;2,1,16];b=[8;-10;-2];
>> [L,U,P]=lu(B)
L=
1.0000
0
0
0.1250 1.0000
0
0.2500 0.0420 1.0000
U=
8.0000 1.0000 -2.0000
0 17.8750 -5.7500
0
0 16.7413
P=
1 0 0
0 1 0
0 0 1

U. D. de Matemticas de la ETSITGC

ETSI de Topografa, Geodesia y Cartografa

ALGORITMO DE CROUT:

Para programar con MatLab hay que escribir un fichero con las instrucciones
necesarias. Para ello abrimos el editor con los siguientes pasos:
File>>>New>>>M-File, o bien, New Script
Ya podemos escribir las instrucciones:
function[x,l,u]=crout(a,b,c,z);
n=length(a);
l(1)=a(1);
y(1)=z(1)/l(1);
for i=2:n
u(i-1)=b(i-1)/l(i-1);
l(i)=a(i-1)-c(i-1)*u(i-1);
y(i)=(z(i)-c(i-1)*y(i-1))/l(i);
end
x(n)=y(n);
for i=n-1:-1:1
x(i)=y(i)-u(i)*x(i+1)
end
Una vez guardado el archivo con el nombre de la funcin, escribimos las condiciones para
la iteracin.
>>B=sparse([1,1,2,2,2,3,3,3,4,4,4,5,5,5,6,6],[1,2,1,2,3,2,3,4,3,4,5,4,5,6,5,6],[4,1,1,4,1,1,4,
1,1,4,1,1,4,1,1,4]); A=full(B)
A=
4 1 0 0 0 0
1 4 1 0 0 0
0 1 4 1 0 0
0 0 1 4 1 0
0 0 0 1 4 1
0 0 0 0 1 4
>> b=[96;174;30;396;12;90];x=A\b;
>> a=[4,4,4,4,4,4],b=[1,1,1,1,1],c=[1,1,1,1,1],z=[96;174;30;396;12;90], crout(a,b,c,z)
ans =
35.6125
46.4500
23.8124
111.6998
26.9866
15.7533

U. D. de Matemticas de la ETSITGC

10

ETSI de Topografa, Geodesia y Cartografa

MTODO DE JACOBI:

Para programar con MatLab hay que escribir un fichero con las instrucciones
necesarias. Para ello abrimos el editor con los siguientes pasos:
File>>>New>>>M-File, o bien, New Script
Ya podemos escribir las instrucciones:
function[x,incr,iter]=jacobi(A,b,x0,tol,maxiter)
%inicializacin
M = diag(diag(A));
N = M-A;
iter = 1;
incr = tol+1
%iteraciones
while incr > tol & iter < maxiter
x = M\(N*x0+b);
incr = norm(x-x0, inf);
x0 = x;
iter = iter+1;
end
if incr > tol
disp('No converge con las iteraciones dadas')
end
% fun(x): funcin a iterar
% x0: estimacin inicial para el proceso de iteracin
% tol: tolerancia en error absoluto para la raz
% incr: variacin entre las races con la norma infinita
% maxiter: mximo nmero de iteraciones permitidas

Una vez guardado el archivo con el nombre de la funcin, escribimos las condiciones para
la iteracin.
>>A=[8,1,-2;1,18,-6;2,1,16], b=[8;-10;-2];
>> x0=[0;0;0];
tol=0.01;
maxiter=4;
jacobi(A,b,x0,tol,maxiter)
incr =1.0100
No converge con las iteraciones dadas
ans =
1.0278
-0.6850
-0.2140

>> x0=[0;0;0];
tol=0.01;
maxiter=5;
jacobi(A,b,x0,tol,maxiter)
incr =1.0100
ans =
1.0321
-0.6840
-0.2107

U. D. de Matemticas de la ETSITGC

11

ETSI de Topografa, Geodesia y Cartografa

MTODO DE GAUSSSEIDEL:

Para programar con MatLab hay que escribir un fichero con las instrucciones
necesarias. Para ello abrimos el editor con los siguientes pasos:
File>>>New>>>M-File, o bien, New Script
Ya podemos escribir las instrucciones:
function[x,incr,iter]=gausseidel(A,b,x0,tol,maxiter)
%inicializacin
M = tril(A);
N = M-A;
iter = 1;
incr = tol+1
%iteraciones
while incr > tol & iter < maxiter
x = M\(N*x0+b);
incr = norm(x-x0, inf);
x0 = x;
iter = iter+1;
end
if incr > tol
disp('No converge con las iteraciones dadas')
end
% fun(x): funcin a iterar
% x0: estimacin inicial para el proceso de iteracin
% tol: tolerancia en error absoluto para la raz
% incr: variacin entre las races con la norma infinita
% maxiter: mximo numero de iteraciones permitidas

Una vez guardado el archivo con el nombre de la funcin, escribimos las condiciones para
la iteracin.
>>B=sparse([1,1,2,2,2,3,3,3,4,4,4,5,5,5,6,6],[1,2,1,2,3,2,3,4,3,4,5,4,5,6,5,6],[4,1,1,4,1,1,4,
1,1,4,1,1,4,1,1,4]); A=full(B)
A=
4
1
0
0
0
0

1
4
1
0
0
0

0
1
4
1
0
0

0
0
1
4
1
0

0
0
0
1
4
1

0
0
0
0
1
4

>> b=[96;174;30;396;12;90];x=A\b;
>> x0=[0;0;0;0;0;0], tol=0.01, maxiter=50,
gausseidel(A,b,x0,tol,maxiter)
incr =1.0100
ans =
35.6130
46.4504
23.8122
111.6997
26.9866
15.7534

U. D. de Matemticas de la ETSITGC

12

ETSI de Topografa, Geodesia y Cartografa

MTODO DE SOBRERRELAJACIN:

Para programar con MatLab hay que escribir un fichero con las instrucciones
necesarias. Para ello abrimos el editor con los siguientes pasos:
File>>>New>>>M-File, o bien, New Script
Ya podemos escribir las instrucciones:
function[x,incr,iter]=sobrerrelajacion(A,b,x0,omega,tol,maxiter)
% inicializacin
D = diag(diag(A));
L = tril(A,-1);
M = L + D/omega;
N = M-A;
iter = 1;
incr = tol+1
% iteraciones
while incr > tol & iter < maxiter
x = M\(N*x0+b);
incr = norm(x-x0, inf);
x0 = x;
iter = iter+1;
end
if incr > tol
disp('No converge con las iteraciones dadas')
end
% fun(x): funcin a iterar
% x0: estimacin inicial para el proceso de iteracin
% omega: nmero elegido para ponderacin
% tol: tolerancia en error absoluto para la raz
% incr: variacin entre las races con la norma infinita
% maxiter: mximo nmero de iteraciones permitidas

Una vez guardado el archivo con el nombre de la funcin, escribimos las condiciones para
la iteracin.
>>B=sparse([1,1,2,2,2,3,3,3,4,4,4,5,5,5,6,6],[1,2,1,2,3,2,3,4,3,4,5,4,5,6,5,6],[4,1,1,4,1,1,4,
1,1,4,1,1,4,1,1,4]); A=full(B)
A=
4
1
0
0
0
0

1
4
1
0
0
0

0
1
4
1
0
0

0
0
1
4
1
0

0
0
0
1
4
1

0
0
0
0
1
4

>> b=[96;174;30;396;12;90];x=A\b; x0=[0;0;0;0;0;0], omega=1.2, tol=0.01,


maxiter=50, sobrerrelajacion(A,b,x0,omega, tol,maxiter)
incr =1.0100
ans = 35.6124
46.4497
23.8126
111.6998
26.9866
15.7533

U. D. de Matemticas de la ETSITGC

13

ETSI de Topografa, Geodesia y Cartografa

POLINOMIOS DE INTERPOLACIN
Polinomios oscilantes: Polinomio de Lagrange

Polinomio de interpolacin de grado n


>>polyfit(x,y,n)
Corresponde al polinomio p ( x) p1 x n p2 x n 1 .... pn x pn 1
Ejemplo:

xi

yi

25

34

72

115

92

71

65

>> x=[0:7]; y=[0 25 34 72 115 92 71 65]; polyfit(x,y,7)


ans =
-0.1079 2.4944 -22.1222 93.9861 -195.3722 181.5194 -35.3976 -0.0000
En este caso
p ( x) 0.1079 x 7 2.4944 x 6 22.1222 x5 93.9861x 4 195.3722x 3 +181.5194 x 2 35.3976x
Evaluar en un punto particular x0
>> polyval(ans,x0)
>> polyval(ans,2.5)
ans =
47.3867
Para representar los puntos y el polinomio
>> p=polyfit(x,y,7);
>> hold on
% Mantiene los ejes igual y se aade la grfica
>> xx=0:0:7;
yy=polyval(p,xx);
plot(x,y,'*',xx,yy)
% Dibujo:
120

100

80

60

40

20

-20

U. D. de Matemticas de la ETSITGC

14

ETSI de Topografa, Geodesia y Cartografa

Polinomios oscilantes: Polinomio de Hermite

Polinomio de interpolacin de grado n


Para programar con MatLab hay que escribir un fichero con las instrucciones
necesarias. Para ello abrimos el editor con los siguientes pasos:
File>>>New>>>M-File, o bien, New Script
Ya podemos escribir las instrucciones:
function hp = hermite (x, y, yp)
n = length (x);
z = zeros (1, 2*n);
f = zeros (1, 2*n);
z(1:2:2*n-1) = x;
z(2:2:2*n) = x;
f(1) = y(1);
f(3:2:2*n-1) = (y(2:n) - y(1:n-1) ) ./ ( x(2:n) - x(1:n-1));
f(2:2:2*n) = yp;
for i = 3:2*n
f(i:2*n) = (f(i:2*n) - f(i-1:2*n-1) ) ./ ( z(i:2*n) - z(1:2*n-i+1));
end;
hp = zeros (1, 2*n);
p = [1];
for i = 1:2*n
hp = hp + f(i) * [zeros(1,2*n-i) p];
p = conv (p, [1 -z(i)]);
end;
% x: abscisas de los puntos a interpolar
% y: ordenadas de los puntos a interpolar
% yp: derivadas de los puntos a interpolar
% hp: coeficientes del polinomio de Hermite
% conv: convolucin de dos vectores. Algebraicamente, la convolucin es la misma
operacin que la multiplicacin de los polinomios cuyos coeficientes son los elementos
de los dos vectores.
w=con(u,v)
w(1) = u(1)*v(1)
w(2) = u(1)*v(2)+u(2)*v(1)
w(3) = u(1)*v(3)+u(2)*v(2)+u(3)*v(1)
...
w(n) = u(1)*v(n)+u(2)*v(n-1)+ ... +u(n)*v(1)
Si m es la longitud de u y n la longitud de v, entonces m+n-1 es la longitud de w.
Una vez guardado el archivo con el nombre de la funcin, escribimos los datos:
Ejemplo:
x

f (x)

-17

f (x)

-15

U. D. de Matemticas de la ETSITGC

15

ETSI de Topografa, Geodesia y Cartografa


>> x=[0 1 3]; y=[1 5 -17]; yp=[3 5 -15];
hp=hermite(x,y,yp)
hp =
1 -6 9 -3 3 1
En este caso p( x) x 5 6 x 4 9x 3 3x 2 +3 x 1
Para representar los puntos y el polinomio
>> xx=[0:0.1:3];
yy=polyval(hp,xx);
plot(x,y,'*',xx,yy')

10

-5

-10

-15

-20

0.5

U. D. de Matemticas de la ETSITGC

1.5

2.5

16

ETSI de Topografa, Geodesia y Cartografa

INTERPOLACIN POLINMICA SEGMENTARIA:


SPLINES CBICOS

Spline no nodo
>> spline (x, y)
% Genera un registro llamado polinomio segmentario que, entre otros campos,
consta de uno que contiene los coeficientes de todos los polinomios del spline en
una matriz de dimensiones n x 4, ps.coefs
Ejemplo:
0
1
2
3
4
5
6
7
xi
0
25 34 72 115 92 71 65
yi
>> x=[0:7]; y=[0 25 34 72 115 92 71 65]; pp=spline (x, y)
ans =
form: 'pp'
breaks: [0 1 2 3 4 5 6 7]
coefs: [7x4 double]
pieces: 7
order: 4
dim: 1
% La evaluacin del spline en puntos concretos se efecta con ppval, que es el
anlogo de polyval para polinomios
>>ppval (spline (x, y), xi).
>> ppval(spline(x,y),2.5)
ans =
48.8484
% Si slo interesan los valores que tome el spline en ciertos puntos xi, se utiliza
la misma funcin en la forma: yi = spline (x, y, xi).
>> spline(x,y,2.5)
ans =
48.8484
% La matriz que contiene los coeficientes del spline.
>> pp.coefs
ans =
9.5319 -36.5957 52.0638
0
9.5319 -8.0000 7.4681 25.0000
-2.6595 20.5957 20.0638 34.0000
-22.8939 12.6172 53.2767 72.0000
23.2352 -56.0646 9.8293 115.0000
-2.0470 13.6411 -32.5941 92.0000
-2.0470 7.5000 -11.4530 71.0000
% Dibujo:
>> xx=0:0.2:7;
zz=spline(x,y,xx);
plot(x,y,'*',xx,zz)

U. D. de Matemticas de la ETSITGC

17

ETSI de Topografa, Geodesia y Cartografa


120

100

80

60

40

20

Spline completo:
Se calcula con la misma funcin que se utiliza para el spline no nodo, aadiendo al vector
y dos valores, uno al principio y otro al final, que son los valores de la derivada primera
del spline en los puntos inicial y final, a=S(x0) y b=S(xn), respectivamente. Sintaxis:
spline (x, [a y b]).

Ejemplo:
Se consideran los valores de la funcin y = arc tg x en los nodos x = -3, -2, , 2, 3.
Interpolar estos puntos mediante un spline cbico cuya derivada primera en los extremos
coincida con la derivada primera de la funcin.
1
y' ( x )
y' ( 3) 0.1, y' (3) 0.1
1 x2
x1
x2
x3
x4
x5
x6
x0
-3
-2
-1
0
1
2
3
>> x=-3:3;
>> y=atan(x);
>> ps=spline(x,[0.1 y 0.1]);
Los coeficientes de cada pieza del spline estn dados en la siguiente matriz:
>> ps.coefs
ans =
-0.0011 0.0430 0.1000 -1.2490
0.0994 0.0397 0.1827 -1.1071
-0.1126 0.3378 0.5602 -0.7854
-0.1126 -0.0000 0.8980
0
0.0994 -0.3378 0.5602 0.7854
-0.0011 -0.0397 0.1827 1.1071

U. D. de Matemticas de la ETSITGC

18

ETSI de Topografa, Geodesia y Cartografa


Dibujamos la funcin (trazo continuo rojo) y el polinomio segmentario (trazo discontinuo
verde):
1.5

>> xx=-3:0.1:3;

0.5

>> yy=ppval(ps,xx);
0

>> plot(x,y,'*',xx,atan(xx))
>> hold on
>> plot(x,y,'*',xx,yy,'--')

-0.5

-1

-1.5
-3

-2

-1

Spline cbico natural o con frontera libre:


x=input('Ingrese Los valores de x [x0 ...xf] : ');
y=input('Ingrese Los valores de y [y0 ...yf] : ');
if length(y)~=length(x)
disp ('x e y no son de la misma longitud');
end
n = length(x)-1;
h = x(2:n+1)-x(1:n);
a=y;
for i=1:n l(i)=(a(i+1)-a(i))/h(i);
end
l(n+1)=0;
% revisar si es necesario
for i=2:n
m(i)=3*(l(i)-l(i-1));
end
% introducir condiciones de frontera
m(1)=0;
%condicin inicio de frontera
m(n+1)=0;
%condicin fin de frontera
% Armando matriz A
A(1,1) = 1;
for i=2:n
A(i,i-1:i+1) = [h(i-1) 2*(h(i-1)+h(i)) h(i)];
end
A(n+1,n+1) = 1;
c=(A\m')';
for i=1:n b(i)=l(i)-h(i)*(2*c(i)+c(i+1))/3;
end

U. D. de Matemticas de la ETSITGC

19

ETSI de Topografa, Geodesia y Cartografa


for i=1: n
d(i)=(c(i+1)-c(i))/(3*h(i));
end
X=sym('X');
for i=1:n
s(i)=a(i)+b(i)*(X-x(i))+c(i)*(X-x(i))^2+d(i)*(X-x(i))^3;
end
% grfica
figure(1)
grid on
plot(x,y,'o','MarkerSize',10,'MarkerEdgeColor','b','MarkerFaceColor','b')
for i=1:n
figure(2)
grid on
xx=x(i):1/100:x(i+1);
ezplot(s(i),xx)
hold on
end
axis([min(x) max(x) min(y) max(y)])
% diff(int(s(1)))
% Mostrar datos
x,y,A,h,l,m,a,b,c,d
% Para mostrar las ecuaciones interpoladoras
for i=1:n
disp('-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-__-_-_-_-_-_-')
disp('entre xi y xf:'),
x(i),x(i+1)
pretty((expand((vpa(s(i),5)))))
% decimales significativos
end
Ejemplo:
>> x=[2 2.7 3.8 6 8 10 13 16 18 21 25 30 36];
y=[5 7.8 9 10 10.2 10.3 10.4 14.5 15 15.4 15.5 14 5];
x=
2.0000 2.7000 3.8000 6.0000 8.0000 10.0000 13.0000 16.0000
18.0000 21.0000 25.0000 30.0000 36.0000
y=
5.0000 7.8000 9.0000 10.0000 10.2000 10.3000 10.4000 14.5000
15.0000 15.4000 15.5000 14.0000 5.0000
A=
1.0000
0
0
0
0
0
0
0
0
0
0
0
0.7000 3.6000 1.1000
0
0
0
0
0
0
0
0
0
0 1.1000 6.6000 2.2000 0
0
0
0
0
0
0
0
0
0 2.2000 8.4000 2.0000
0
0
0
0
0
0
0
0
0
0 2.0000 8.0000 2.0000
0
0
0
0
0
0
0
0
0
0 2.0000 10.0000 3.0000
0
0
0
0
0
0
0
0
0
0 3.0000 12.0000 3.0000
0
0
0
0
U. D. de Matemticas de la ETSITGC

0
0
0
0
0
0
0
20

ETSI de Topografa, Geodesia y Cartografa


0
0
0
0
0
0 3.0000 10.0000 2.0000
0
0
0
0
0
0
0
0
0
0
0 2.0000 10.0000 3.0000
0
0
0
0
0
0
0
0
0
0
0 3.0000 14.0000 4.0000
0
0
0
0
0
0
0
0
0
0
0 4.0000 18.0000 5.0000
0
0
0
0
0
0
0
0
0
0
0 5.0000 22.0000 6.0000
0
0
0
0
0
0
0
0
0
0
0
0
1.0000
h=
0.7000 1.1000 2.2000 2.0000 2.0000 3.0000 3.0000 2.0000
3.0000 4.0000 5.0000 6.0000
l=
4.0000 1.0909 0.4545 0.1000 0.0500 0.0333 1.3667 0.2500
0.1333 0.0250 -0.3000 -1.5000
0
m=
0 -8.7273 -1.9091 -1.0636 -0.1500 -0.0500 4.0000 -3.3500
-0.3500 -0.3250 -0.9750 -3.6000
0
a=
5.0000 7.8000 9.0000 10.0000 10.2000 10.3000 10.4000
14.5000 15.0000 15.4000 15.5000 14.0000 5.0000
b=
4.5791 2.8418 0.3193 0.3096 0.0672 -0.1282 0.8655 0.8662
0.0190 0.1309 -0.0277 -0.8453
c=
0 -2.4819 0.1888 -0.1932 0.0720 -0.1697 0.5009 -0.5007
0.0771 -0.0398 0.0001 -0.1637
0
d=
-1.1819 0.8093 -0.0579 0.0442 -0.0403 0.0745 -0.1113 0.0963
-0.0130 0.0033 -0.0109 0.0091
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-__-_-_-_-_-_entre xi y xf:
ans =
2
ans =
2.7000
5.2970 - 9.6037 X - 1.1819 X3 + 7.0914 X2
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-__-_-_-_-_-_entre xi y xf:
ans =
2.7000
ans =
3.8000
-33.895469730000000 + 33.94366970000 X2 - 9.0373110 X3 + 0.80931 X
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-__-_-_-_-_-_entre xi y xf:
ans =
3.8000
ans =
6
U. D. de Matemticas de la ETSITGC

21

ETSI de Topografa, Geodesia y Cartografa


13.688863360000000000 - 3.62292160000000 X2 + 0.8486320000 X3 0.057880 X
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-__-_-_-_-_-_entre xi y xf:
ans =
6
ans =
8
-8.359696 + 7.401318 X - 0.988738 X2 + 0.044196 X3
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-__-_-_-_-_-_entre xi y xf:
ans =
8
ans =
10
34.888592 - 8.816765 X + 1.038521 X2 - 0.040273 X3
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-__-_-_-_-_-_entre xi y xf:
ans =
10
ans =
13
-79.896000 + 25.618450 X - 2.405000 X2 + 0.074511 X3
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-__-_-_-_-_-_entre xi y xf:
ans =
13
ans =
16
328.30798 - 68.58244 X + 4.84123 X2 - 0.11129 X3
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-__-_-_-_-_-_entre xi y xf:
ans =
16
ans =
18
-521.952108 + 90.841314 X - 5.122754 X2 + 0.096293 X3
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-__-_-_-_-_-_entre xi y xf:
ans =
18
ans =
21
115.340056 - 15.373988 X + 0.778096 X2 - 0.012982 X3
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-__-_-_-_-_-_entre xi y xf:
ans =
U. D. de Matemticas de la ETSITGC

22

ETSI de Topografa, Geodesia y Cartografa


21
ans =
25
-35.6780720 + 6.2000590 X - 0.2492420 X2 + 0.0033250 X3
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-__-_-_-_-_-_entre xi y xf:
ans =
25
ans =
30
186.90038750 - 20.50933800 X + 0.81913342 X2 - 0.010920 X3
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-__-_-_-_-_-_entre xi y xf:
ans =
30
ans =
36
-353.4432000 + 33.5248900 X - 0.9820040 X2 + 0.0090926 X3
16

14

12

10

10

15

20

25

30

35

40

88630835302628377/2251799813685248-...+5241523402050519/576460752303423488 (X-30)3
15
14
13
12
11
10
9
8
7
6
5

10

15

20

25

30

35

U. D. de Matemticas de la ETSITGC

23

ETSI de Topografa, Geodesia y Cartografa

Polinomio de Newton
clear;clc;
disp('mtodos numricos');
disp('interpolacin');
n=input('ingrese el grado del polinomio, n=');
fprintf('Se necesitan %.0f puntos\n',n+1);
disp('ingrese los puntos');
for i=1:n+1
fprintf('x%.0f=',i-1);
X(i)=input(' ');
fprintf('y%.0f=',i-1);
Y(i)=input(' ');
end
DD=zeros(n+1);
DD(:,1)=Y;
for k=2:n+1
for J=k:n+1
DD(J,k)=[DD(J,k-1)-DD(J-1,k-1)]/[X(J)-X(J-k+1)];
end
end
disp('La matriz de diferencias divididas es:');
disp(DD);
disp('El polinomio de Newton es');
syms x;
polnew=DD(1,1);
P=1;
for i=1:n
P=P*(x-X(i));
polnew=polnew+P*DD(i+1,i+1);
end
polnew=expand(polnew);
pretty(polnew);
x=input('ingrese el valor de x a interpolar,x=');
vi=eval(polnew);
fprintf('el valor interpolado es %.2f\n',vi);
hold on;
ezplot(polnew,[X(1) X(n+1)]);
plot(x,vi,'r+');
Ejemplo:

xi

yi

25

34

72

115

92

71

65

mtodos numricos
interpolacin
ingrese el grado del polinomio, n=7

U. D. de Matemticas de la ETSITGC

24

ETSI de Topografa, Geodesia y Cartografa


Se necesitan 8 puntos
ingrese los puntos
x0= 0
y0= 0
x1= 1
y1= 25
x2= 2
y2= 34
x3= 3
y3= 72
x4= 4
y4= 115
x5= 5
y5= 92
x6= 6
y6= 71
x7= 7
y7= 65
La matriz de diferencias divididas es:
0
0
0
0
0
0
0
25.0000 25.0000
0
0
0
0
0
34.0000 9.0000 -8.0000
0
0
0
0
72.0000 38.0000 14.5000 7.5000
0
0
0
115.0000 43.0000 2.5000 -4.0000 -2.8750
0
0
92.0000 -23.0000 -33.0000 -11.8333 -1.9583 0.1833
0
71.0000 -21.0000 1.0000 11.3333 5.7917 1.5500 0.2278
65.0000 - 6.0000 7.5000 2.1667 -2.2917 -1.6167 -0.5278
El polinomio de Newton es
14867
35167
65347
6767
1991
449
3
2
4
5
- -------- x - -------- x + -------- x + ------ x - ------ x + ----- x6
420
180
360
72
90
180
ingrese el valor de x a interpolar, x=2.5
el valor interpolado es 47.39

0
0
0
0
0
0
0
-0.1079
34
- ---- x7
315

-14867/420 x-35167/180 x 3+65347/360 x 2+...-34/315 x 7


120

100

80

60

40

20

0
0

U. D. de Matemticas de la ETSITGC

25

You might also like