Bad argument type, DET(M9)/M8(2,1) in App
01-14-2016, 11:04 AM
Post: #1
 toshk Member Posts: 195 Joined: Feb 2015
Bad argument type, DET(M9)/M8(2,1) in App
eg1. how([1,4,3,2,1,4,4])--> Error: Bad argument type, M0(B,A):=-DET(M9)/M8(2,1) cant be executed.

eg2. how([1,4,k,2,1,4,4])-> expecting [1,k,1,4] into M0 but Error: Bad argument type

Code:

#pragma mode( separator(.,;) integer(h32) )
exc();
dett();
#cas
how(den):= //"Error: Bad argument type if variable say k is insert into the vector den"
BEGIN
n:=length(den);
m:=length(den);
nx:=simplify(poly2symb(den));
IF even(n-1) THEN rw:=((n-1)/2)+1; ELSE rw:=(n)/2 END;
M0:=makemat(n,rw);
c:=0;
WHILE n>0 DO
a:=1;L1:={};c:=c+1;
IF n==0 THEN
L1(a):=coeff(nx,n);

ELSE
nl:=n-1;
FOR j FROM c TO length(den) STEP 2 DO
L1(a):=coeff(nx,x,nl); // "Error: Bad argument type"
a:=a+1;
nl:=nl-2;
END;

END;
L2(n):=length(L1);
FOR j FROM 1 TO length(L1) DO
M0(c,j):=L1(j);
END;
n:=n-1;
END;
hw:=M0;
exc();
END;
#end

#cas
exc()
BEGIN
FOR j FROM 1 TO m-2 DO
k:=j+1;
B:=j;
M8:=subMat(M0,j,1..rw,k,1..rw);
dett();
END;
END;
#end

#cas
dett()
BEGIN
//M9:=subMat(M8,1,1,2,2);
M9:=matrix(2,2);
B:=B+2;
A:=1;
FOR j FROM 2 TO rw DO
M9(1,1):=M8(1,1);
M9(2,1):=M8(2,1);
M9(1,2):=M8(1,j);
M9(2,2):=M8(2,j);
A:=A+1;
END;
END;
#end
01-15-2016, 07:43 AM
Post: #2
 cyrille de brébisson Senior Member Posts: 1,047 Joined: Dec 2013
RE: Bad argument type, DET(M9)/M8(2,1) in App
Hello,

The problem here is that the result of the -DET(M9)/M8(2,1) is not a number, it's a fraction. And this symbolic object can not be stored in a purely numerical 'Home) matrix (M0).

Your program does mix CAS and Home, which, despite being ok in lots of cases, can sometimes lead to strange things.

My #1 advice would be to use CAS variables rather than home variables for your CAS programs.
If you do want to store the data in a home variables, add an evalf around the -DET(M9)/M8(2,1) code: M0(B,A):=evalf(-DET(M9)/M8(2,1));
and it should work.

cyrille

Although I work for the HP calculator group, the views and opinions I post here are my own. I do not speak for HP.
01-15-2016, 10:48 AM
Post: #3
 toshk Member Posts: 195 Joined: Feb 2015
RE: Bad argument type, DET(M9)/M8(2,1) in App
(01-15-2016 07:43 AM)cyrille de brébisson Wrote:  Hello,

The problem here is that the result of the -DET(M9)/M8(2,1) is not a number, it's a fraction. And this symbolic object can not be stored in a purely numerical 'Home) matrix (M0).

Your program does mix CAS and Home, which, despite being ok in lots of cases, can sometimes lead to strange things.

My #1 advice would be to use CAS variables rather than home variables for your CAS programs.
If you do want to store the data in a home variables, add an evalf around the -DET(M9)/M8(2,1) code: M0(B,A):=evalf(-DET(M9)/M8(2,1));
and it should work.

cyrille
..Thanks Cyrille,
there is problem of defining a especially matrix under CAS variables....say , M25:=makemat(n,rw);
FOR j FROM 1 TO length(L1) DO
M25(c,j):=L1(j);
END;
Prime seems to have a hard time defining M25 as a matrix, instead it defines M25 as a function(M25(c,j)). hence i am forced to used Home variables M0 instead which would not work on how([1,4,k,2,1,4,4]) containing a variable k for symbolic manipulation under CAS.
01-15-2016, 05:13 PM (This post was last modified: 01-15-2016 05:14 PM by Han.)
Post: #4
 Han Senior Member Posts: 1,882 Joined: Dec 2013
RE: Bad argument type, DET(M9)/M8(2,1) in App
(01-15-2016 10:48 AM)toshk Wrote:
(01-15-2016 07:43 AM)cyrille de brébisson Wrote:  Hello,

The problem here is that the result of the -DET(M9)/M8(2,1) is not a number, it's a fraction. And this symbolic object can not be stored in a purely numerical 'Home) matrix (M0).

Your program does mix CAS and Home, which, despite being ok in lots of cases, can sometimes lead to strange things.

My #1 advice would be to use CAS variables rather than home variables for your CAS programs.
If you do want to store the data in a home variables, add an evalf around the -DET(M9)/M8(2,1) code: M0(B,A):=evalf(-DET(M9)/M8(2,1));
and it should work.

cyrille
..Thanks Cyrille,
there is problem of defining a especially matrix under CAS variables....say , M25:=makemat(n,rw);
FOR j FROM 1 TO length(L1) DO
M25(c,j):=L1(j);
END;
Prime seems to have a hard time defining M25 as a matrix, instead it defines M25 as a function(M25(c,j)). hence i am forced to used Home variables M0 instead which would not work on how([1,4,k,2,1,4,4]) containing a variable k for symbolic manipulation under CAS.

Use M25[c,j]:=L1(j) instead. From a syntax point of view, no one would know whether you are creating a CAS function named M25 or if you are referring to the cell of a matrix named M25 because the syntax looks exactly the same. Therefore, to avoid ambiguity, use the square brackets for matrices since functions cannot be defined using square brackets.

Graph 3D | QPI | SolveSys
01-16-2016, 06:54 AM
Post: #5
 toshk Member Posts: 195 Joined: Feb 2015
RE: Bad argument type, DET(M9)/M8(2,1) in App
(01-15-2016 05:13 PM)Han Wrote:
(01-15-2016 10:48 AM)toshk Wrote:  ..Thanks Cyrille,
there is problem of defining a especially matrix under CAS variables....say , M25:=makemat(n,rw);
FOR j FROM 1 TO length(L1) DO
M25(c,j):=L1(j);
END;
Prime seems to have a hard time defining M25 as a matrix, instead it defines M25 as a function(M25(c,j)). hence i am forced to used Home variables M0 instead which would not work on how([1,4,k,2,1,4,4]) containing a variable k for symbolic manipulation under CAS.

Use M25[c,j]:=L1(j) instead. From a syntax point of view, no one would know whether you are creating a CAS function named M25 or if you are referring to the cell of a matrix named M25 because the syntax looks exactly the same. Therefore, to avoid ambiguity, use the square brackets for matrices since functions cannot be defined using square brackets.
....thanks Han!!
 « Next Oldest | Next Newest »

User(s) browsing this thread: 1 Guest(s)