%% AnttiLaaksonen.m Kirjoitus Solmuun
%
clear;close all
s=[1 -1 3 13 29];  % Annettu jono
s1=s;              % Muutetaan viimeistä alkiota hiukan
s1(end)=25;
s1(end)=30;
s1(end)=28;        % Tässä viimeinen kokeilu
n=length(s);
%x=1:n;
for k=2:n
    a{k}=polyfit(1:k,s(1:k),k-1);  % Interpolaatiopolynomien kertoimet
    a1{k}=polyfit(1:k,s1(1:k),k-1); % Tässä muutetulle datalle
end
%%
x=1:15;            % Lasketeen näissä pisteissä polynomien arvot.
y=polyval(a{n},x);  % Alkup. data
plot(x,y,'*r'); grid on   
y1=polyval(a1{n},x); % Muutettu vika kerroin 1:llä
hold on
plot(x,y1,'*b'); grid on 
legend('Viimeinen data=29','Viimeinen data=28')
[y' y1']
% Siis 4 ensimmäistä datapistettä ei anna mitään vihjettä 5:nnestä,
% vaikka tiedettäisiin, että kyseessä on polynomimalli.
% Jos viimeinen data muuttuu 29 -> 28, niin koko jono menee totaalisesti
% eri suuntiin (15:nnellä on eroa jo 1000:n verran).
%% Shakkilautaongelma
figure
s=[0, 6, 28, 96, 252, 550, 1056, 1848];
n=length(s)
for k=2:n
    a{k}=polyfit(1:k,s(1:k),k-1);
end
%%
x=1:10;
a{n}
% Tästä näkyy, että koko datan interpolaatiopolynomi on astetta 4
y=polyval(a{n},x);  
plot(x,y,'*r'); grid on  
title('Koko Shakkilautadatan määräämä interpolaatiopolynomi')
a{5}
% 5:n ekan datapisteen kautta int. poly on siis sama
y5=polyval(a{5},x); % Astetta 4
figure
plot(x,y5,'*b'); grid on 
title('5:n ekan datapisteen määräämä int. poly')
[y' y5']
% Siis 5 ekaa termiä ennustaa oikein koko annetun jonon (tietysti).
% Mutta millä perusteella siitä eteenpäin? 
%% Epätäydellisiä induktioita
% Ensimmäinen jono voi jatkua ihan miten tahansa, "käytännössä"
% todennäköisyys sen jatkumisen "oikealle" ennustamiselle on pyöreä 0.
% Kannattaa myös muistaa, että yleensäkään interpolaatiopolynomi ei sovellu
% ekstarapolointiin. (Vrt. vaikka USA:n censuskatastrofi (ilman
% Trumpiakin))
%%
% Shakkilautaongelmalle vois olla mahdollista induktiotodistus, mutta
% kirjoituksessa puhutaan ohjelmoinnilla saatavista tuloksista, ei viittaa
% induktiotodistukseen.
