function [alphaa,betaa,F,I1,I2]=changement_variable_integrale(a,b,f,ph,sens) % Changement de variable pour les intégrales % % ********************************************************* % [alphaa,betaa,F,I1,I2]=changement_variable_integrale(a,b,f,ph,sens) : % (voir notations du cours, section 5.4. Changement de variable) % remplace l'intégrale int_a ^b f(u) du par int_{alphaa} ^{betaa} F(x) dx % avec, si sens=1, le lien entre l'ancienne variable u et la nouvelle % variable x est donné par u=ph(x) % Voir le premier sens du changement de variable donne en section % 5.4.1 et en particulier la remarque 5.3 % avec, si sens=-1, le lien entre l'ancienne variable u et la nouvelle % variable x est donné par x=ph(u) % Voir le second sens du changement de variable donne en section % 5.4.2 et en particulier la remarque 5.5 % * Variable d'entrées % * a,b : bornes de l'intégrale % * F : intégrande % * ph : changement de variable % * Variables d'entrées optionnelles % * sens : entier dans {1,-1}, valant 1 par défaut. Voir ci-dessus. % * Variable de sortie % * alphaa,betaa : nouvelles bornes de l'intégrale (éventuellement remises dans % le bon sens) % * F : nouvelles intégrande % * Variables de sortie optionnelle % *I1= int_a ^b f(u) du % *I2= int_alphaa ^betaa F(x) dx % En principes, les deux sont égales ! % % Exemples : % % a) exemples issus du cours. % [alphaa,betaa,F,I1,I2]=changement_variable_integrale(sym(0),sym(1),@(u) sqrt(1-u^2),@(x) cos(x)) % [alphaa,betaa,F,I1,I2]=changement_variable_integrale(sym(0),sym(pi)/2,@(u) (cos(u))^2*sin(u),@(x) cos(x),-1) % % b) exemples issus du TD % [alphaa,betaa,F,I1,I2]=changement_variable_integrale(sym(1),sym(4),@(u) u/sqrt(2*u+1),@(x) (x^2-1)/2) % [alphaa,betaa,F,I1,I2]=changement_variable_integrale(sym(1),sym(4)/3,@(u) 1/(u*sqrt(u^2-1)),@(x) 1/x) % [alphaa,betaa,F,I1,I2]=changement_variable_integrale(sym(0),sym(pi)/2,@(u) cos(u)/(6-5*sin(u)+(sin(u))^2),@(x) sin(x),-1) % % c) exemple issu de l'examen du 11 octobre 2016 (exercice 3), on a % [alphaa,betaa,F,I1,I2]=changement_variable_integrale(sym(0),sym(1),@(u) 1/(3+exp(-u)),@(x) exp(x),-1) % % % % ************ Fonctions auxiliaires utilisées ************ % % aucune % % ********************************************************* % % 2018 by Jérôme BASTIEN % Université Claude Bernard Lyon I, Polytech, Laboratoire LIBM, Villeurbanne % E-Mail : jerome.bastien@univ-lyon1.fr if nargin<=4||isempty(sens) sens=1; end syms x u; if sens==1 F=simple(feval(f,feval(ph,x))*diff(feval(ph,x),x)); alphaa=solve(char(feval(ph,x)-a),'x'); betaa=solve(char(feval(ph,x)-b),'x'); if isempty(alphaa) error('aucune solution pour la première borne'); end if isempty(betaa) error('aucune solution pour la seconde borne'); end if length(alphaa)>=2 disp('Attention, plusieurs solutions pour la première borne'); end if length(betaa)>=2 disp('Attention, plusieurs solutions pour la seconde borne'); end alphaa=alphaa(1); betaa=betaa(1); else alphaa=feval(ph,a); betaa=feval(ph,b); U=solve(char(feval(ph,u)-x),'u'); if isempty(U) error('aucune solution pour la variable'); end if length(U)>=2 disp('Attention, plusieurs solutions pour la variable'); end U=U(1); G=diff(feval(ph,x),x); F=simplify(feval(f,U)/(subs(G,x,U))); end try if abs(alphaa-betaa)-(alphaa-betaa)==0 auxi=alphaa; alphaa=betaa; betaa=auxi; F=-F; end catch end if nargout>=3 try I1=simple(int(feval(f,u),u,a,b)); catch I1=[]; end end if nargout>=3 try I2=simple(int(F,x,alphaa,betaa)); catch I2=[]; end if ~isempty(I1)&&~isempty(I2)&&simple(I1-I2)~=0 disp('Attention, deux intégrales différentes'); end end