• No se han encontrado resultados

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

N/A
N/A
Protected

Academic year: 2022

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

Copied!
40
0
0

Texto completo

(1)

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),

interpolación polinómica (interp1).

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

Este material está bajo "Creative Commons Attribution-ShareAlike 4.0 International License"

(2)

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

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 de problemas altamente complejos.

(3)

Resolución de sistemas de ecuaciones lineales – operador (\)

x = A\b resuelve el sistema lineal A*x = b. La matriz A y el vector columna b deben tener el mismo número de filas.

MATLAB desplegará un mensaje de advertencia si A es una matriz casi singular, pero a pesar de esto realiza el cálculo.

Si A es una matriz rectangular de dimensión m×n con m≠n, y b tiene m filas, entonces A\b retorna la solución de mínimos cuadrados de la

ecuación A*x = b.

Ejemplo 1: Resolver el sistema lineal A*x = b

>> A = magic(3);

>> b = [15; 15; 15];

>> x = A\b → retorna x = 1.0000 1.0000 1.0000

(4)

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

Resolución de sistemas de ecuaciones lineales – operador (\)

Ejemplo 2: Resolver el sistema lineal A*x = b, donde A es singular

>> A = magic(4);

>> b = [34; 34; 34; 34];

>> x = A\b → retorna

Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 1.306145e-17.

x =

1.5000 2.5000 -0.5000 0.5000

Obs. Cuando RCOND está entre 0 y eps, MATLAB da una advertencia, pero prosigue con el cálculo.

RCOND es el reciproco del número de condición de la matriz.

(5)

Resolución de sistemas de ecuaciones lineales – operador (\)

Ejemplo 3: Resolver el sistema lineal A*x = b, donde A es singular

>> A = [1 0; 0 0]

>> b = [1; 1];

>> x = A\b → retorna

Warning: Matrix is singular to working precision.

x = 1 Inf.

Ejemplo 4: Resolver el sistema lineal A*x = b, donde A es rectangular

>> A = [1 2 0; 0 4 3]

>> b = [8; 18];

>> x = A\b → retorna x = 0

4.0000 0.6667

Obs. En este caso, la división por cero conduce a Inf o NaN, conduciendo a un resultado inservible.

Obs. Esta es una solución de mínimos cuadrados del sistema A*x = b. El

sistema tiene infinitas soluciones.

(6)

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

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, 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('cos(x)-x', [0,1])

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

(7)

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

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

→ retorna

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])

“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.

π/2

(8)

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

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

>> 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);

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:

(9)

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

>> ezplot(@humps,[-1,2])

>> axis([-1,2,-20,100])

>> grid on

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 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)

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

(10)

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

Determinación de los ceros de una función de una variable Ejemplo (cont.):

(11)

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) 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.

(12)

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

Determinación de los ceros de una función de una variable Ejemplo (cont.):

(13)

[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) z = trapz(x,y)

trapz(y) calcula una aproximación de la integral de y vía el método de trapecios usando espaciamiento uniforme de 1.

trapz(x,y) calcula la integral de y con espaciamiento dado por el vector x, donde x e y tienen la misma dimensión.

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.

Otras funciones en Matlab

(14)

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

[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.

yi = interp1 (x,y,xi,'metodo')

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

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

Otras funciones en Matlab

(15)

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.

y = humps(x) es una función con máximos cerca de

x = .3 y x = .9.

>> ezplot(@humps,0.3,1)

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

Determinar estos máximos.

Usar f = @(x) -1*humps(x)

(16)

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

Ejemplo:

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

>> [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

(17)

Minimizando funciones de una función de una variable Ejemplo:

Probar con:

[x,fval] = fminbnd(@humps,0.3,1,optimset('Display', 'iter'))

(18)

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

Ejemplo:

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

→ x = 1.0e-004 *

-0.4582 -0.4717, fval = 2.1635e-009

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

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.

fminfun.m

(19)

Minimización de funciones de varias variables

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

>> v = [-0.6, -1.2, 0.135];

>> [a,fval] = fminsearch(@three_var,v) a =

0.0000 -1.5708 0.1803 fval =

-2.5000 Ejemplo:

Determinar el mínimo de

f ( x , y , z ) = x

2

+ 2 . 5 sin( y ) − z

2

x

2

y

2

cercano al punto (-0.6, 1.2, 0.135).

three_var.m

>> v = [-0.6, -1.0, 0.2]

>> [a,fval] = fminsearch(@three_var,v) a =

0.0000 -1.5708 0.2649 fval =

-2.5000

>> ezmesh('2.5*sin(y) ',[-2,2]);

>> f= @(x,y,z) x.^2+2.5*sin(y)-z.^2*x.^2*y.^2;

(20)

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

Minimización de funciones de varias variables Ejemplo:

Determinar el mínimo de

f ( x

1

, x

2

) = e

x1

( 4 x

12

+ 2 x

22

+ 4 x

1

x

2

+ 2 x

2

+ 1 )

cercano al punto (-1, 1).

>> g = @(x,y) exp(x).*(4*x.^2+2*y.^2+x.*y+2*y)

>> ezmesh(g, [0,0.2,-0.7,-0.4]);

x =

0.1290 -0.5323 fval =

-0.5689

>> 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])

