mat2sum {lazy.symbolic} | R Documentation |
Express the i-j element of an Matrix Expression using Summation Operators
mat2sum( exp, row = "i", col = "j", root = "s", simple = 1, expand = 1, print = 0, debug = 0 )
exp |
An full symbplic matrix expression |
row |
row subscript name |
col |
column subscript name |
root |
root of the intermediate subscripts |
simple |
= 0 to use full spec: subscript, from , to |
expand |
= 0 not to expand (A+B) or (A*B) etc. |
print |
= 1 to print the result |
debug |
= 1 to print the intermediate result |
The summation of an expression over subscript k is expressed as
s( exp, {k} )
or
s( exp, {k, from, to} )
The lowercase object is treated as a column vector. (See examples below.)
When row="i" and col="j":
mat2sum( "A %*% B" ) -> s(A[i,s1]*B[s1,j], {s1}) mat2sum( "A %*% B", root="z" ) -> s(A[ij,z1]*B[z1,j], {z1}) mat2sum( "A %*% B", simple=0 ) -> s(A[i,s1]*B[s1,j], {s1,1,ncol(A)}) mat2sum( "t(A) %*% B" ) -> s(A[s1,i]*B[s1,j], {s1}) mat2sum( "A %*% t(B)" ) -> s(A[i,s1]*B[j,s1], {s1}) mat2sum( "A %*%Diag(B)%*%C" ) -> s(A[i,s1]*B[s1,s1]*C[s1,j],{s1}) mat2sum( "A %*% b" ) -> s(A[i,s1]*b[s1],{s1}) mat2sum( "t(a) %*% B" ) -> s(a[s1]*B[s1,j],{s1})
Use paremtheses to mark Hadamar and Kronecker products.
The resulting summation expression can be expanded and evaluated by
sumEval function. (lazy.symbolic2 package is required.)
mat2sum( "A %*% B" ) mat2sum( "A %*% B", root="z" ) mat2sum( "A %*% B", simple=0 ) mat2sum( "t(A) %*% B" ) mat2sum( "A %*% t(B)" ) mat2sum( "A %*%Diag(B)%*%C" ) mat2sum( "A %*% b" ) mat2sum( "t(a) %*% B" ) mat2sum( "a %*% t(b)" ) mat2sum( "A%*%(B+C)" ) mat2sum( "A%*%(B+C)", expand=0 ) exp="t(A)%*%t(B)%*%C - D%*%t(E)" mat2sum( exp ) exp="A%*%diag(B)%*%C - diag(D)%*%E%*%diag(F)%*%G + diag(H)" mat2sum( exp ) sexp0=mat2sum( "A%*%(B+C)", expand=0 ) sexp=mat2sum( "A%*%(B+C)" ) sexpe=Expand(c(sexp0,sexp)) Print(sexp0,sexp,sexpe)