restart:with(linalg):coeffmatrix := proc(L,d) matrix(nops(L),d+1,[seq(seq(L[ii]^jj,jj=0..d),ii=1..nops(L))]): end:deg := 2; Points := [[1,3],[-1,13],[2,1],[-2,33]];
print(cat(seq(`~`,ii=1..50)));
A := coeffmatrix([seq(Points[ii][1],ii=1..nops(Points))],deg):
b:=matrix(4,1,[seq(Points[ii][2],ii=1..nops(Points))]):
A=eval(A), b=eval(b);
print(cat(seq(`~`,ii=1..50)));
At := transpose(A);
M := evalm( evalm(At &* A)^(-1) &* At ):
Mb:= evalm( M &* b ):
"(At*A)^(-1)*At" = eval(M);
"(At*A)^(-1)*At*b" = eval(Mb);
print(cat(seq(`~`,ii=1..50)));
f := t -> eval(sum(Mb[ii+1,1]*t^ii,ii=0..deg)):
evaln(f(t)) = f(t);
plot([Points,f(x)],x=-3..3,y=0..40,style=[point,line],colour=black);
deg := 3; Points := [[1,3],[-1,13],[2,1],[-2,33]];
print(cat(seq(`~`,ii=1..50)));
A := coeffmatrix([seq(Points[ii][1],ii=1..nops(Points))],deg):
b:=matrix(4,1,[seq(Points[ii][2],ii=1..nops(Points))]):
A=eval(A), b=eval(b);
print(cat(seq(`~`,ii=1..50)));
At := transpose(A);
M := evalm( evalm(At &* A)^(-1) &* At ):
Mb:= evalm( M &* b ):
"(At*A)^(-1)*At" = eval(M);
"(At*A)^(-1)*At*b" = eval(Mb);
print(cat(seq(`~`,ii=1..50)));
f := t -> eval(sum(Mb[ii+1,1]*t^ii,ii=0..deg)):
evaln(f(t)) = f(t);
plot([Points,f(x)],x=-3..3,y=0..40,style=[point,line],colour=black);
deg := 2; Points := [[1,4],[-1,5],[2,31],[-2,15]];
print(cat(seq(`~`,ii=1..50)));
A := coeffmatrix([seq(Points[ii][1],ii=1..nops(Points))],deg):
b:=matrix(4,1,[seq(Points[ii][2],ii=1..nops(Points))]):
A=eval(A), b=eval(b);
print(cat(seq(`~`,ii=1..50)));
At := transpose(A);
M := evalm( evalm(At &* A)^(-1) &* At ):
Mb:= evalm( M &* b ):
"(At*A)^(-1)*At" = eval(M);
"(At*A)^(-1)*At*b" = eval(Mb);
print(cat(seq(`~`,ii=1..50)));
f := t -> eval(sum(Mb[ii+1,1]*t^ii,ii=0..deg)):
evaln(f(t)) = f(t);
plot([Points,f(x)],x=-3..3,y=-10..40,style=[point,line],colour=black);deg := 3; Points := [[1,4],[-1,5],[2,31],[-2,15]];
print(cat(seq(`~`,ii=1..50)));
A := coeffmatrix([seq(Points[ii][1],ii=1..nops(Points))],deg):
b:=matrix(4,1,[seq(Points[ii][2],ii=1..nops(Points))]):
A=eval(A), b=eval(b);
print(cat(seq(`~`,ii=1..50)));
At := transpose(A);
M := evalm( evalm(At &* A)^(-1) &* At ):
Mb:= evalm( M &* b ):
"(At*A)^(-1)*At" = eval(M);
"(At*A)^(-1)*At*b" = eval(Mb);
print(cat(seq(`~`,ii=1..50)));
f := t -> eval(sum(Mb[ii+1,1]*t^ii,ii=0..deg)):
evaln(f(t)) = f(t);
plot([Points,f(x)],x=-3..3,y=-10..40,style=[point,line],colour=black);