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
| function [T,c]=calDifDiv(t,y,d,s)
n = length(t)-1;
N = 3*(n+1);
c = zeros(N,1);
T = zeros(N,1);
c(1:3:$) = y; c(2:3:$) = y; c(3:3:$) = y;
T(1:3:$) = t; T(2:3:$) = t; T(3:3:$) = t;
for i = 2:N
j = i:N;
c(j) = (c(j-1)-c(j))./(T(j-i+1)-T(j));
if i == 2
c(2:3:$) = d; c(3:3:$) = d;
elseif i == 3
c(3:3:$) = s/2;
end
end
end
t = [0;%pi;2*%pi];
y = sin(t);
d = cos(t);
s = -sin(t);
[T,c]=calDifDiv(t,y,d,s)
// conversion base de Newton -> base canonique
t = poly(0,"t");
p = c(1);
m = 1;
for i=2:3*length(y)
m = m * (t-T(i-1));
p = p + c(i)*m;
end
disp(p)
clf
u = linspace(0,2*%pi,100)';
plot(u,horner(p,u),u,sin(u)) |
Partager