tema 14: métodos numéricos usando matlab

34
Resolución de sistemas lineales (\), ceros de una función de una variable (fzero), integración (quad), resolución de ecuaciones diferenciales ordinarias (ode45, ode23s), resolución de sistemas no lineales (fsolve), Tema 14: Métodos numéricos usando MATLAB. Prof. Saúl. Buitrago y Oswaldo Jiménez interpolación polinómica (interp1).

Upload: others

Post on 16-Oct-2021

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Tema 14: Métodos numéricos usando MATLAB

Resolución de sistemas lineales (\), ceros de una función de una variable

(fzero), integración (quad), resolución de ecuaciones diferenciales

ordinarias (ode45, ode23s), resolución de sistemas no lineales (fsolve),

Tema 14: Métodos numéricos usando MATLAB.

Prof. Saúl. Buitrago y Oswaldo Jiménez

ordinarias (ode45, ode23s), resolución de sistemas no lineales (fsolve),

interpolación polinómica (interp1).

Page 2: Tema 14: Métodos numéricos usando MATLAB

14. Métodos numéricos usando MATLAB

Los métodos numéricos son en muchos casos la única alternativa posible

para la resolución de frecuentes problemas no lineales muchas veces

intratables analíticamente.

El hecho de que puede accederse a computadoras altamente eficientes a un

costo cada más bajo, permite el uso de métodos numéricos para la resolución

Prof. Saúl. Buitrago y Oswaldo Jiménez

costo cada más bajo, permite el uso de métodos numéricos para la resolución

de problemas altamente complejos.

Page 3: Tema 14: Métodos numéricos usando MATLAB

Determinación de los ceros de una función de una variable

MATLAB dispone de la función “fzero” para intentar determinar un cero de una función “fun” de una variable cerca de un punto “x0” dado.

x = fzero(fun, x0)

>> fzero('cos(x)-x', 0) → retorna ans = 0.7391

Dado que “fzero” busca puntos donde la función cambia de signo, este no funciona para ceros de multiplicidad par. Cuando “fzero” falla,

14. Métodos numéricos usando MATLAB

>> ezplot('cos(x)-x', [0,1])

Prof. Saúl. Buitrago y Oswaldo Jiménez

este no funciona para ceros de multiplicidad par. Cuando “fzero” falla, esta retorna un NaN.

>> fzero('x^2 + 4*x + 4', 0) → retorna ans = NaN

>> fzero('cos(x)-x', [ 0, 1 ]) → retorna ans = 0.7391

Si “x0” es un vector de 2 elementos, tal que fun(x0(1)) y fun(x0(2)) tienen signos opuestos, “fzero” trabaja en el intervalo definido por x0.

>> ezplot('x^2 + 4*x + 4', [-2,2])

Page 4: Tema 14: Métodos numéricos usando MATLAB

Determinación de los ceros de una función de una variable

>> [x, fval] = fzero('x-tan(x)',1)

→ retorna

x = 1.5708

“fzero” adicionalmente puede retornar el valor de la función en la raíz x calculada: [ x, fval ] = fzero(fun, x0).

Esto permite determinar casos atípicos.

14. Métodos numéricos usando MATLAB

Prof. Saúl. Buitrago y Oswaldo Jiménez

x = 1.5708

fval = 1.2093e+015

>> [x, fval] = fzero('x-tan(x)', [-1 1])

→ retorna

x = 0 fval = 0

>> ezplot('x-tan(x)', [-pi,pi]) π/2

Page 5: Tema 14: Métodos numéricos usando MATLAB

Graficación de la familia de curvas cos(a+x) - (a+x) para diferentes valores de ay cálculo de los ceros de cada curva:

>> a=0; ezplot(@(x) myfun(x,a),[0,1]);

function f = myfun(x,a)f = cos(a+x) - (a+x);

end

Definimos la función de 2 parámetros myfunc

