(*ВАРИАНТ 7*)


(*Задача 1*)


(*L0[x]=(x-x_1)*(x-x_2)*(x-x_3)*(x-x_4)*(x-x_5)/(x_0-x_1)*(x_0-x_2)*(x_0-x_3)*(x_0-x_4)*(x_0-x_5);
L1[x]=(x-x_0)*(x-x_2)*(x-x_3)*(x-x_4)*(x-x_5)/(x_1-x_0)*(x1-x2)*(x1-x3)*(x1-x4)*(x1-x5);
L2[x]=(x-x_1)*(x-x_0)*(x-x_3)*(x-x_4)*(x-x_5)/(x_2-x_1)*(x2-x0)*(x2-x3)*(x2-x4)*(x2-x5);
L3[x]=(x-x_1)*(x-x_2)*(x-x_0)*(x-x_4)*(x-x_5)/(x_3-x_1)*(x3-x2)*(x3-x0)*(x3-x4)*(x3-x5);
L4[x]=(x-x_1)*(x-x_2)*(x-x_3)*(x-x_0)*(x-x_5)/(x_4-x_1)*(x4-x2)*(x4-x3)*(x4-x0)*(x4-x5);
L5[x]=(x-x_1)*(x-x_2)*(x-x_3)*(x-x_4)*(x-x_0)/(x_5-x_1)*(x5-x2)*(x5-x3)*(x5-x4)*(x5-x0);
x_0=temperatures[1],
x_1=temperatures[2],
x_2=temperatures[3],
x_3=temperatures[4],
x_4=temperatures[5],
x_5=temperatures[6];
temperatures[1]
diff[start_,end_]:=If[start==end,f[nodes[[start]]], (diff[start+1,end]-diff[start,end-1])/(nodes[[end]]-nodes[[start]])]
diff[1,3]*)


(*Декларираме функция връщаща к-ия базисен полином на Лагранж за дадени възли nodes/temperatures/*)

LagrangeBasic[k_,nodes_,x_]:=(res=1;Do[If[i≠k,res*=(x-nodes[[i+1]])/(nodes[[k+1]]-nodes[[i+1]])],{i,0,Length[nodes]-1}];Expand[res])
(*Formula for w(x) *)
(*Функцията връща полином на Лагранж за дадени възли и дадени стойности в тези възли*)
LagrangePolynomial[nodes_,values_,x_]:=(result=0;Do[result+=values[[k]]*LagrangeBasic[k-1,nodes,x],{k,1,Length[nodes]}];Expand[result])


temperatures={0,1.525,3.05,4.575,6.1};
densities={1, 0.8617, 0.7385, 0.6292, 0.5328};
p[x_]:=LagrangePolynomial[temperatures,densities,x];
(*Намираме стойността в 330 възел*)
p[3]

plot=Plot[p[x],{x,0,7}];
Show[plot]

(*Задача 2*)
(* Имаме : V1=3,V2=1,V3=1
V1+V2+V3=N+1 => N=4; Търсеният полином е от вида P(x)=ax^4+bx^3+cx^2+dx+e*)
P[x]=ax^4+bx^3+cx^2+dx+e;
Solve[{a+b+c+d+e==-2,4a+3b+2c+d==2,12a+6b+2c==-14,16a+8b+4c+2d+e==-17,81a+27b+9c+3d+e==-122},{a,b,c,d,e}]
(* Решаваме с метода на неопределените коефициенти. Намираме търсените параметри.*)

{{a->-2,b->0,c->5,d->0,e->-5}}
P[x]=-2x^4+5x^2-5

(*Тогава търсенят полином P(x)=-5+5 (x^2)-2 (x^4)*)

(*Задача 4*)

n=3;
F[x_]=Sin[x/2];
nodes={0,Pi/3,2Pi/3,Pi};
values={0,1/2,Sqrt[3]/2,1};(*Table[Sin[nodes[[k]]/2],{k,0,Pi,Pi/3}]*)
p[x_]=LagrangePolynomial[nodes,values,x];
(*Чертаем графиката на sin(x) и тази на получения полином на Лагранж в стойностите и възлите в условието.*)
Plot[{p[x], Sin[x/2]}, {x, 0,Pi}, 
	PlotStyle->{{Red, Thick}, {Blue, Thick}}]

(*За по-големия интервал се забелязва по-значително самата грешка при интерполиране.*)

Plot[{p[x], Sin[x/2]}, {x, -2Pi,2Pi}, 
	PlotStyle->{{Red, Thick}, {Blue, Thick}}]

(*Виждаме ,че в средата на интервала грешката е най-малка.*)

Plot[Abs[p[x]-Sin[x/2]], {x,0,Pi}]