From: Jan B. <bro...@gm...> - 2014-07-08 19:05:23
|
Hi, below I tried to define a memoising matrix function but without success. However I found an elegant solution see below (%i1) f[x]:=(X[1,1]:cos(x),X[2,1]:cos(x)*2,X[3,1]:sin(x),genmatrix(X,3,1)); (%o1) f := (X : cos(x), X : cos(x) 2, X : sin(x), x 1, 1 2, 1 3, 1 genmatrix(X, 3, 1)) (%i2) numer:true; (%o2) true (%i3) Y:expand(f[3]+matrix([2],[1],[4])); [ 1.010007503399555 ] [ ] (%o3) [ - 0.9799849932008908 ] [ ] [ 4.141120008059867 ] My question is: can I do the same thing but without using the expand function (e.g. are there some variables that I can set to true that work)? Begin forwarded message: > From: Jan Brosius <bro...@gm...> > Subject: matrix problem > Date: 8 Jul 2014 18:17:00 GMT+2 > To: "max...@li..." <max...@li...> > > Hi, > > I can define > > genmatrix(A[phi],3,1} > > but how do I assign a value to e.g. A[phi][2,1]. See below the maxima output > > (%i1) genmatrix(A[phi],3,1); > [ A (1, 1) ] > [ phi ] > [ ] > (%o1) [ A (2, 1) ] > [ phi ] > [ ] > [ A (3, 1) ] > [ phi ] > (%i2) A[phi][2,1]:=cos(phi); > > define: argument cannot be an atom or a subscripted memoizing function; found: > (A ) > phi > 2, 1 > -- an error. To debug this try: debugmode(true); > > (%i3) A[phi][2,1]:cos(phi); > > assignment: cannot assign to (A ) > phi > 2, 1 > -- an error. To debug this try: debugmode(true); > > thx for any help > Jan |