(21)

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

(espaciamiento uniforme de 1) Aproximando una integral

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

Ejemplo:

 

 

 + +

= +

+ +

+

+ =

=

=

=

+

1

1

1 1

0

1

0

1

) ( 2 )

) ( )

( (

)) (

) (

2 )

( 2 ) ( 2 (

2

) (

) (

N

i

i

N N

N

i

i i

x b f

f a

h f

x f x

f x

f x

h f

x f x

h f

L integral

N a h b

=

integración sobre N+1 puntos igualmente espaciados en el intervalo [a,b]

(22)

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

Aproximando una integral

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

Ejemplo:

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

(espaciamiento no uniforme)

( )

=

+ +

− +

=

1

0

1

1

2

) (

) (

N

i

i i

i i

x f x

x f x

integral

integración sobre N+1 puntos con espaciamiento no

constante en el intervalo [a,b], donde xi+1 – xi es el

espaciamiento entre cada par de puntos consecutivos.

(23)

>> f = @(x) 1./(x.^3-2*x-5);

>> x = 0:0.05:1;

>> y = f(x);

>> z = trapz(x,y);

>> fprintf('integral de f entre 0 y 1 es %f\n',z);

retorna

integral de f entre 0 y 1 es -0.174564 Aproximando una integral

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

Ejemplo:

(24)

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]) 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 (el valor por defecto es 1.e-6)

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

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

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

(25)

Aproximando una integral

Ejemplo: Aproximar las integrales siguientes:

∫ +

1

0

1

4

1 dx

x

= 0.9270

π

0

sin dx x

x

= 1.8519

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)

Obs.

La función f a integrar debe aceptar que x sea un vector, y retornará un vector. Usar los operadores .*, ./

y .^ en la definición de f.

(26)

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

Resolución numérica de ecuaciones diferenciales ordinarias Encontrar la solución de

en conjunto con la condición inicial

b t a t

y t f t

dt y

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

0 0

)

( t y

y =

(problemasgidos)

(27)

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

2 / 0

, 1 ) 0 ( ), sin(

)

(t = − t y = ≤ t ≤ π dt y

d

t = 0 0.1571 0.3142 0.4712 0.6283 0.7854 0.9425 1.0996 1.2566 1.4137 1.5708

y =

1.0000 0.9877 0.9511 0.8910 0.8090 0.7071 0.5878 0.4540 0.3090 0.1564 -0.0000

>> plot(t,y); grid on

Resolución numérica de ecuaciones diferenciales ordinarias Ejemplo:

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

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

(28)

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

Resolución numérica de ecuaciones diferenciales ordinarias

Dado el siguiente diagrama de reacciones:

H O

OH O

O O H OH

OH

NO OH

NO H

k k k

+

→

 +

+

→

 +

+

→

 +

2 2 2

3 2

Ejemplo: 1

(problema rígido)

(29)

Resolución numérica de ecuaciones diferenciales ordinarias

Dado el siguiente diagrama de reacciones:

H O

OH O

O O H OH

OH

NO OH

NO H

k k k

+

→

 +

+

→

 +

+

→

 +

2 2 2

3 2 1

Ejemplo:

se tiene el sistema de ecuaciones ordinarias asociado siguiente:

[ ] [ ][ ] [ ][ ]

[ ] [ ][ ]

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

[ ]

[ ][ ]

[ ] [ ][ ]

[ ] [ ][ ] [ ][ ]

[ ] [ ][ ]

,

, ,

,

, ,

,

3 2

3 2

2 2

2 1

3 2

2 1

2 1

2

3 2

1

OH O

dt k O d

OH O

k OH OH

dt k O d

OH OH

dt k HO d

NO H

dt k NO d

OH O

k OH OH

k NO

H dt k

OH d

NO H

dt k NO d

OH O

k NO

H dt k

H d

=

=

=

=

=

=

+

=

[ ] [

H , NO2

] [ ] [

, O , OH

] [

, NO

] [ ] [

, O2 , H2O

]

donde

son las concentraciones de las especies participantes

(30)

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

Resolución numérica de ecuaciones diferenciales ordinarias Ejemplo (cont.):

denotamos las

concentraciones de cada especie como

[ ] [ ] [ ] [ ]

[ ]

,

[ ]

,

[ ]

,

, ,

, ,

2 7

6 2

5

4 3

2 2

1

O x

O x

O H x

NO x

OH x

NO x

H x

=

=

=

=

=

=

=

el sistema se reescribe como

,

, ,

3 6 3 7

3 6 3 2 3 2 6

2 3 2 5

x x dt k

dx

x x k x dt k

dx

x dt k

dx

=

=

=

,

, ,

,

2 1 1 4

3 6 3 2 3 2 2 1 1 3

2 1 1 2

3 6 3 2 1 1 1

x x dt k

dx

x x k x k x x dt k

dx

x x dt k

dx

x x k x x dt k

dx

=

=

=

+

=

Se plantea el sistema

)) ( , ( )

( t F t y t dt x

d = x ( t ) = ( x

1

, x

2

, x

3

, x

4

, x

5

, x

6

, x

7

) ′

) ,

, ,

,

, ,

( )) ( , (

3 6 3 3 6 3 2

3 2 2 3 2 2 1 1 3 6 3 2

3 2 2

1 1

2 1 1 3 6 3 2

1 1

− ′

− +

=

x x k x x k x

k x k x x k x x k x

k x

x k

x x k x x k x

x k t

x t F

el cual se complementa con

las condiciones iniciales

x ( 0 ) = ( 4 . 5 ⋅ 10

10

, 5 . 6 ⋅ 10

10

, 0 , 0 , 0 , 0 , 0 ) ′

[ 0 , 0 . 01 ]

t

(31)

Resolución numérica de ecuaciones diferenciales ordinarias Ejemplo (cont.):

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]);

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

