Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.
Lima - 2010             T´picos de Matlab: Aplicaciones a M´todos Num´ricos              o                                ...
Introducci´n                                                   o    Las t´cnicas computacionales permiten abordar problema...
´Indice1 Interpolaci´n.              o                                                                                    ...
1     Interpolaci´n.                 oSea P = {(xi , yi = f (xi )) : i = 1, · · ·, n, n ∈ N} un conjunto de puntos dado. S...
-Implementaci´n del m´todo usando MatLab                o       e               %Algoritmo de Lagrange               %Ingr...
Usando la funci´n “Lagrange” en MatLab, ingresamos la orden :                  o        Lagrange([-2 -1 0],[1/5 1/2 1],[-1...
l=1;                 L=1;                 M=0;                  for j=1:n                    if i~=j                      ...
-La interpolaci´n m´s frecuente es por medio de splines de grado 3, llamados “splines c´ bicos”.               o     a    ...
N = length(x);                       n =(1:N)’;                       xi=(1:0.05:N)’;                       u = spline(n,x...
% f es la funci´n                          o          % tol= tolerancia            error=1;%error inicial            f_ant...
% ra´ces de una funci´n.             ı                 o         % f es la funci´n que ingresamos (a ser llamada)         ...
if fx*f1>0                 x1=x;f1=fx;             else                 x2=x;f2=fx;             end               fprintf(...
% tol=tolerancia                 error=1; x_ant=xo; n=1; while (error>tol)                 x_nuevo=x_ant-feval(f,x_ant)/fe...
Diferencia hacia atr´s:                       a             %derivada de la funci´n Y =x.*exp(x) en elpunto x=2 usando    ...
5     Integraci´n               oEjemplo 7. Evaluar num´ricamente las siguientes integrales impropias realizando las trans...
function [integral]=richarson(f,a,b,m)                 format short                 %-------------------------------------...
f=inline(’-5*y+10’,’t’,’y’)         ode23(f,[0,3],0)         axis([-0.5 3 -0.5 3]),grid              ,se muestra la siguie...
function M=malthus(to,tf,yo)            %to=tiempo inicial,tf=tiempo final           % yo=y(to)         k=0.05; % constant...
Prochain SlideShare
Chargement dans…5
×

TÓPICOS DE MATLAB: APLICACIÓN A LOS MÉTODOS NUMÉRICOS.

17 409 vues

Publié le

Publié dans : Formation, Technologie

TÓPICOS DE MATLAB: APLICACIÓN A LOS MÉTODOS NUMÉRICOS.

  1. 1. Lima - 2010 T´picos de Matlab: Aplicaciones a M´todos Num´ricos o e e 1 Jos´ Walter Ysique Quesqu´n e e jwysiqueq@pucp.edu.pe Resumen Uso del paquete de software matem´tico MatLab para el c´lculo de algunos m´todos num´ri- a a e e cos. Se definen funciones en las que se implementan m´todos conocidos para calcular,por ejemplo e el polinomio interpolador, ra´ıces,derivada e integral de una funci´n. Adem´s se aborda algunas o a nociones con respecto a la soluci´n de ecuaciones diferenciales ordinarias. o Palabras clave: MatLab,interpolador,derivada,integral,ecuaciones diferenciales. Abstract Use of the mathematical software package MatLab for the calculation of some numerical methods. Functions are defined in which known methods are implemented to calculate, for example the interpolador polynomial, roots, derived and integral of a function. In addition one approaches some slight knowledge with respect to the solution of ordinary differential equations. Keywords: MatLab, interpolador, derived,integral,differential equations. ————————————————————————————————————————1 Magister en Matem´ticas . a
  2. 2. Introducci´n o Las t´cnicas computacionales permiten abordar problemas de manera num´rica, anal´ e e ıtica ogr´fica, por ejemplo los sistemas de ecuaciones lineales y no lineales, las soluciones de ecuaciones adiferenciales ordinarias y parciales, la evaluaci´n num´rica de derivadas, de integrales, el procesamien- o eto de datos experimentales, etc. MATLAB (MATatrix LABoratory) es un lenguaje de alto nivel y un ambiente interactivo creadopor MathWorks. MATLAB est´ dise˜ ado para realizar r´pida y eficientemente tareas matem´ticas a n a acomputacionalmente intensivas. El programa cuenta con muchas funciones que permiten hacer todaslas operaciones matem´ticas elementales. Los gr´ficos generados por el computador usando Mat- a alab son utiles para mostrar la evoluci´n de diversos sistemas, como la formaci´n de patrones, el ´ o oprocesamiento de im´genes, etc. a Se espera incentivar al lector en el estudio y aplicaci´n de los conceptos fundamentales de las t´cni- o ecas num´ricas usando el desarrollo de algoritmos matem´ticos. Asimismo, realizar la implementaci´n e a odel programa correspondiente usando el entorno integrado del Matlab. i
  3. 3. ´Indice1 Interpolaci´n. o 1 1.1 Interpolaci´n de Lagrange. . . o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 Interpolaci´n de Hermite . . o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.2.1 Polinomio de Hermite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.3 Funci´n Spline . . . . . . . . o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.4 Ejemplo de Aplicaci´n . . . . o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 Ra´ ıces de Ecuaciones 63 Presentaci´n de Algunos M´todos. o e 6 3.1 M´todo de Bisecci´n . . . . . . . . e o . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 3.2 M´todo de la Secante . . . . . . . . e . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 3.3 M´todo de Falsa Posici´n . . . . . . e o . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 3.4 M´todo de Newton . . . . . . . . . e . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 Derivada de una funci´n o 105 Integraci´n o 126 Ecuaciones Diferenciales 13 6.1 Ley de Malthus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 Bibliograf´ ıa 15 ii
  4. 4. 1 Interpolaci´n. oSea P = {(xi , yi = f (xi )) : i = 1, · · ·, n, n ∈ N} un conjunto de puntos dado. Se denomina “funci´n ointerpolante” a una funci´n cuya gr´fica pasa por todos los puntos del conjunto P . o a Figura 1: • Las funciones m´s usadas para interpolar son las polinomiales debido a que ´stas son m´s f´ciles a e a a de derivar e integrar. • Se dispone de dos m´todos generales de interpolaci´n polin´mica: Interpolaci´n de Lagrange e e o o o Interpolaci´n de Hermite. o1.1 Interpolaci´n de Lagrange. oSea f la funci´n a interpolar, sean P = {(xi , yi = f (xi )) : i = 1, · · ·, n, n ∈ N} los puntos oconocidos,donde f (xi ) es la funci´n evaluada en cada punto xi . El polinomio interpolador de ogrado m de Lagrange es definido por: n Pn = f (xi )Li (x) , n ≤ m . (1) i=0donde los Li (x) son llamados polinomios de Lagrange y est´n definidos por: a n x − xj Li (x) = , i = 0, 1, · · ·, n . (2) j=0j=i xi − xj-Propiedades de los Polinomios de Lagrange: 0, si i = j; • Li (xj ) = 1, i=j. • El grado de Li (x) es igual a n cualquiera que sea i, donde 0 ≤ i ≤ n . 1
  5. 5. -Implementaci´n del m´todo usando MatLab o e %Algoritmo de Lagrange %Ingresar los valores conocidos de x %Ingresar los valores conocidos de y %Ingresar los valores a interpolar xi %muestra el polinomio de lagrange y los valores yi function Lagrange(x,y,xi); p=0; syms t; n=length(x); yi=zeros(size(xi)); for i=1:n z=ones(size(xi)); L=1; for j=1:n if i~=j L=L*(t-x(j))/(x(i)-x(j)); z=z.*(xi-x(j))/(x(i)-x(j)); end end yi=yi+z*y(i); p=p+L*y(i); p=simplify(p); end polinomio=p yiEjemplo 1. Sea f (x) = x21 +1 una funci´n tal que x0 = −2, f (x0 ) = 1/5, x1 = −1, f (x1 ) = o1/2, x2 = 0, f (x2 ) = 1 . Su polinomio interpolador de Lagrange es: 2 P2 (x) = f (xi ) · Li (x) , i=0donde : (x + 1)x x2 x L0 (x) = = + (−2 + 1)(−2) 2 2 (x + 2)x L1 (x) = = x2 − 2x (−1 + 2)(−1) (x + 2)(x + 1) x2 3x L2 (x) = = + +1 . (2)(1) 2 2Luego: 1 1 P2 (x) = · L0 (x) + · L1 (x) + 1 · L2 (x) 5 2 2 x 3x P2 (x) = + +1 . 10 5 2
  6. 6. Usando la funci´n “Lagrange” en MatLab, ingresamos la orden : o Lagrange([-2 -1 0],[1/5 1/2 1],[-1.5 -0.5])en donde xi=[-1.5 -0.5] son los valores a interpolar. Como resultado se mostrar´: a polinomio = 1/10*t^2+3/5*t+1 yi = 0.3250 0.72501.2 Interpolaci´n de Hermite oTeniendo en cuenta la interpolaci´n de Lagrange, se puede exigir otro tipo de condiciones,por ejemplo oque adem´s de coincidir los valores P (xi ) = f (xi ) = yi , tambi´n coincidan el de sus derivadas: a eP ′ (xi ) = f ′ (xi ) = yi para todo xi con i = 0, · · ··, n . ′As´ tenemos los siguientes datos: ı x0 x1 ··· xn y0 y1 ··· yn ′ ′ ′ y0 y1 ··· yn Cuadro 1: Observamos que se tiene 2(n + 1) condiciones, por lo que buscaremos un polinomio de grado2n + 1 que verifique la condiciones dadas en el Cuadro (1).1.2.1 Polinomio de HermiteSe define como: n n ′ P2n+1 (x) = hj (x) · yj + gj (x) · yj , (3) j=0 j=0donde hj (x) y gj (x) est´n definidos en t´rminos de polinomios de Lagrange: a e hj (x) = [1 − 2(x − xj ) · L′j (xj )] · L2 (x) , gj (x) = (x − xj ) · L2 (x) . j j (4)Implementaci´n del m´todo en MatLab : o e %Algoritmo generalizado de Hermite % ingresar valores conocidos de x % ingresar valores conocidos de y % ingresar valores de las derivadas dy % ingresar valores a interpolar xi function Hermite(x,y,dy,xi) p=0; syms t; n=length(x); yi=zeros(size(xi)); for i=1:n 3
  7. 7. l=1; L=1; M=0; for j=1:n if i~=j l=l.*(xi-x(j))/(x(i)-x(j));%polinomio lagrange L=L.*1/(x(i)-x(j)); %factor constante en derivada M=M+(x(i)-x(j));% acumulando derivadas F=L.*M ; %resultado delagrange derivado hj=((1-2.*(xi-x(i)).*F)).*l.^2; %coeficiente en hemite gj=(xi-x(i)).*l.^2 ;%coeficiente en hemite end end yi=hj.*y(i)+gj.*dy(i); p=p+yi; end p 1Ejemplo 2. Sea f (x) = x2 +1 la funci´n a interpolar, con los siguientes datos adicionales: o i=0 i=1 i=2 i=3 i=4 xi −2 −1 0 1 2 yi 1/5 1/2 1 1/2 1/5 ′ yi 4/25 1/2 0 −1/2 −4/25 . Cuadro 2:Evaluar el polinomio de Hermite en los valores {−1 · 5, −0 · 5, 0 · 5, 1 · 5} .Soluci´n: oUsando la funci´n “Hermite” en MatLab, ingresamos la orden : o Hermite([-2 -1 0 1 2],[1/5 1/2 1 1/2 1/5], [4/25 1/2 0 -1/2 -4/25],[-1.5 -0.5 0.5 1.5])y se mostrar´ como respuesta: a p = 1.1099 0.5692 0.5692 1.10991.3 Funci´n Spline oUna “funci´n spline de grado k ” con valores conocidos en x0 , x1 , · · ·, xn es una funci´n S(x) o oformada por varios polinomios cada uno definido sobre un subintervalo [xi , xi+1 ] y se unen bajo lassiguientes condiciones de continuidad: • En el intervalo [xi , xi+1 >, S(x) es un polinomio de grado menor o igual a k . • S(x) admite derivada continua de orden (k − 1) en [x0 , xn ] . 4
  8. 8. -La interpolaci´n m´s frecuente es por medio de splines de grado 3, llamados “splines c´ bicos”. o a u-MatLab tiene incorporado el interpolador “spline cubic”, se ejecuta siguiendo la siguiente sintaxis:yi = spline(x, y, xi), donde los valores y representa los valores de la funci´n evaluada en los puntos ox y los puntos xi son los puntos a interpolar.Ejemplo 3. x = 0:10; y = x.*cos(x); xi = 0:.25:10; yi = spline(x,y,xi); hold on plot(x,y,’o’,xi,yi) % ubicaci´n de los puntos dados o % y la gr´fica del polinomio interpolador a Figura 2:1.4 Ejemplo de Aplicaci´n oEjemplo 4. Con ayuda de la funci´n de Matlab ginput realice un dibujo de su mano. Para esto ocoloque su mano en la pantalla de su monitor y seleccione unos 30 a 35 puntos del contorno de sumano. Ahora imagine que las abscisas y las ordenadas de los datos que recolect´ son funciones de una ovariable independiente que va desde 1 hasta el n´mero de puntos. Luego realice una interpolaci´n de u ocada una de estas tablas en una rejilla muy fina. Seleccione el m´todo de interpolaci´n que considere e oel mejor para este caso.Soluci´n: Definimos en MatLab la siguiente funci´n que realiza lo pedido: o o % N es numero de puntos %get consigue las propiedades del objeto %get(h,’PropertyName’) %screensize tama~o de la pantalla n %figure(’position’,get(0,’screensize’)) % ginput permite seleccionar puntos de la figura con el mouse function mano(N) figure(’position’,get(0,’screensize’)) axes(’position’,[0 0 1 1]) [x,y] = ginput(N); 5
  9. 9. N = length(x); n =(1:N)’; xi=(1:0.05:N)’; u = spline(n,x,xi); v = spline(n,y,xi); plot(x,y,’ro’,u,v,’-’);2 Ra´ ıces de EcuacionesEn esta secci´n nos ocuparemos de encontrar las ra´ de ecuaciones no lineales. Esto es, encontrar o ıceslos ceros de funciones. El proceso a seguir es: • Ubicar intervalos [aj , bj ] en donde se encuentran las ra´ ıces, para esto hacemos uso del Teorema del Valor Intermedio . Podemos optar por hacer la gr´fica de la funci´n . a o • En cada intervalo contruir una sucesi´n xn ∈ [aj , bj ] tal que limn→∞ xn = rj , donde rj es o un cero de la fuci´n. o • Lo anterior es un proceso iterativo mediante el cual se busca encontrar una mejor aproximaci´n o de los ceros de una funci´n. Se termina cuando se impone alg´n criterio de tolerancia. Por o u ejemplo : |xn+1 − xn | < ǫ, para ǫ > 0 bastante peque˜ o.n3 Presentaci´n de Algunos M´todos. o ePresentaremos la implementaci´n de algunos m´todos en Matlab mediante un ejemplo: o eEjemplo 5. Hallar las ra´ ıces de la ecuaci´n: o sin(sqrt(sec(x) + (x3 ) ∗ exp(5 ∗ x/tan(x)))) − exp(−1 ∗ x) = 0en el intervalo [0 · 17, 0 · 81] .Primero definimos una funci´n en Matlab: o function y=f(x) y=sin(sqrt(sec(x)+(x^3)*exp(5*x/tan(x))))-exp(-1*x); .La cual es guardada con el nombre de f .3.1 M´todo de Bisecci´n e oDefinimos una funci´n para este m´todo: o e function MB=biseccion(a,b,f,tol); % Esta funci´n aplica el m´todo de bisecci´n para o e o % ubicar raices. % a y b son extremos del intervalo donde se ubica la ra´z ı % n indica el n´mero de la iteraci´n u o 6
  10. 10. % f es la funci´n o % tol= tolerancia error=1;%error inicial f_ant=feval(f,b); % f_ant indica f anterior ,feval(f,b)indica f evaluado en b. n=1; while (error>tol) f_a=feval(f,a); f_b=feval(f,b); m =(a+b)/2; f_m=feval(f,m); error=abs(f_m-f_ant); fprintf(’n=%d, a= %5.8f,b=%5.8f,m=%5.8f,f(m)=%5.8f, error=%5.8fn’,n,a,b,m,f_m,error) if f_a == 0, W=sprintf(’n ra´z en x = %5.8f ’, a); ı disp(W); return end if f_b == 0 W=sprintf(’n ra´z en x = %5.8f ’, b); ı disp(W); return end if (f_a*f_m)<0 b= m; else a= m; end f_ant=f_m; n=n+1; end; W=sprintf(’n ra´z en x = %5.8f ’, m); ı disp(W);Para nuestro ejemplo ejecutamos la orden: biseccion(0.17,0.81,’f’,0.5*10^(-8)) ,obteniendo como resultado: ra´z en x = 0.32913022 ı .3.2 M´todo de la Secante eDefinimos una funci´n para este m´todo: o e function MS=secante(x1,x2,f,tol) % Esta funci´n aplica el m´todo de la secante para ubicar o e 7
  11. 11. % ra´ces de una funci´n. ı o % f es la funci´n que ingresamos (a ser llamada) o % tol es la tolerancia que deseamos % x1 y x2 son los extremos iniciales del intervalo en % el que est´ la ra´z a ı % delta es el tama~o del nuevo interv. en el q’ est´ la ra´z n a ı f1=feval(f,x1); f2=feval(f,x2); x_nuevo=x2; for n=2:30 x=x2+f2*(x2-x1)/(f1-f2); fx=feval(f,x); x1=x2; f1=f2; delta=abs(x2-x); x2=x; f2=fx; fprintf(’n = %d, x = %5.8f, fx = %5.8f n’,n,x,fx) if delta < tol, break, end end fprintf(’n ra´z en x = %5.8f ’, x); ıPara nuestro ejemplo ejecutamos la orden: secante(0.17,0.81,’f’,0.5*10^(-8)) ,obtenemos como resultado: ra´z en x = 0.32913022 . ı3.3 M´todo de Falsa Posici´n e oDefinimos una funci´n para este m´todo: o e function MFP=falsaposicion(x1,x2,f,tol) % Esta funci´n aplica el m´todo de Falsa Posici´n o e o % para hallar las ra´ces de una funci´n. ı o % f es la funci´n que ingresamos o % tol es la tolerancia que deseamos % x1 y x2 son los extremos del intervalo donde se % encuentra la ra´z ı f1=feval(f,x1); f2=feval(f,x2); x_nuevo=x2; if f1*f2<0 for n=2:30 x=x2+f2*(x2-x1)/(f1-f2); fx=feval(f,x); 8
  12. 12. if fx*f1>0 x1=x;f1=fx; else x2=x;f2=fx; end fprintf(’n = %d, x = %5.8f, fx = %5.8f n’,n,x,fx) if abs(x_nuevo-x)<tol, break, end x_nuevo=x; end else disp(’La ra´z debe estar en el intervalo [x1,x2]’) ı end fprintf(’n ra´z en x = %5.8f ’, x_nuevo); ıPara nuestro ejemplo ejecutamos la orden: falsaposicion(0.17,0.81,’f’,0.5*10^(-8)) ,obteniendo como resultado: ra´z en x = 0.32913022 ı .3.4 M´todo de Newton ePresentaremos la implementaci´n del m´todo de Newton en una variable. Este m´todo necesita a o e ediferencia de los anteriores,una aproximaci´n inicial de la ra´ o ız,tambi´n la derivada de la funci´n. e oPrimero definimos una funci´n en MatLab para la derivada de la funci´n de la cual se quiere hallar o osu ra´ ız.Para nuestro ejemplo: function y=derivada(x) y=1/2*cos((sec(x)+x^3*exp(5*x/tan(x)))^(1/2))/(sec(x) +x^3*exp(5*x/tan(x)))^(1/2)*(sec(x)*tan(x) +3*x^2*exp(5*x/tan(x))+x^3*(5/tan(x) -5*x/tan(x)^2*(1+tan(x)^2))*exp(5*x/tan(x)))+exp(-x);Implementaci´n de MatLab del m´todo de Newton para una variable: o e function N=newton1v(xo,f,df,tol) % Esta funci´n aplica elm´todo de una variable o e % para hallar la ra´z de una funci´n. ı o % xo es la aproximacion inicial de la ra´z ı % f es la funcion % df es la derivada de la funcion 9
  13. 13. % tol=tolerancia error=1; x_ant=xo; n=1; while (error>tol) x_nuevo=x_ant-feval(f,x_ant)/feval(df,x_ant); error=abs(x_nuevo-x_ant); W=fprintf(’n=%d,x_ant=%5.8f,x_nuevo=%5.8f, error=%5.8f’,n,x_ant,x_nuevo,error); disp(W); x_ant=x_nuevo; n=n+1; end; fprintf(’n ra´z en x=%5.8f’,x_ant); ıPara nuestro ejemplo ejecutamos la orden: newton1v(0.30,’f’,’derivada’,0.5*10^(-8)) ,obteniendo como resultado: ra´z en x=0.32913022 ı .4 Derivada de una funci´n oEjemplo 6. Considere la funci´n f (x) = xexp(x) . Determinar aproximaciones de f ′ (2) , para ocada uno de los siguientes pasos h = 0 · 5, 0 · 45, · · ·, 0 · 05 ; usando las f´rmulas de diferencia hacia oatr´s, diferencia hacia delante y diferencia central. Para visualizar como la aproximaci´n mejora con a oel decrecimiento del paso, graficar el error como funci´n de h en cada caso. o soluci´n: oDiferencia hacia adelante: %derivada de la funci´n Y =x.*exp(x) en el punto x=2 o %usando diferencia hacia adelante con dos puntos, %se grafica el error como funci´n del paso. o xo=2; h=0.5:-0.05:0.05; n = length(h)-1; disp(’ DIFERENCIA HACIA ADELANTE ’); for j=1:length(h) x1=xo; x2=xo+h; y1=x1.*exp(x1); y2=x2.*exp(x2); y=(y2-y1)./(h); end fprintf(’n h=%5.2f’,h); fprintf(’n y=%5.8f’,y); w=abs(exp(2)+2.*exp(2)- y);%error plot(h,abs(exp(2)+2.*exp(2)- y),’ro’), grid 10
  14. 14. Diferencia hacia atr´s: a %derivada de la funci´n Y =x.*exp(x) en elpunto x=2 usando o %diferencia hacia atras con dos puntos, se grafica el %error como funci´n del paso. o xo=2; h=0.5:-0.05:0.05; n = length(h)-1; disp(’ DIFERENCIA HACIA ATRAS ’); for j=1:length(h) x1=xo; x2=xo-h; y1=x1.*exp(x1); y2=x2.*exp(x2); y=(y1-y2)./(h); end fprintf(’n h=%5.2f’,h); fprintf(’n y=%5.8f’,y); w=abs(exp(2)+2.*exp(2)- y);%error plot(h,abs(exp(2)+2.*exp(2)- y),’ro’), gridDiferencia central: %derivada de la funci´n Y =x.*exp(x) en el o %punto x=2 usando diferencia central con dos %puntos, se grafica el error como funci´n del paso o xo=2; h=0.5:-0.05:0.05; n =length(h)-1; disp(’ DIFERENCIA CENTRAL ’); for j=1:length(h) x1=xo-h; x2=xo+h; yo=xo.*exp(xo); y1=x1.*exp(x1); y2=x2.*exp(x2); y=(y2-y1)./(2.*h); end fprintf(’n h=%5.2f’,h); fprintf(’n y=%5.8f’,y); w=abs(exp(2)+2.*exp(2)- y);%error plot(h,abs(exp(2)+2.*exp(2)- y),’ro’), grid . 11
  15. 15. 5 Integraci´n oEjemplo 7. Evaluar num´ricamente las siguientes integrales impropias realizando las transforma- eciones que crea conveniente. ∞ 1 a) dx 0 1 + x2 1 cos(x) b) √ dx 0 x Soluci´n: oParte a), definimos la siguiente funci´n en Matlab: o function integral disp(’INTEGRAL DE f(x)=1/(1+x^2)’); disp(’LIMITES DE INTEGRACION:a=0;b=infty’); %Evaluamos de a=0 hasta c=1 y de c=1 hasta b=infty; I1=trapecio(’h’,0,1,80); %segundo desde c=1 hasta b=infty %hacemos el cambio x=1/t I2=trapecio(’g’,0,1,80); disp(’EL VALOR DE LA INTEGRAL ES:’); I=I1+I2 %inicio de la subfunci´n regla extendida del trapecio o function s = trapecio(f,a,b,m) h = (b - a)/m; s = 0; for k=1:(m-1), x = a + h*k; s = s + feval(f,x); end s = h*(feval(f,a)+feval(f,b))/2 + h*s; % definiendo funciones function h=h(x) h=1/(1+x^2); function g=g(t) g= 1/(1+t^2); .El valor de la integral es: I=1.5708 . Parte b), definimos la siguiente funci´n en Matlab: o function integral_2 disp(’INTEGRAL DE f(x)=(cos(x))/(x^(1/2))’); disp(’LIMITES DE INTEGRACION: a=0;b=1’); %hacemos el cambio x=(t^2) %integraremos g(t)=2cos(t^2) %nuevos l´mites de integrac´n a=0 ,b=1. ı o disp(’EL VALOR DE LA INTEGRAL ES :’); richarson(’g’,0,1,20) %inicio de la subfunci´n richarson - trapecio o 12
  16. 16. function [integral]=richarson(f,a,b,m) format short %------------------------------------------- %EMPEZAMOS ALGORITMO DE RICHARSON PARA %HALLAR LA integral de una funci´n o for i=1:length(m) h=(b-a)./m; delta=0.01; err=1; j=1; I(1,1)=trapecio(f,a,b,m); while err>delta && j<50 m=2.*m; I(j+1,1)=trapecio(f,a,b,m); for k=1:j I(j+1,k+1)=(I(j,k)-(4^k)*I(j+1,k))/(1-4^k); end err=abs(I(j+1,j+1)-I(j,j)); j=j+1; end [n ,n]= size(I); end I; I(n,n) %inicio de la subfunci´n regla o %extendida del trapecio function s = trapecio(f,a,b,m) h = (b - a)/m; s = 0; for k=1:(m-1), x = a + h*k; s = s + feval(f,x); end s = h*(feval(f,a)+feval(f,b))/2 + h*s; % definiendo funci´n o function g=g(t) g=2*cos(t^2); .El valor de la integral es: I=1.8090 .6 Ecuaciones DiferencialesPara calcular, la soluci´n aproximada del problema: y ′ = f (t, y) en [to, tf ] con la condici´n inicial o oy(to) = yo; en MatLab se usan los comandos: f=inline(’expresion de f(t,y)’,’t’,’y’) ode23(f,[to,tf],yo) ,esta orden calcula una aproximaci´n num´rica de la soluci´n y muestra una gr´fica. o e o aEjemplo 8. Ejecutamos la orden: 13
  17. 17. f=inline(’-5*y+10’,’t’,’y’) ode23(f,[0,3],0) axis([-0.5 3 -0.5 3]),grid ,se muestra la siguiente gr´fica: a 3 2.5 2 1.5 1 0.5 0 −0.5 −0.5 0 0.5 1 1.5 2 2.5 3 Figura 3: Tambi´m podemos hacer el c´lculo mediante la orden e a [t,y]=ode23(f,[t0,tf],y0) ,la diferencia con la enterior,es que esta no muestra gr´fica. a6.1 Ley de MalthusEjemplo 9. Supongamos que el n´mero de habitantes de un pa´ en el a˜ o 2007 fue de 26.4 millones. u ıs n ′Y crece siguiendo la Ley (de Malthus) y = 0,05y, donde y(t) representa el n´mero de habitantes uen millones, en un instante t .Estimar el n´mero de Habitantes en el a˜ o 2020. u n soluci´n: Datos: to=2007 ,yo=26.4,tf=2020. Ejecutamos la orden o f=inline(’0.05*y’,’t’,’y’) ode23(f,[2007,2020],26.4) ;usamos la orden ginput(1) para hallar en la gr´fica las coordenadas que me indican la soluci´n. a oObteniendo como respuesta que en el a˜ o 2020 el n´ mero de habitantes es aproximadamente 50.6 n umillones.Implementamos una funci´n en MatLab para la soluci´n anal´ o o ıtica de este modelo: 14
  18. 18. function M=malthus(to,tf,yo) %to=tiempo inicial,tf=tiempo final % yo=y(to) k=0.05; % constante de proporcionalidad, puede variar. h=0.01; % incremento de tiempo,puede variar. th=to:h:tf; soluc=yo.*exp(k.*(th-to)); plot(th,soluc) .Para nuestro ejemplo ingresamos la orden: malthus(2007,2020,26.4) .7 Bibliograf´ ıa[1] Juan-Antonio Infante y Jos´ Mar´ Rey, e ıaIntroducci´n a MATLAB(notas en internet). o[2] Nakamura, Shoichiro,Numerical analysis and graphic visualization with MATLAB Upper Saddle River,NJ : Prentice-Hall, 1996.[3] W.H. Press, S.A. Teukolsky, W.T Vetterling, B.P. Flannery Numerical Recipes in C (2nd edition),Cambridge University Press. 1992.[3]Elizabeth Doig. Notas de clase del curso C´lculo Num´rico, a eCiencias e Ingenier´ ıa-PUCP. 15

×