Académique Documents
Professionnel Documents
Culture Documents
PRACTICA 3
SESIONES LABORATORIO: 4
Interpolacin numrica y
minimizacin de funciones
A. PROGRAMACION
Interpolacin de Lagrange:
function [C, L] = lagran (X, Y)
% Entrada - X es un vector que contiene una lista de las abscisas
%
- Y es un vector que contiene una lista de las ordenadas
% Salida
- C es un vector que contiene los coeficientes del
%
polinomio interpolante de Lagrange
%
- L es una matriz que contiene los coeficientes de los
%
polinomios de Lagrange
w = length(X);
n = w - 1;
L = zeros(w, w);
% Formar los polinomios coeficientes de Lagrange
for k = 1:n+1
V = 1;
for j = 1:n+1
if k ~= j
V = conv(V, poly(X(j))) / (X(k) - X(j));
end
end
L(k, :) = V;
end
% Determinar los coeficientes del polinomio interpolador de Lagrange
C = Y * L;
D = zeros(n, n);
D(:, 1) = Y';
% formar la tabla de diferencias divididas
for j = 2:n
for k = j:n
D(k, j) = (D(k, j-1) - D(k-1, j-1)) / (X(k) - X(k-j+1));
end
end
% Determinar los coeficientes del polinomio interpolante de Newton
C = D(n, n);
for k = (n-1):-1:1
C = conv(C, poly(X(k)));
m = length(C);
C(m) = C(m) + D(k, k);
end
(h > delta)
yc = yd;
h = b - a;
d = a + r1 * h;
yd = feval(f, d);
end
A(k) = a; B(k) = b; C(k) = c; D(k) = d;
end
dp = abs(b - a);
dy = abs(yb - ya);
p = a;
yp = ya;
if
< max1)
V(lo, 1:n)) / 2;
<= Y(li))
>= Y(ho))
end
cnt = cnt + 1;
P(cnt, :) = V(lo, :);
Q(cnt) = Y(lo);
end
% Final del algoritmo de Nelder-Mead
% Determinar el tamao de simplex
snorm = 0;
for j = 1:n+1
s = norm(V(j) - V(lo));
if (s >= snorm)
snorm = s;
end
end
Q = Q';
V0 = V(lo, 1:n);
y0 = Y(lo);
dV = snorm;
dy = abs(Y(hi) - Y(lo));
if
(show == 1)
disp(P);
disp(Q);
end
INTERPOLACIN UNIDIMENSIONAL
yi = interp1(x, y, xi, mtodo)
Dado un conjunto de puntos, cuya abcisa y ordenada, respectivamente, viene dada
por los vectores x, y, devuelve yi , vector de valores interpolados correspondientes al
vector de abcisas xi . mtodo es una cadena opcional para indicar el mtodo de
interpolacin, siendo las opciones ms habituales:
'nearest': Funcin constante a trozos (Vecino ms cercano)
'linear': Interpolacin lineal a trozos (mtodo por defecto)
'cubic': Interpolacin cbia a trozos
'spline': Interpolador con splines cbicas
yi = spline (x, y, xi)
5
INTERPOLACIN BIDIMENSIONAL
zi = interp2(X, Y, Z, xi, yi, mtodo)
Interpola los valores de zi para posiciones dadas por los vectores (xi,yi). La funcin
se Z(X,Y) se aproxima considerando valores en las posiciones dadas por las matrices
X,Y (X e Y generalmente se generan habitualmente con meshgrid). El tipo de
funcin polinmica se selecciona con la cadena mtodo: 'nearest','linear', 'cubic' o
'spline'
MINIMIZACIN DE FUNCIONES
f=inline(expr, arg1, arg2, ...)
Declara una funcin f de varias variables dadas por los argumentos arg1, arg2, ...
Ejemplos:
f=inline('(1+x)^2/(1+x^2)','x') % funcin de una variable, x es un escalar
f=inline('(x(1)-3)^2+x(2)^2','x'); % funcin de 2 variables, x es un vector
f=fminsearch(f, x0,opciones)
Devuelve un mnimo local de la funcin 'f' utilizando el algoritmo SIMPLEX,
siendo x0 un valor inicial de bsqueda. Las opciones son similares a las del mtodo
minbnd.
C. EJERCICIOS
1. Interpolacin polinmica. De un muelle con un extremo fijo colgamos distintas
masas y obtenemos la tabla siguiente
10
67
M (kg)
L (m)
20
122
30
195
Utilizar la interpolacin cuadrtica para estimar la longitud del muelle para masas de 12,
16, 19 y 25 kg, indicar el polinomio de interpolacin y representar grficamente el
resultado.
Ayuda: El polinomio de segundo grado p2 ( x ) a1 x 2 a 2 x a 3 que pasa por (x1,y1), (x2,y2) y
(x3,y3) se determina resolviendo el sistema:
a1 x12 a 2 x1 a3 y1
a1 x 22 a 2 x 2 a 3 y 2
a1 x32 a 2 x3 a3 y 3
Sugerencia: utilizar la funcin vander(). Por ejemplo, dado el vector x(x1, x3, x3) se tiene:
x12
vander ( x ) x 22
x2
3
x1 1
x 2 1
x 3 1
2
0.7
3
0.5
4
0.2
5
0.1
f ( x, y ) 20( y x 2 ) 2 ( x 0.75) 2 2e 5( x y )
con una precisin de 7 cifras decimales. Utilizar tanto la funcin "nelder" como la
funcin MATLAB "fminsearch" y comparar los resultados. Considerar la posible
dependencia con los parmetros utilizados (valores iniciales de la bsqueda y nmero de
iteraciones).