% Koostas: Karl-Magnus Pruul (222571EAAB)
%1.) Olgu abcdef Teie üliõpilaskoodi numbrid.
% Lahendage võrrandisüsteem
a=2;
b=2;
c=2;
d=5;
e=7;
f=1;
%1.1 Lahendada võrrandisüsteem hariliku iteratsioonivõrrandiga
% võrrandisüsteem vektorfunktsioonina
% z=(x,y), x=z(1) ja y=z(2)
F=@(z) [z(1)^2+(a+b)*z(2)+1,(d+f)*z(1)-(a+c)*z(2)^2-1+5*(f+c)];
%joonis 1
figure(1);
%ezplot('x^2+(2+2)*y=2+2-7', [-2,4,-3.5,0])
%hold on
%Selle võrraniga võrrandisüsteem ei koondu. Asendan võrrandi järgneva
%võrrandiga: x^2+4y+3=0
f=ezplot('x^2+4*y+3=0')
set(f, 'color', 'red')
hold on
grid on
ezplot('(5+1)*x-(2+2)*y^2=1-5*(1+2)')
legend('x^2+4*y+3=0', '6*x-4*y^2+14=0')
%6x-4y^2+14=0
%valin alglähendid graafikult: (-1.3, -1.3) ja (2.86, -2.92)
syms x y
tuletised=jacobian([sqrt(-4*y-3),sqrt((3/2)*x+(7/2))],[x,y])
%tulemus
%   [                          0, -2/(- 4*y - 3)^(1/2)]
%   [3/(4*((3*x)/2 + 7/2)^(1/2)),                    0]
x=-1.3;
y=-1.3;
Gtuletis=[ 0, -2/(- 4*y - 1)^(1/2);3/(4*((3*x)/2 + 7/2)^(1/2)),0];   
norm(Gtuletis,1) % sobib 0.9759
x=2.86;
y=-2.92;
Gtuletis=[0, 3^(1/2)/(2*y - 1)^(1/2);3/(4*((3*x)/2 + 7/2)^(1/2)),0];
norm(Gtuletis,1) % sobib 0.6623
z=[-1.3,-1.3];
while norm(F(z),1)>10
 z(1)=-sqrt(-4*z(2)+3);
 z(2)=-sqrt((3/2)*z(1)+(7/2));
end
lahend1h=z
% lahend -1.3000  -1.3000
z=[2.86,-2.92];
i=0;
while norm(F(z),1)>10
 z(1)=-sqrt(-4*z(2)+3);
 z(2)=-sqrt((3/2)*z(1)+(7/2));
end
lahend2h=z
%lahend 2.8600   -2.9200
%Newtoni meetod 
F=@(z) [z(1)^2+4*z(2)+1
    6*z(1)-4*z(2)^2+14];
z=[-1.72;-1]; %veeruvektor
while norm(F(z),1)>10^(-5)
 Ftuletis=[2*z(1),4
     6,-8*z(2)];
 z=z-inv(Ftuletis)*F(z);
end
lahend1n=z
%lahend -1.7013
%       -0.9736
z=[3.28; -2.68];
while norm(F(z),1)>10^(-5)
 Ftuletis=[2*z(1),4
     6,-8*z(2)];
 z=z-inv(Ftuletis)*F(z);
end
lahend2n=z
%lahend     3.2524
%          -2.8946
clear
%2) a) Koostage Larange'i interpolatsioonipolünoom
x=[0:10:60];
y=[30,51,68,79,85.5,89,90];
figure(2);
plot(x,y,'o')
hold on
axis([0,60,25,95])
xlabel("Aeg [min]")
ylabel("Temperatuur [C]")
title("Mootori mähise temperatuur sõltuvalt ajast")
% leiame teise astme polünoomi, sõlmi seitse
% polünoomi aste on (sõlmede arv-1) ehk 6. aste
syms xx;  %sümboolne muutuja
sum=0
for i=1:length(x)   %kuni kõik sõlmed on läbitud
    L=1;
    for j=1:length(x)
        if i~=j
            L=L*(xx-x(j))/(x(i)-x(j));
        end
    end
    sum=sum+L*y(i);