Determinación de los ceros de una función de una variable

Ejemplo:

14. Métodos numéricos usando MATLAB

Prof. Saúl. Buitrago y Oswaldo Jiménez

>> a=0; ezplot(@(x) myfun(x,a),[0,1]);>> hold on>> x = fzero(@(x) myfun(x,a),1);

>> a=0.1; ezplot(@(x) myfun(x,a),[0,1]);>> x = fzero(@(x) myfun(x,a),1);

>> a=0.2; ezplot(@(x) myfun(x,a),[0,1]);x = fzero(@(x) myfun(x,a),1)

>> grid on>> legend('\it a=0','a=0.1','a=0.2',3);

Page 6: Tema 14: Métodos numéricos usando MATLAB

Determinación de los ceros de una función de una variable

Ejemplo:

>> ezplot(@humps,[-1,2])>> axis([-1,2,-20,100])>> grid

El gráfico de la función “humps” indica que la función es negativa en x = -1 y positiva en x = 1.Por lo tanto se usa [-1 1] como el

h = inline('1./((x-0.3).^2+0.01) + 1./((x-0.9).^2+0.04)')

14. Métodos numéricos usando MATLAB

Prof. Saúl. Buitrago y Oswaldo Jiménez

Por lo tanto se usa [-1 1] como el intervalo inicial para “fzero”.

El algoritmo iterativo que tiene fzero determina subintervalos más pequeños de [-1 1]. Para cada intervalo, el signo de “humps” cambia en los extremos. A medida que los extremos de los intervalos se acercan, ellos convergen a el cero de “humps”. Para mostrar el progreso en cada iteración, se activa la opción “iter” usando la función “optimset”.

>> options = optimset('Display','iter');seguidamente se invoca “fzero” así:>> a = fzero(@humps,[-1 1],options)

Page 7: Tema 14: Métodos numéricos usando MATLAB

Determinación de los ceros de una función de una variable

Ejemplo (cont.):

14. Métodos numéricos usando MATLAB

Prof. Saúl. Buitrago y Oswaldo Jiménez

Page 8: Tema 14: Métodos numéricos usando MATLAB

Determinación de los ceros de una función de una variable

Ejemplo (cont.):Supongamos que no se conoce 2 puntos a los cuales la función “humps” cambia de signo. En este caso, se escoge un punto x0 como punto inicial para “fzero”. fzero primero busca un intervalo alrededor de x0 en el cual la función cambia de signo. Si “fzero” encuentra el intervalo, la función procede con el algoritmo para la búsqueda de la solución. Si no es posible determinar este intervalo, “fzero” retorna NaN.

>> a = fzero(@humps,-0.2,options)

14. Métodos numéricos usando MATLAB

Prof. Saúl. Buitrago y Oswaldo Jiménez

>> a = fzero(@humps,-0.2,options)fzero retorna

a =-0.1316

Los puntos terminales del intervalo en cada iteración se listan bajo el encabezado a y b, mientras los valores correspondientes a “humps” en los puntos terminales se listan bajo f(a) y f(b), respectivamente.

Page 9: Tema 14: Métodos numéricos usando MATLAB

Determinación de los ceros de una función de una variable

Ejemplo (cont.):

14. Métodos numéricos usando MATLAB

Prof. Saúl. Buitrago y Oswaldo Jiménez

Page 10: Tema 14: Métodos numéricos usando MATLAB

[x,fval] = fminbnd(fun,x1,x2)Trata de encontrar el mínimo local x de la función fun en el intervalo [x1,x2]. El valor mínimo alcanzado retorna en fval.

[x,fval] = fminsearch('fun',x0)Minimización no lineal multidimensional sin restricciones basado en el método de Nelder-Mead, de la función fun con punto inicial x0. Retorna el punto mínimo x y su valor mínimo fval.

z = trapz(y)

