clear
% Tund nr 10, ülesanne 1

% esitame lähteandmed
x=[2014:1:2021];% sammu pikkus 1
y=[22.2,19.5,18.0,17.9,25.2,18.6,18.7,29.3];
kaalud=[3,4,4,4,2,4,4,1];
% esitame andmed joonisel
plot(x,y,'bo')
% lähendame lähteandmeid lineaarfunktsiooniga vähimruutude mõttes
%a) kaalud on võrdsed ehk igal punktil võrdne kaal
kordajadl1=polyfit(x,y,1) % esimese astme funktsiooni
xvork=[2014:0.1:2021];
% saime Phi(x)=10^3*0.0007*x-10^3*1.2950
ylineaar1=polyval(kordajadl1,xvork);
% esitame Phi(x) joonisel (lineaarfunktsioon, võrdsed kaalud)
plot(xvork,ylineaar1,'r')
hold on
% prognoosime, milline on temperatuur Tallinnas, 15.07.2022
prognoosl1=polyval(kordajadl1,2022)

%b) lähendame lineaarfunktsiooniga etteantud kaalusid arvestades
% lahendame võrrandisüsteemi A*c=b
% leiame c ehk c2 ja c2.
% esitame maatriksi A
A(1,1)=sum(kaalud.*x.^2); % komponentide/koordinaatide kaupa korrutamine
A(1,2)=sum(kaalud.*x);
A(2,1)=A(1,2);
A(2,2)=sum(kaalud);
A
% esitame maatriksi b
b(1)=sum(kaalud.*y.*x);
b(2)=sum(kaalud.*y);
b'
% leiame maatriksi c
c=inv(A)*b'
% saime, et c1=0.1168 ja c2=-215.7961
% saime, et Phi(x)=0.1168*x-215.7961
ylineaar2=polyval(c',xvork);
plot(xvork,ylineaar2,'g')
hold on
% prognoosime viimase interpolandi järgi, milline võiks olla temperatuur
% vaaldedaval päeval
prognoosl2=polyval(c',2022)

% lähendame lähteandmeid ruutfunktsiooniga vähimruutude mõttes
% a) iga punkt on võrdse kaaluga
kordajadr1=polyfit(x,y,2) % koostame teise astme polünoomi
% Saame Phi(x)=10^6*0.0000*x^2-10^6*x+1.7770
yruut1=polyval(kordajadr1,xvork);
% teeme joonise
plot(xvork,yruut1,'b')
hold on
% prognoosime
prognoosr1=polyval(kordajadr1,2022)
%b) etteantud kaaludega
% esitame maatriksi A
uA(1,1)=sum(kaalud.*x.^4);
uA(1,2)=sum(kaalud.*x.^3);
uA(1,3)=sum(kaalud.*x.^2);
uA(2,1)=uA(1,2);
uA(2,2)=uA(1,3);
uA(2,3)=sum(kaalud.*x);
uA(3,1)=uA(1,3);
uA(3,2)=uA(2,3);
uA(3,3)=sum(kaalud);
uA
% esitame maatriksi b (nö reamaatriksina)
ub(1)=sum(kaalud.*y.*x.^2);
ub(2)=sum(kaalud.*y.*x);
ub(3)=sum(kaalud.*y);
ub'
% leiame maatriksi c ehk lahendame süsteemi A*c=b
% meie tähistustes uA*uc=ub
uc=inv(uA)*ub' % uc on veerumaatriks
% Saime Phi(x)=10^6*0.0000*x^2-10^6*0.0014*x+10^6*1.4380
yruut2=polyval(uc',xvork);
plot(xvork,yruut2,'m')
% prognoosime
prognoosr2=polyval(uc',2022)