1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
|
function [boul] = intersections_segment (X1,X2,F1,F2)
syms x %définition de la variable x
%initialisation
f1b=0;
f2b=0;
boul=0;
n=1;
%interpolation polynomiale
f1=polyfit(X1,F1,n);
f2=polyfit(X2,F2,n);
%ecriture des fonctions d'interpolation
for i=1:n+1
f1b=f1b+ f1(i)*x^(n-i+1);
f2b=f2b+ f2(i)*x^(n-i+1);
end
f_inter=f1b-f2b;%calcul de la différences des fonctions d'interpolation
%application numerique des fonction d'interpolation pour le tracé
xb=min(min(X1),min(X2)):(max(max(X1),max(X2))-min(min(X1),min(X2)))/100:max(max(X1),max(X2));
f1b=subs(f1b,x,xb);
f2b=subs(f2b,x,xb);
%tracé des fonctions
figure()
hold on
plot(X1,F1,'--r')
plot(X2,F2,'--y')
plot(xb,f1b,'r')
plot(xb,f2b,'y')
title('tracé des fonctions et de leurs interpolations')
xlabel('x')
ylabel('f')
legend('F1','F2','interpolation de F1','interpolation de F2')
hold off
%calcul des intersections
inter=eval(solve(f_inter,x))
%verification intersection segments
x1min=min(X1);
x1max=max(X1);
for i=1:length(inter)
if inter(i) <= x1max && inter(i) >= x1min
boul=1;
end
end |
Partager