Calcula una aproximación de la integral de y vía el método de trapecios (usa espaciamiento uniforme de 1). Para calcular la integral para un espaciamiento uniforme diferente de 1, multiplicamos z por el espaciamiento.

Otras funciones en Matlab

14. Métodos numéricos usando MATLAB

Prof. Saúl. Buitrago y Oswaldo Jiménez

q = quad(fun,a,b)Trata de aproximar la integral de la función fun entre a y b con un error de 10-6 usando el método recursivo adaptativo de cuadratura de Simpson.

[t,y] = ode23(odefun,[t0 tfinal],y0)

Integra numéricamente el sistema de ecuaciones diferenciales y’=f(t,y) desde t0 hasta tfinal con la condición inicial y0. odefun(t,y) corresponde a la función f(t,y). Está basado en el método de Runge-Kutta de orden 2 y 3.

[t,y] = ode45(odefun,[t0 tfinal],y0)

Integra numéricamente el sistema de ecuaciones diferenciales y’=f(t,y) desde t0 hasta tfinal con la condición inicial y0. odefun(t,y) corresponde a la función f(t,y). Está basado en el método de Runge-Kutta de orden 4 y 5.

Page 11: Tema 14: Métodos numéricos usando MATLAB

[x,fval] = fsolve(F,x0,…)Intenta resolver un sistema de la forma F(x)=0, donde x es un vector, comenzando en el vector x0. Retorna en x el vector solución y en fval los valores de F en x.

pcg(A,b,tol,maxit)

Trata de resolver el sistema Ax=b, para A una matriz n×n simétrica y definida positiva, b un vector columna de longitud n, tol la tolerancia del método, y maxit el número máximo de iteraciones. pcg usa el método de gradiente conjugado precondicionado.

Interpola los puntos dados por x, y para determinar el valor yi para el valor dado xi, usando el algoritmo especificado por

Otras funciones en Matlab

14. Métodos numéricos usando MATLAB

Prof. Saúl. Buitrago y Oswaldo Jiménez

yi = interp1 (x,y,xi,'metodo')para el valor dado xi, usando el algoritmo especificado por ‘metodo’, por ejemplo: linear, cubic, splines, nearest. La opción por defecto es ‘linear’.

Page 12: Tema 14: Métodos numéricos usando MATLAB

Minimizando funciones de una función de una variable

Dada una función de 1 variable codificada en un archivo tipo M, se puede usar la función de MATLAB fminbnd para encontrar su mínimo en un intervalo dado.

Ejemplo: determinar un mínimo de la función “humps” en el intervalo (0.3, 1)>> x = fminbnd(@humps,0.3,1)el cual retorna

x = 0.6370

14. Métodos numéricos usando MATLAB

Prof. Saúl. Buitrago y Oswaldo Jiménez

y = humps(x) es una función con máximos cerca dex = .3 y x = .9.

>> ezplot(@humps,0.3,1)

Determinar estos máximos.Usar f = @(x) -1*humps(x)

Page 13: Tema 14: Métodos numéricos usando MATLAB

Ejemplo:

>> [x,fval] = fminbnd('sin(x)-cos(x)', -pi, pi)

retorna

x = -0.7854,

fval = -1.4142

Minimizando funciones de una función de una variable

14. Métodos numéricos usando MATLAB

Prof. Saúl. Buitrago y Oswaldo Jiménez

>> ezplot('sin(x)-cos(x)', [-pi,pi])

Page 14: Tema 14: Métodos numéricos usando MATLAB

Minimizando funciones de una función de una variable

Ejemplo:

14. Métodos numéricos usando MATLAB

Prof. Saúl. Buitrago y Oswaldo Jiménez

Probar con:[x,fval] = fminbnd(@humps,0.3,1,optimset(‘Display’,’iter’))

Page 15: Tema 14: Métodos numéricos usando MATLAB

Ejemplo:

>> [x,fval] = fminsearch('fminfun',[1 1])

