Tema 6
Asignatura: Programacin Cientfica 1er. curso Licenciatura en Fsica Introduccin a
MATLAB
Tema 6 : Integracin numrica
Rosa Echevarra Lbano. Dpto. Ecuaciones Diferenciales y Anlisis Numrico. Universidad de Sevilla
Integracin numrica: clculo con MATLAB Clculo de integrales definidas:
es el rea de la regin limitada por la curva el eje X y las rectas y
Rosa Echevarra Lbano. Dpto. Ecuaciones Diferenciales y Anlisis Numrico. Universidad de Sevilla
Integracin numrica: clculo con MATLAB MATLAB dispone de la funcin quad para calcular integrales definidas: >> quad(fun,a,b)
fun es la funcion a integrar y puede ser especificada de dos formas: mediante un objeto inline: quad(fun,a,b) mediante una M-funcin: quad(@fun,a,b)
Rosa Echevarra Lbano. Dpto. Ecuaciones Diferenciales y Anlisis Numrico. Universidad de Sevilla
Integracin numrica: clculo con MATLAB EJEMPLO (funcin inline): calcular
>> f=inline('sin(4*log(x))') >> quad(f,0.2,3) ans = 0.1013
Rosa Echevarra Lbano. Dpto. Ecuaciones Diferenciales y Anlisis Numrico. Universidad de Sevilla
Integracin numrica: clculo con MATLAB ATENCIN: LA EXPRESIN DE LA FUNCIN DEBE ESCRIBIRSE EN FORMA VECTORIZADA (de forma que si el argumento es un vector, devuelva un vector)
>> f=inline('x.*sin(4*log(x))') >> quad(f,0.2,3) ans = -0.2837
Rosa Echevarra Lbano. Dpto. Ecuaciones Diferenciales y Anlisis Numrico. Universidad de Sevilla
Integracin numrica: clculo con MATLAB EJEMPLO (M-funcin): calcular
La funcin a integrar se calcula mediante una Mfuncin: crear el fichero mifun.m
mifun.m function [y]=mifun(x) y=sin(4*log(x));
Rosa Echevarra Lbano. Dpto. Ecuaciones Diferenciales y Anlisis Numrico. Universidad de Sevilla
Integracin numrica: clculo con MATLAB EJEMPLO (M-funcin): calcular
>> quad(@mifun,0.2,3) ans = 0.1013
Rosa Echevarra Lbano. Dpto. Ecuaciones Diferenciales y Anlisis Numrico. Universidad de Sevilla
Integracin numrica: clculo con MATLAB Ejercicio: calcular la integral definida siguiente, usando una M-funcin
Rosa Echevarra Lbano. Dpto. Ecuaciones Diferenciales y Anlisis Numrico. Universidad de Sevilla
Integracin numrica: clculo con MATLAB Ejercicio: calcular la integral definida siguiente, usando una M-funcin
>> quad(@mifun,0.2,3) ans = -0.2837
mifun.m function [y]=mifun(x) y=x.*sin(4*log(x));
Rosa Echevarra Lbano. Dpto. Ecuaciones Diferenciales y Anlisis Numrico. Universidad de Sevilla
Integracin numrica: clculo con MATLAB PASO DE ARGUMENTOS OPCIONALES: Supongamos que se desea calcular el valor de una integral que depende de un parmetro:
func.m function [y]=func(x,k) y=k*x.*sin(4*log(x)); >> k=3.3425; >> quad(@func,a,b,[],[],k)
Rosa Echevarra Lbano. Dpto. Ecuaciones Diferenciales y Anlisis Numrico. Universidad de Sevilla
Integracin numrica: Ejercicio Ejercicio: para un gas que se expande en un cilindro, la presin es funcin del volumen: p=p(v). El trabajo realizado por el gas cuando se expande de un volumen v1 a otro v2 viene dado por
Cuando no existe prdida de calor Se sabe de un gas que, ocupando un volumen 100, tiene una presin 160. Calcular el trabajo realizado cuando pasa de un volumen 100 a un volumen 800.
Rosa Echevarra Lbano. Dpto. Ecuaciones Diferenciales y Anlisis Numrico. Universidad de Sevilla
Integracin numrica: Ejercicio Se trata de calcular
Para ello escribimos en primer lugar una M-funcin que devuelva el valor del integrando, es decir, de la presin en funcin de k y de v presion.m function [p]=presion(v,k) p=k*v.^(p=k*v.^(-1.4);
Rosa Echevarra Lbano. Dpto. Ecuaciones Diferenciales y Anlisis Numrico. Universidad de Sevilla
Integracin numrica: Ejercicio Ahora, para calcular, por ejemplo,
para el valor de
pondramos
>> k=9954; >> quad(@presion,200,500,[],[],k) ans = 447.5038
Rosa Echevarra Lbano. Dpto. Ecuaciones Diferenciales y Anlisis Numrico. Universidad de Sevilla
Integracin numrica: Ejercicio Escribir una M-funcin (trabajo.m) que lea del teclado los valores p1 v1 v2 y que: Calcule el valor del parmetro k Dibuje la grfica de la presin en relacin al volumen Calcule el trabajo realizado : presin inicial : volumen inicial : volumen final
Rosa Echevarra Lbano. Dpto. Ecuaciones Diferenciales y Anlisis Numrico. Universidad de Sevilla
Integracin numrica: programacin trabajo.m
function trabajo % p1=input('>> Valor de la presion inicial ? '); v1=input('>> Valor del volumen inicial ? '); v2=input('>> Valor del volumen final ? '); % k=p1*v1^1.4; v=linspace(v1,v2); p=presion(v,k); plot(v,p) ; xlabel('Volumen'); ylabel('Presion'); shg; trab=quad(@presion,v1,v2,[],[],k); texto=[' Trabajo realizado : ',num2str(trab,'%15.5f')]; pmax=max(p); pmin=min(p); pt=pmaxpt=pmax-(pmax(pmax-pmin)/10; vt=v1+(v2vt=v1+(v2-v1)/4; text(vt,pt,texto); %-----------------------------------------------------function [p]=presion(v,k) p=k*v.^(p=k*v.^(-1.4);
Rosa Echevarra Lbano. Dpto. Ecuaciones Diferenciales y Anlisis Numrico. Universidad de Sevilla
Integracin numrica: clculo con MATLAB INTEGRALES DOBLES: La integral doble
Z d
Y b
es el volumen de la regin (3D) limitada por la superficie el plano XY y los planos verticales Tambin se escribe:
X c a
con
Rosa Echevarra Lbano. Dpto. Ecuaciones Diferenciales y Anlisis Numrico. Universidad de Sevilla
Integracin numrica: clculo con MATLAB INTEGRALES DOBLES
se puede calcular como una integral reiterada: se calcula primero la integral ms interior, integrando con respecto de la variable y, considerando constante la x, y luego se integra el resultado con respecto a x
Rosa Echevarra Lbano. Dpto. Ecuaciones Diferenciales y Anlisis Numrico. Universidad de Sevilla
Integracin numrica: clculo con MATLAB MATLAB dispone de la funcin dblquad para calcular integrales dobles:
>> dblquad(fun,a,b,c,d) igual que antes, fun puede ser: un objeto inline: dblquad(fun,a,b,c,d) una M-funcin : dblquad(@fun,a,b,c,d) dblquad(@fun,a,b,c,d) La funcin fun debe admitir un vector como argumento x (y devolver un vector de su misma dimensin)
Rosa Echevarra Lbano. Dpto. Ecuaciones Diferenciales y Anlisis Numrico. Universidad de Sevilla
Integracin numrica: clculo con MATLAB EJEMPLO: calcular
>> f=inline('1./(1+x.^2+y.^2)','x','y') >> ezmesh(f,[ezmesh(f,[-1,1,0,1]) >> f=inline('1./(1+x.^2+y.^2)','x','y') >> dblquad(f,dblquad(f,-1,1,0,1) ans = 1.2790
Rosa Echevarra Lbano. Dpto. Ecuaciones Diferenciales y Anlisis Numrico. Universidad de Sevilla
Integracin numrica: clculo con MATLAB MATLAB dispone de la funcin triplequad para calcular integrales dobles:
>> triplequad(fun,a,b,c,d,e,f)
Rosa Echevarra Lbano. Dpto. Ecuaciones Diferenciales y Anlisis Numrico. Universidad de Sevilla