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
|
real function SEVAL2 (N,U,X,Y,B,C,D)
integer, intent(in) :: N ! Taille des vecteurs passés en argument
real, dimension(:), intent(in) :: & ! Vecteurs
X, & ! Abscisses
Y, & ! Ordonnées à l'origine
B, & ! Coefficients directeur
C, &
D
real, intent(in) :: u ! Abscisse où l'on souhaite évaluée la fonction
integer :: i,j,k
real :: dx
I = 1
if (I >= N) then
I=1
end if
IF (U < X(I) ) then
I=1
J=N+1
END IF
if (x(i+1) < u) then ! u n'est pas dans le premier intervalle [x(1),x(2)]
I=1;
J=N+1;
K=(I+J)/2;
do while (J > I+1)
if (u < x(k)) then
j = k
else
i = k
end if
end do
end if
DX=U-X(I)
SEVAL2=Y(I)+DX*(B(I)+DX*(C(I)+DX*D(I)))
end function SEVAL2 |