end
lagrangepol=simplify(sum)
syms Z(xx);
Z(xx)=lagrangepol
[Z(0), Z(10), Z(20), Z(30), Z(40), Z(50), Z(60)]
%b) Interpoleerige andmeid lineaarsplainiga siledusastmega null.
yvaartused1splain=interp1(x,y,x,'linear')
p1=plot(x,yvaartused1splain,'m-')
%c) Interpoleerige andmeid kuupsplainiga siledusastmega kaks.
xvork=[0:1:60];
yvaartused3splain=interp1(x,y,xvork,'spline');
p2=plot(xvork,yvaartused3splain,'black-')
legend('algandmed','lineaarsplain siledusaste 0', 'kuupsplain siledusaste 2', 'Location','south')
p1.LineWidth=1
p2.LineWidth=1
%d) Arvutage temperatuuri ligikaudne väärtus ajahetkel 53 minutit erinevaid
% lähenemisvõimalusi kasutades.
vpa(Z(53))
%ans = 89.55224259375
kordajad1=polyfit(x,y,1);
polyval(kordajad1,53)
%ans = 92.8232
kordajad3=polyfit(x,y,3);
polyval(kordajad3,53)
%ans = 89.6211
clear
% % 
%3) Raketi kiirused teatud ajahetkedel
x=[5,8,10,12,15,19,22,25];
y=[106.8, 177.2, 232.6, 279.2, 301.4, 372.3, 401.3, 442.5];
kaalud=[1, 3, 3, 3, 6, 8, 3, 2];
%a) Lähendage neid andmeid lineaarfunktsiooniga ja ruutfunktsiooniga 
%vähimruutude mõttes, kui kaalud on võrdsed.
figure(3);
plot(x,y,'o')
hold on;
kordajad1=polyfit(x,y,1)
yvaartused11=polyval(kordajad1, x);
p1=plot(x, yvaartused11,'r-')
hold on
p1.LineWidth=1
kordajad1=polyfit(x,y,2)
yvaartused11=polyval(kordajad1, x);
p2=plot(x, yvaartused11,'r-')
hold on
p2.LineWidth=1
%b) Lähendage neid andmeid lineaarfunktsiooniga ja ruutfunktsiooniga
%vähimruutude mõttes kaalusid arvestades. 
%(abcdef on Teie üliõpilaskoodi numbrid).
%lineaarfunktsioon
A(1,1)=sum(kaalud.*x.^2);
A(1,2)=sum(kaalud.*x);
A(2,1)=sum(kaalud.*x);
A(2,2)=sum(kaalud);
B(1,1)=sum(kaalud.*y.*x);
B(2,1)=sum(kaalud.*y);
c=inv(A)*B;
yvaartused1=polyval(c, x);
p3=plot(x, yvaartused1, 'black-')
p3.LineWidth=1
%ruutfunktsioon
A(1,1)=sum(kaalud.*x.^4);
A(1,2)=sum(kaalud.*x.^3);
A(1,3)=sum(kaalud.*x.^2);
A(2,1)=sum(kaalud.*x.^3);
A(2,2)=sum(kaalud.*x.^2);
A(2,3)=sum(kaalud.*x);
A(3,1)=sum(kaalud.*x.^2);
A(3,2)=sum(kaalud.*x);
A(3,3)=sum(kaalud);
B(1,1)=sum(kaalud.*y.*x.^2);
B(2,1)=sum(kaalud.*y.*x.^1);
B(3,1)=sum(kaalud.*y);
c=inv(A)*B;
yvaartused1=polyval(c, x);
p4=plot(x, yvaartused1, 'b-')
p4.LineWidth=1
legend('algandmed','lineaarfunktsioon, kaaludeta', 'ruutfunktsioon, kaaludeta', 'lineaarfunktsioon kaaludega', 'ruutfunktsioon kaaludega', 'Location','south')
%c) Milline peaks olema raketi kiirus ajahetkel 17 sekundit? Kasutage
%erinevaid lähendamisvõimalusi.
kordajad1=polyfit(x,y,1);
polyval(kordajad1,17)
%ans = 329.4150
kordajad3=polyfit(x,y,3);
polyval(kordajad3,17)
%ans = 341.3341
polyval(c,17)
%ans = 342.7745
interp1(x,y,17,'linear') 
%ans = 336.8500
% %4. Lahendage üks oma erialane ülesanne kursuse raames õpitud numbrilisi
% %meetodeid kasutades.
% 
% %Alalisvoolu segaahela voolude leidmine kasutades Kirchhoffi seadusi
% 
%Algandmed:
R1=8;
R2=5;
R3=4;
R4=6;
R5=6;
R6=7;
R7=2;
R8=3;
i=2;
I1=4;
e2=50;
e3=30;
e4=40;
e5=50;
e6=30;
%Skeemi uurides saame järgmised seosed
%Sõlmede arv 4 ja erinevaid voole 7
%Kirchhoffi 1. seadusega 3 võrrandit ja 2. seadusega 3 võrrandit
%Leiame voolud kontuurvoolumeetodil, tuleb 3 võrrandit
%Valitud kontuuride takistused R11, R22, R33
R11=R4+R2+R5;
R22=R3+R5+R6+R7;
R33=R1+R4+R3;
%Võrrandisüsteem järgmine:
% I11*R11+I22*R5+I33*(-R4)+J*R4=e2+e5-e4
% I11*R5+I22*R22+I33*R3=e3+e5-e6
% I11*(-R4)+I22(R3)+I33*R33+J*(-R4)=e4-e1+e3
%Takistuse väärtused teada, saame lahendada determinandi, mille
%jagatis annab otsitavad voolud ja ühe elektromotoorjõu väärtuse
d=[0 R11 R5
    0 R5 R22
    1 -R5 -R3];
D=det(d)
%ans = 287
d1=[24 R11 R5
    66 R5 R22
    154 -R5 -R3];
D1=det(d1)
% ans = 48470
d2=[0 24 R5
    0 66 R22
    1 154 -R3];
D2=det(d2)
% ans = 60.0000
d3=[0 R11 24
    0 R5 66
    1 -R5 154];
D3=det(d3)
%ans = 978
%Leian voolud I2 ja I3 ning elektromotoorjõu e1
E1=D1/D
%ans = 168.8850 V
I2=D2/D
%ans = 0.2091 A
I3=D3/D
%ans = 3.4077 A