Exercice 8
clear;
% Question 1
x = linspace(-2,1,1000);
p = [4,13,15,10];
px=polyval(p,x);
% Question 2a
plot(x,px,'b');
% Question 2b
y0=zeros(size(x));
hold on;
plot(x,y0,'r');
% Question 2c
r=roots(p); %racines de p(x) = 0
nr = find(r==real(r));
rr = r(nr) % racines réelles uniquement
plot(rr,zeros(size(rr)),'*r');
exercice 9
clear;
x = linspace(-2,5,1000);
p = [1,-5,-7,29,30];
px=polyval(p,x);
dp = polyder(p); % dérivée de p(x)
rdp = roots(dp); % racines de p'(x) = 0
pmax = max(polyval(p,rdp));
pxmax = polyval(pmax,x);
pmin = min(polyval(p,rdp));
pxmin = polyval(pmin,x);
ydp = polyval(p,rdp); % valeur de p(rdp)
plot(x,px,'b');
hold on;
plot(x,pxmax,'r') %
t = sprintf('b=%.5f',pmax);
text(0,pmax+3,t,'color','r');
plot(x,pxmin,'m') %
t = sprintf('a=%.5f',pmin);
text(0,pmin+3,t,'color','m');
axis([-2,5,-40,60]);
exercice 10
clear;
xi = [0.25,0.5,1,2,3];
yi = [18,7,4,2,1.1];
c1 = ones(size(xi'));
c2 = (1./xi)';
c3 = (1./(xi.*xi))';
y = yi';
X = [c1,c2,c3];
A = (X'*X)\(X'*y);
a0 = A(1);
a1 = A(2);
a2 = A(3);
s = sprintf('a0=%.4f\ta1=%.4f\ta2=%.4f\n',a0,a1,a2);
disp(s);
x=linspace(0.2,4,100);
y=a0+a1./x+a2./(x.*x);
plot(xi,yi,'*b',x,y,'r');
axis([0.2,4,0,25]);
ei = yi-(a0+a1./xi+a2./(xi.*xi));
em = mean(ei);
sig = std(ei);
t = sprintf('erreur moyenne: %.5e',em);
text(2,20,t,'color','b');
exercice 11
clear;
[numdata,textdata,alldata] = xlsread('[Link]');
zi = numdata(:,1); % altitude
Pi = numdata(:,2); % pression
figure;
title('Problème d''interpolation');
xlabel('x');
ylabel('y');
% interpolation
x = linspace(0.5,5,1e3); % création de x dans [0.5,5.5]
yl = interp1(zi,Pi,x,'linear'); % interpolation linéaire
yc = interp1(zi,Pi,x,'cubic'); % interpolation cubic
ys = interp1(zi,Pi,x,'spline'); % interpolation spline
hold on
plot(zi,Pi,'*',x,yl,'m',x,yc,'r',x,ys,'g')
legend('données','linéaire','cubique','spline');
xp = 1.25; % valeur particulière de x
yp1 = interp1(zi,Pi,xp,'linear');
yp2 = interp1(zi,Pi,xp,'cubic');
yp3 = interp1(zi,Pi,xp,'spline');
plot(xp,yp1,'om',xp,yp2,'or',xp,yp3,'og');
% moyenne des yp
ypm = mean([yp1 yp2 yp3]);
% incertitude sur ypm
sig = std([yp1 yp2 yp3]); % écart-type par rapport à la moyenne
% affichage des valeurs
t = sprintf('Pour z = %s, on a P = %.2f avec une incertitude de
%.2e',num2str(xp),ypm,sig);
text(0.55,550,t,'color','b'); % affichage en mode graphique
% Question 4
A = [zi ones(size(zi))];
B = log(Pi);
X = A\B; % ou X = inv(A'*A)*(A'*B);
alpha = X(1); % en km^-1
beta = X(2); % sans unité
% affichage de alpha et beta
a1 = sprintf('alpha = %.2fkm^-1 et beta = %.2f',alpha,beta);
disp(a1)
%b) Comparaison des données et du modèle (2,5 pts)
% graphe des données
figure;
plot(zi,log(Pi),'*b')
title('Variation de log(P) en fonction de l''altitude z')
xlabel('Altitude z en km'); ylabel('log(P)')
% modèle
z = linspace(0,5,1e3); % en km
y = alpha*z+beta; % log(P)
hold on
plot(z,y,'-r')
legend('données','modèle')
% Erreurs de modélisation
% Calcul et affichage de P0
% calcul et affichage de P0
P0 = exp(beta); % en hPa
a2 = sprintf('P0 = %.2fhPa',P0); disp(a2)
% Calcul de la matrice d’erreur
% matrice d'erreur
ei = Pi - P0*exp(alpha*zi);
% Calcul et affichage des erreurs
% calcul des erreurs
N = length(ei);
epsilon = 1/N*sum(ei); % erreur moyenne ou epsilon = mean(ei);
sigma = sqrt(1/(N-1)*sum((ei-epsilon).^2)); % erreur absolue
% ou sigma = std(ei);
% affichage des erreurs
a3 = sprintf('Epsilon = %.2fhPa et Sigma = %.2fhPa',epsilon,sigma);
disp(a3)
exercice 12
clear;
%global n;
% calcul d'intégrale numérique
%for n = 1:5
% I(n) = quad('fonc',0,100);
%end
% affichage
%for i = 1:n
% fprintf('I(%d) = %e\n',i,I(i))
%end
for n=1:5
f = @(x) x.*exp(-n*x.^2);
I(n)=integral(f,0,100);
end
for n = 1:5
fprintf('I(%d) = %e\n',n,I(n));
end