→ x = 1.0e-004 *

Minimización de funciones de varias variables

La función “fminsearch” es similar a “fminbnd”, excepto que esta maneja funciones de varias variables. Se especifica el vector inicial x0, en lugar de un intervalo. “fminsearch” intenta retornar un vector x que corresponde al mínimo local de la función cercano al vector inicial.

14. Métodos numéricos usando MATLAB

Prof. Saúl. Buitrago y Oswaldo Jiménez

→ x = 1.0e-004 *-0.4582 -0.4717,

fval = 2.1635e-009

>> ezmesh('x^2+y^2-x*y')

fminfun.m

Page 16: Tema 14: Métodos numéricos usando MATLAB

Minimización de funciones de varias variables

Se crea la función “three_var” de 3 variables x, y, z.

Ejemplo:

Determinar el mínimo de 2222 )sin(5.2),,( yxzyxzyxf −+=cercano al punto (-0.6, 1.2, 0.135).

three_var.m

14. Métodos numéricos usando MATLAB

Prof. Saúl. Buitrago y Oswaldo Jiménez

>> v = [-0.6, -1.2, 0.135];>> [a,fval] = fminsearch(@three_var,v)

a =0.0000 -1.5708 0.1803

fval =-2.5000

Page 17: Tema 14: Métodos numéricos usando MATLAB

Minimización de funciones de varias variables

Ejemplo:

Determinar el mínimo de )12424(),( 22122

2121

1 ++++= xxxxxexxf x

cercano al punto (-1, 1).

x =0.1290 -0.5323

>> objfun=@(x) exp(x(1))*(4*x(1)^2+2*x(2)^2+x(1)*x(2)+2*x(2));>> [x fval] = fminsearch(objfun, [-1 1])

14. Métodos numéricos usando MATLAB

Prof. Saúl. Buitrago y Oswaldo Jiménez

>> ezmesh('exp(x)*(4*x^2+2*y^2+x*y+2*y)',[-1,1]);

0.1290 -0.5323fval =

-0.5689

Page 18: Tema 14: Métodos numéricos usando MATLAB

>> y = [ 0 1 2 ]; z = trapz(y) retorna z = 2

Aproximando una integral

Calcula una aproximación de la integral de y, vía el método de trapecios

Función trapz

Ejemplo:

14. Métodos numéricos usando MATLAB

Prof. Saúl. Buitrago y Oswaldo Jiménez

(espaciamiento uniforme de 1)

>> x = [0,3,10]; y = [ 0 1 2 ]; z = trapz(x,y)retorna z = 12

(espaciamiento no uniforme)

Page 19: Tema 14: Métodos numéricos usando MATLAB

Aproximando una integral

Trata de aproximar la integral de la función “fun” entre a y b con un error de 10-6 usando el método recursivo adaptativo de cuadratura de Simpson.

Función quad

Ejemplo:

Sintaxis: q = quad(fun,a,b,tol)

fun: función a integrar, [a,b] intervalo de integración, tol: tolerancia para el error.

14. Métodos numéricos usando MATLAB

Prof. Saúl. Buitrago y Oswaldo Jiménez

>> q = quad('1./(x.^3-2*x-5)', 0, 1);

→ q = -0.1745

>> ezplot('1./(x.^3-2*x-5)', [0, 1])

Ejemplo:

Obs. Se puede definir la función comof = @(x) 1./(x.^3-2*x-5)

o f = inline('1./(x.^3-2*x-5)')

>> ezplot( f, [0, 1])

Page 20: Tema 14: Métodos numéricos usando MATLAB

Aproximando una integral

Ejemplo: Aproximar las integrales siguientes:

∫ +

1

041

1dx

x

= 0.9270

∫π

0

sindx

x

x

= 1.8519

14. Métodos numéricos usando MATLAB

Prof. Saúl. Buitrago y Oswaldo Jiménez

f = inline('sin(x)./x')q = quad(f,0,pi)

comparar con q = quad(f,realmin,pi)

f = inline('1./sqrt(1+x.^4)')q = quad(f,0,1)

Page 21: Tema 14: Métodos numéricos usando MATLAB

Resolución numérica de ecuaciones diferenciales ordinarias

Encontrar la solución de

en conjunto con la condición inicial

btatytftydt

d ≤≤= )),(,()(

00 )( yty =

14. Métodos numéricos usando MATLAB

Prof. Saúl. Buitrago y Oswaldo Jiménez

Page 22: Tema 14: Métodos numéricos usando MATLAB

>> [t, y] = ode23('odefun', [0 pi/2], 1)

2/0,1)0(),sin()( π≤≤=−= tyttydt

d

t =0

y =1.0000

Resolución numérica de ecuaciones diferenciales ordinarias

Ejemplo:

14. Métodos numéricos usando MATLAB

Prof. Saúl. Buitrago y Oswaldo Jiménez

00.15710.31420.47120.62830.78540.94251.09961.25661.41371.5708

1.00000.98770.95110.89100.80900.70710.58780.45400.30900.1564

-0.0000

>> plot(t,y); grid on

Page 23: Tema 14: Métodos numéricos usando MATLAB

Resolución numérica de ecuaciones diferenciales ordinarias

Dado el siguiente diagrama de reacciones:

HOOHO

OOHOHOH

NOOHNOH

k

k

k

+→+

+→+

+→+

2

2

2

3

2

1Ejemplo:

14. Métodos numéricos usando MATLAB

Prof. Saúl. Buitrago y Oswaldo Jiménez

Page 24: Tema 14: Métodos numéricos usando MATLAB

Resolución numérica de ecuaciones diferenciales ordinarias

Dado el siguiente diagrama de reacciones:

HOOHO

OOHOHOH

NOOHNOH

k

k

k

+→+

+→+

+→+

2

2

2

3

2

1

Ejemplo:

[ ] [ ][ ] [ ][ ][ ] [ ][ ][ ]

,

,

212

321

NOHkdt

NOd

OHOkNOHkdt

Hd

−=

+−=

14. Métodos numéricos usando MATLAB

Prof. Saúl. Buitrago y Oswaldo Jiménez

se tiene el sistema de ecuaciones ordinarias asociado siguiente:

[ ] [ ][ ] [ ][ ] [ ][ ][ ] [ ][ ][ ] [ ][ ][ ] [ ][ ] [ ][ ][ ] [ ][ ],

,

,

,

,

32

32

22

21

3221

OHOkdt

Od

OHOkOHOHkdt

Od

OHOHkdt

HOd

NOHkdt

NOd

OHOkOHOHkNOHkdt

OHddt

=

−=

=

=

−−=

Page 25: Tema 14: Métodos numéricos usando MATLAB

Resolución numérica de ecuaciones diferenciales ordinarias

Ejemplo (cont.):denotamos las concentraciones de cada especie como

[ ] [ ] [ ] [ ][ ] [ ] [ ],,,

,,,,

27625

43221

OxOxOHx

NOxOHxNOxHx

=======

el sistema se reescribe como ,

,

26

232

5

xxkxkdx

xkdt

dx

−=

=,

,

2112

3632111

xxkdt

dx

xxkxxkdt

dx

−=

+−=

14. Métodos numéricos usando MATLAB

Prof. Saúl. Buitrago y Oswaldo Jiménez

reescribe como

,

,

3637

363232

6

xxkdt

dx

xxkxkdt

=

−=

,

,

2114

363232211

3

xxkdt

dx

xxkxkxxkdt

dx

=

−−=

Se plantea el sistema

))(,()( tytFtxdt

d =),,,,,,()( 7654321 ′= xxxxxxxtx

),,,,

,,())(,(

363363232

232211363

232211

211363211

′−−−

−+−=

xxkxxkxkxkxxkxxkxkxxk

xxkxxkxxktxtF

el cual se complementa con las condiciones iniciales

)0,0,0,0,0,106.5,105.4()0( 1010 ′⋅⋅= −−x

[ ]01.0,0∈t

Page 26: Tema 14: Métodos numéricos usando MATLAB

Resolución numérica de ecuaciones diferenciales ordinarias

Ejemplo (cont.):

Función que evalúa F (término de la derecha en la EDO)

14. Métodos numéricos usando MATLAB

Prof. Saúl. Buitrago y Oswaldo Jiménez

El sistema es rígido (“stiff”). Se usará la función “ode23s” de MATLAB

>> [t,y] = ode23s(@cinetica, [0:0.0001:0.01], [4.5e-10,5.6e-10,0,0,0,0,0]);

Page 27: Tema 14: Métodos numéricos usando MATLAB

Resolución numérica de ecuaciones diferenciales ordinarias

Ejemplo (cont.):

se procede a graficar los valores de las concentraciones en el tiempo>> plot(t,y(:,1),'r', t,y(:,2),'g', t,y(:,3),'b', t,y(:,4),'y', ...

t,y(:,5),'c', t,y(:,6),'m', t,y(:,7),'k');Se agregan los títulos>> title('Cinetica Quimica (EDOs)');>> xlabel('tiempo');

14. Métodos numéricos usando MATLAB

Prof. Saúl. Buitrago y Oswaldo Jiménez

>> ylabel('concentracion');>> legend('[H]', '[NO2]', '[OH]', …

'[NO]', '[H2O]', '[O]', '[O2]');

cinetica_driver.m

Page 28: Tema 14: Métodos numéricos usando MATLAB

Ejemplo:

=

−+−−−

=

=

0

0

)exp(2

)exp(2),,(

221

121

2

121 axxx

axxx

f

faxxF

>> a = -1; x = [1;1]

Resolución de sistemas de ecuaciones no lineales

Función “fsolve”

Intenta resolver un sistema de la forma F(x)=0, donde x es un vector, comenzando en el vector x0. Retorna en x el vector solución y en fval los valores de F en x.

14. Métodos numéricos usando MATLAB

Prof. Saúl. Buitrago y Oswaldo Jiménez

>> a = -1; % definimos el parámetro a>> x = fsolve(@(x) myfunc(x,a),[-5;-5])x =

0.56710.5671

−+−

0)exp(2 2212 axxxf

function F = myfunc(x,a)F = [ 2*x(1,:) - x(2,:) - exp(a*x(1,:)); ...

-x(1,:) + 2*x(2,:) - exp(a*x(2,:))];end

>> a = -1; x = [1;1]>> myfunc(x,a)ans =

0.63210.6321

>> a = -1; x = [1,2;1,2]>> myfunc(x,a)ans =

0.6321 1.86470.6321 1.8647

Page 29: Tema 14: Métodos numéricos usando MATLAB

Interpolación en una dimensión para un conjunto de datos

Función “interp1”

Interpola los puntos dados por los vectores x, y, con el propósito de determinar el valor yi para un valor dado xi, usando el algoritmo especificado por “metodo”, por ejemplo:

linear, cubic, splines, nearest. La opción por defecto es ‘linear’.

Sintaxis: yi = interp1(x, y, xi, ‘metodo');

14. Métodos numéricos usando MATLAB

Prof. Saúl. Buitrago y Oswaldo Jiménez

Sintaxis: yi = interp1(x, y, xi, ‘metodo');

>> x=[2, 3, 5, 7, 8]; abscisas de puntos (x,y)>> y=[3.2, 4.1, 5.8, 6.4, 6.3]; ordenadas de los puntos>> z=3.2; valor para interpolar, z puede ser un vector>> u=interp1(x,y,z,’linear’) resultado de la interpolación lineal

Ejemplo:

Page 30: Tema 14: Métodos numéricos usando MATLAB

Ejemplo:

A partir de algunos datos de la función seno, usar la función de MATLAB interp1 para generar la curva de la función seno.

plot(x,y,'o',xi,y1,'r',xi,y2,'b',xi,y3,'k');legend('\it puntos','linear','cubic','spline',4);grid on;

x = 0:10; y = sin(x); xi = 0:.25:10;y1 = interp1(x,y,xi, 'linear'); y2 = interp1(x,y,xi, ‘cubic'); y3 = interp1(x,y,xi, ‘spline');

Interpolación en una dimensión para un conjunto de datos

14. Métodos numéricos usando MATLAB

Prof. Saúl. Buitrago y Oswaldo Jiménez

Page 31: Tema 14: Métodos numéricos usando MATLAB

Ejemplo:

La variable y almacena un conjunto de datos medidos a diferentes valores de tiempo t, según la siguiente tabla

t y0.0 0.820.3 0.720.8 0.631.1 0.601.6 0.552.3 0.50

La idea es modelar los datos usando una función exponencial decreciente del tipo

teccty −+= 21)(x = [0.0, 0.3, 0.8, 1.1, 1.6, 2.3];y = [0.82 ,0.72 ,0.63 ,0.60 ,0.55 ,0.50]

14. Métodos numéricos usando MATLAB

Prof. Saúl. Buitrago y Oswaldo Jiménez

donde c1 y c2 los coeficientes incógnitas.

)

3.2

6.1

1.1

8.0

3.0

0.0

exp(

1

1

1

1

1

1

50.0

55.0

60.0

63.0

72.0

82.0

21

−−−−−−

+

=

cc

Esta ecuación dice que el vector y debe aproximarse por una combinación lineal de otros 2 vectores de la misma longitud que y, el primero conteniendo puros 1, y el segundo con componentes e-t

Page 32: Tema 14: Métodos numéricos usando MATLAB

Ejemplo (cont.):

Reorganizando la ultima ecuación se tiene el sistema lineal siguiente:

−−−−−−

=

2

1

)3.2exp(1

)6.1exp(1

)1.1exp(1

)8.0exp(1

)3.0exp(1

)0.0exp(1

50.0

55.0

60.0

63.0

72.0

82.0

c

c

Es decir, hay que resolver el sistema lineal sobredeterminado 6×2 siguiente:

7408.01

0.11

72.0

82.0

14. Métodos numéricos usando MATLAB

Prof. Saúl. Buitrago y Oswaldo Jiménez

=

1003.01

2019.01

3329.01

4493.01

7408.01

A

=

50.0

55.0

60.0

63.0

72.0

b

=

2

1

c

ccbAc = con

La solución se obtiene como los valores de c1 y c2 que minimizan la suma de los cuadrados de la desviación de los datos del modelo.

c =0.47600.3413

c = A \ b �Esto se logra usando la solución de mínimos cuadrados obtenida usando el operador “\” de Matlab

Page 33: Tema 14: Métodos numéricos usando MATLAB

Ahora hay que escribir un procedimiento en Matlab que lea los datos, los vectores t e y de un archivo, calcule los coeficientes c1 y c2 del modelo, calcule el error relativo entre los datos y el modelo, y grafique los datos y el modelo.

Ejemplo (cont.):

14. Métodos numéricos usando MATLAB

Prof. Saúl. Buitrago y Oswaldo Jiménez

modelotety −+= 3413.04760.0)(

t = (0:.1:10)';y = 10+5*exp(-t)+0.3*randn(size(t))

Otros datos para probar el procedimiento

Page 34: Tema 14: Métodos numéricos usando MATLAB

Ejemplo (cont.):

14. Métodos numéricos usando MATLAB

Prof. Saúl. Buitrago y Oswaldo Jiménezarchivo : ajuste_exp_decreciente.m