function [W1,W2,W3]=choix_du_support(pd1,pd2,pd3,v1,v2,v3,verif)
% calcule les poids explicites d'une formule de quadrature et vérifie
% son caractère exact pour les fonctions polynomes de P2.
%
% variables d'entrée
% pd1,pd2,pd3 sont les symboliques issus de la fonction
% recherche_poids pour le problème considéré.
% v1,v2,v3 sont trois valeurs distinctes de l'intervalle [-1,1]
% qui particularisent les valeurs formelles.
% verif est un booléen
% si verif=1: le logiciel vérifie formellement que les intégrales
% exacte et approchée coincident pour les fonctions considérées;
% sinon, il omet cette vérification.
%
% variables de sortie
% W1,W2,W3 désignent les poids de la formule de quadrature.
% Ainsi l'intégrale I de la fonction f mesurée est donnée par:
% I=W1f(v1)+W2f(v2)+W3f(v3).
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                   Fonctions connexes appelées
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% pour l'exemple, intervention de globales!
global t1 t2 t3;

% tests d'entrée
if nargin~=7
    error('Nombre des arguments incorrect');
end
v=diff(sort([v1 v2 v3]));
if max(v.^2)>1
    error('Les points ne sont pas tous dans [-1,1].Voir controle.');
end
if sum(v==0)>0
    error('Les points ne sont pas distincts. Voir controle.');
end

% algorithme proprement dit
v=[v1 v2 v3];
v=sym(v,'r');
poids=[pd1 pd2 pd3];
poids_expl=sym(subs(poids,[t1 t2 t3],[v1 v2 v3]),'r');
W1=poids_expl(1);W2=poids_expl(2);W3=poids_expl(3);

% traitement de la vérification si l'utilisateur l'a demandée

if verif==1
    syms a b c x;
    ch1='On veut intégrer sur [-1,1] la fonction f donnée par';
    ch2='f(x)=ax^2+bx+c, où a,b,c sont symboliques.';
    ch3='La valeur exacte de l''intégrale est :';
    ch4='La valeur fournie par formule de quadrature est :';
    ch5='obtenue à partir de la valeur du signal aux dates';
    ch6='avec les poids respectifs';
    ch7='L''écart entre les deux expressions est de :';
    fx=a*x^2+b*x+c;
    v_app=W1*subs(fx,x,v1)+W2*subs(fx,x,v2)+W3*subs(fx,x,v3);
    % qu'on peut remplacer par un produit matriciel!
    v_ex=int(fx,x,-1,1);
    % l'indication de x est inutile en fait...
    ecart=v_app-v_ex;
    
    % affichage des résultats
    disp(ch1);disp(ch2);
    disp(ch3);v_ex
    disp(ch4);v_app
    disp(ch5);v
    disp(ch6);poids_expl
    disp(ch7);ecart
end
    
