Question: Problem when call procedure(Thanks in advance)

Hi:

I have a problem in calling a procedure. The problem that the code is working perfectly when I use it without precedure, but when I wrap it with a procedure and call the procedure I get like this problem   

Error, (in Chisqr1) invalid input: `convert/Matrix` expects its 1st argument, M, to be of type {Array, Matrix, Vector, array, list}, but received Concatenate(2, Determinant(Transpose(Jacobian([(16759.00586-A-C)^2+(19630.75977-A-4*B-C*cos(32)-Ds*sin(32))^2+(15190.14551-A-8*B-C*cos(64)-Ds*sin(64))^2+(11532.44141-A-12*B-C*cos(96)-Ds*sin(96))^2+(6447.006836-A-16*B-C*cos(128)-Ds*sin(128))^2+(7827.111816-A-20*B-C*cos(160)-Ds*sin(160))^2+(3531.188965-A-24*B-C*cos(192)-Ds*sin(192))^2+(5167.17334-A-28*B-C*cos(224)-Ds*sin(224))^2+(10127.59277-A-32*B-C*cos(256)-Ds*sin(256))^2+(11626.91504-A-36*B-C*cos(288)-Ds*sin(288))^2+(5197.712402-A-40*B-C*cos(320)-...

 

The code is calculating in some how Chisquare and I use 2d math : and the code is 

restart

Chisqr1 := proc () local w, x, y, S, A, B, C, Ds, j, Syss, X, altern1, altern2, altern3, altern4, EqCo1, EqCo2, EqCo3, EqCo4, M, XX, M1, M2, MM, ChiSqr;

w := 8;

x := Vector([0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48]);

y := Vector([16759.00586, 19630.75977, 15190.14551, 11532.44141, 6447.006836, 7827.111816, 3531.188965, 5167.17334, 10127.59277, 11626.91504, 5197.712402, 6539.370605, 6164.602539]);

S := 0;

for j to 13 do S := S+(y[j]-A-x[j]*B-C*cos(w*x[j])-Ds*sin(w*x[j]))^2 end do;

with(Student[MultivariateCalculus]); Syss := Jacobian([S], [A, B, C, Ds]);

with(LinearAlgebra);

X := Transpose(Syss);

altern1 := simplify(Determinant(X[1]));

altern2 := simplify(Determinant(X[2]));

altern3 := simplify(Determinant(X[3]));

altern4 := simplify(Determinant(X[4]));

EqCo1 := coeffs(altern1, [A, B, C, Ds]);

EqCo2 := coeffs(altern2, [A, B, C, Ds]);

EqCo3 := coeffs(altern3, [A, B, C, Ds]);

EqCo4 := coeffs(altern4, [A, B, C, Ds]);

with(ArrayTools);

M := Concatenate(2, EqCo1, EqCo2, EqCo3, EqCo4);

XX := convert(M, Matrix);

with(linalg);

M1 := Concatenate(1, Concatenate(1, col(XX, 1 .. 5)), Concatenate(1, col(XX, 6 .. 10)), Concatenate(1, col(XX, 11 .. 15)), Concatenate(1, col(XX, 16 .. 20)));

MM := swapcol(M1, 1, 5); M2 := gaussjord(MM);

A := M2[1, 5];

B := M2[2, 5];

C := M2[3, 5];

Ds := M2[4, 5];

for j to 13 do S := S+(y[j]-A-x[j]*B-C*cos(w*x[j])-Ds*sin(w*x[j]))^2 end do;

ChiSqr := evalf(S);

return(ChiSqr) end proc;

Chisqr1(); # Call procedure

Please Wait...