(32)

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

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');

>> ylabel('concentracion');

>> legend('[H]', '[NO2]', '[OH]', … '[NO]', '[H2O]', '[O]', '[O2]');

cinetica_driver.m

(33)

Ejemplo:

>> a = -1; % definimos el parámetro a

>> x = fsolve(@(x) myfunc(x,a),[-5;-5]) x =

0.5671 0.5671





=





− +

= −





=

0 0 )

exp(

2

) exp(

) 2 , , (

2 2

1

1 2

1 2

1 2

1 x x ax

ax x

x f

a f x x F

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.6321 0.6321

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

>> myfunc(x,a) ans =

0.6321 1.8647 0.6321 1.8647 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.

(34)

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

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');

>> 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:

(35)

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

(36)

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

Ejemplo:

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

2 1

 

 

 

 

 

 

 

 

+

 

 

 

 

 

 

 

 

=

 

 

 

 

 

 

 

 

c c

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

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

t y

0.0 0.82 0.3 0.72 0.8 0.63 1.1 0.60 1.6 0.55 2.3 0.50 La idea es modelar los datos usando una

función exponencial decreciente del tipo

e

t

c c t

y ( ) =

1

+

2 t = [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];

(37)

Ejemplo (cont.):

Reorganizando la ultima ecuación se tiene

el sistema lineal siguiente:



 

 

 

 

 

 

 

 

 

=

 

 

 

 

 

 

 

 

2 1

) 3 . 2 exp(

1

) 6 . 1 exp(

1

) 1 . 1 exp(

1

) 8 . 0 exp(

1

) 3 . 0 exp(

1

) 0 . 0 exp(

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:

 

 

 

 

 

 

 

 

=

1003 .

0 1

2019 .

0 1

3329 .

0 1

4493 .

0 1

7408 .

0 1

0 . 1 1

A

 

 

 

 

 

 

 

 

=

50 . 0

55 . 0

60 . 0

63 . 0

72 . 0

82 . 0

b 

 

= 

2 1

c c c

b

Ac =

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.4760 0.3413 c = A \ b

Esto se logra usando la solución de mínimos

cuadrados obtenida usando el operador “\” de Matlab

(38)

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

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.

modelo

e

t

t

y ( ) = 0 . 4760 + 0 . 3413

Ejemplo (cont.):

(39)

Ejemplo (cont.):

(40)

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

t = (0:.1:10)';

y = 10+5*exp(-t)+0.3*randn(size(t));

Ejemplo: Probar el procedimiento anterior con los datos siguientes:

t y 0.0 15.1613 0.1000 15.0744 0.2000 13.4160 0.3000 13.9627 0.4000 13.4472 0.5000 12.6403 0.6000 12.6140

9.5000 10.0566 9.6000 9.9756 9.7000 9.4204 9.8000 9.8686 9.9000 9.4618 10.0000 10.2523 La idea es modelar los datos usando una

función exponencial decreciente del tipo

e

t

c c t

y ( ) =

1

+

2

ajuste_exp_decreciente.m

ajuste_exp_decreciente_datos2.csv

Referencias

Documento similar

Como es sabido el derecho está en función del equilibrio (26), y la consolidación de la estructura jurídica fun- damental del Estado occidental contemporáneo depende también de

saginata, se considera común en Europa del este (15), con una prevalencia mucho más baja en Europa occidental (del orden de 0.01%) (16).. Las infecciones humanas son endémicas

En la primera parte del capítulo se ha utilizado Matlab para un ejercicio de sensibilidad con una función al fin y al cabo con una única variable independiente, sea la distancia,

Evaluar una función es determinar el valor de la variable independiente “x” para así hallar un valor de la variable

(1886-1887) encajarían bien en una antología de textos históricos. Sólo que para él la literatura es la que debe influir en la historia y no a la inversa, pues la verdad litera- ria

La campaña ha consistido en la revisión del etiquetado e instrucciones de uso de todos los ter- mómetros digitales comunicados, así como de la documentación técnica adicional de

Como el valor de F calculado (489,71) es mayor que el correspondiente a los dos niveles, la diferencia entre las dos variancias (5*„ que mide las variacio- nes explicadas y S*,

Función original vs Interpolación por Splines (MATLAB). Representación de una curva que realiza un suavizamiento. Suavizamiento por Splines. Representación de los puntos de control