matrix inverse (monad %.) is seldom used in practice. Try use dyad %. which uses gaussian elimination instead of matrix inverse.
Пт, 28 июл 2017, Brian Babiak написал(а): > Very helpful! At least I can use +/ .* for an iterative solution to Lp=I, > solving for p. But why can’t I always get an inverse? (Even with non > -infinite resistances, I get domain errors.) > > a=.L 2 2;3 1;1 4 > a > 4 _2 0 0 0 _2 0 0 0 0 0 0 0 0 0 0 0 > 0 0 0 0 0 0 0 0 > _2 8 _2 0 0 _2 _2 0 0 0 0 0 0 0 0 0 0 > 0 0 0 0 0 0 0 0 > 0 _2 8 _2 0 0 _2 _2 0 0 0 0 0 0 0 0 0 > 0 0 0 0 0 0 0 0 > 0 0 _2 8 _2 0 0 _2 _2 0 0 0 0 0 0 0 0 > 0 0 0 0 0 0 0 0 > 0 0 0 _2 1004 0 0 0 _2 _1000 0 0 0 0 0 0 0 > 0 0 0 0 0 0 0 0 > _2 _2 0 0 0 8 _2 0 0 0 _2 0 0 0 0 0 0 > 0 0 0 0 0 0 0 0 > 0 _2 _2 0 0 _2 12 _2 0 0 _2 _2 0 0 0 0 0 > 0 0 0 0 0 0 0 0 > 0 0 _2 _2 0 0 _2 1010 _2 0 0 _2 _1000 0 0 0 0 > 0 0 0 0 0 0 0 0 > 0 0 0 _2 _2 0 0 _2 2008 _1000 0 0 _1000 _2 0 0 0 > 0 0 0 0 0 0 0 0 > 0 0 0 0 _1000 0 0 0 _1000 4000 0 0 0 _1000 _1000 0 0 > 0 0 0 0 0 0 0 0 > 0 0 0 0 0 _2 _2 0 0 0 8 _2 0 0 0 _2 0 > 0 0 0 0 0 0 0 0 > 0 0 0 0 0 0 _2 _2 0 0 _2 1009 _1000 0 0 _2 _1 > 0 0 0 0 0 0 0 0 > 0 0 0 0 0 0 0 _1000 _1000 0 0 _1000 5999 _1000 0 0 _999 > _1000 0 0 0 0 0 0 0 > 0 0 0 0 0 0 0 0 _2 _1000 0 0 _1000 2008 _2 0 0 > _2 _2 0 0 0 0 0 0 > 0 0 0 0 0 0 0 0 0 _1000 0 0 0 _2 1006 0 0 > 0 _2 _2 0 0 0 0 0 > 0 0 0 0 0 0 0 0 0 0 _2 _2 0 0 0 7 _1 > 0 0 0 _2 0 0 0 0 > 0 0 0 0 0 0 0 0 0 0 0 _1 _999 0 0 _1 1004 > _1 0 0 _1 _1 0 0 0 > 0 0 0 0 0 0 0 0 0 0 0 0 _1000 _2 0 0 _1 > 1009 _2 0 0 _2 _2 0 0 > 0 0 0 0 0 0 0 0 0 0 0 0 0 _2 _2 0 0 > _2 12 _2 0 0 _2 _2 0 > 0 0 0 0 0 0 0 0 0 0 0 0 0 0 _2 0 0 > 0 _2 8 0 0 0 _2 _2 > 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 _2 _1 > 0 0 0 5 _2 0 0 0 > 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 _1 > _2 0 0 _2 7 _2 0 0 > 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 > _2 _2 0 0 _2 8 _2 0 > 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 > 0 _2 _2 0 0 _2 8 _2 > 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 > 0 0 _2 0 0 0 _2 4 > -/ . * a > _8.08478e26 > %. a > |domain error > | %.a > > > Brian Babiak MD > https://drbabiak.com > > 167 Ridgecrest Rd. > Ithaca NY 14850 – 9449 > (607) 379 – 1335 > fax (866) 813 – 4158 > > Payment links: > > http://PayPal.Me/BrianBabiakMD http://mkt.com/brian-babiak-md > > > On 7/28/17, 1:03 AM, "Programming on behalf of 'Jon Hough' via Programming" > <programming-boun...@forums.jsoftware.com on behalf of > programm...@jsoftware.com> wrote: > > Matrix product is +/ .* (dyadic) > determinant is -/ .* (monadic) > > see: http://code.jsoftware.com/wiki/Vocabulary/dot > > The matrix g is singular (since the rows are identical) and has no > inverse. Hence %. gives an error. > > i.e. > > (-/ .*) g > > is zero. > > Hope that helps. > > Jon > > -------------------------------------------- > On Fri, 7/28/17, Brian Babiak <bdbab...@gmail.com> wrote: > > Subject: [Jprogramming] Matrix operations questions > To: programm...@jsoftware.com > Date: Friday, July 28, 2017, 1:56 PM > > I’m working on a project to compute the > distance resistance between two vertices in an electronic > grid. I will share that later. But I am having domain error > issues with matrix inverse and matrix product operations. > See the following: > > > > f=.2 2$3 4 1 4 > > g=.2 2$i.2 > > h=.2 2$_3 4 2 _3 > > > > 2 3$'f';'g';'h';f;g;h > > ┌───┬───┬─────┐ > > │f │g │h │ > > ├───┼───┼─────┤ > > │3 4│0 1│_3 4│ > > │1 4│0 1│ 2 _3│ > > └───┴───┴─────� > > > > 2 > 3$'$f';'$g';'$h';($f);($g);($h) > > ┌───┬───┬───┐ > > │$f │$g │$h │ > > ├───┼───┼───┤ > > │2 2│2 2│2 2│ > > └───┴───┴───� > > > > f . g > > |domain error > > | f .g > > f . h > > |domain error > > | f .h > > %. f > > 0.5 _0.5 > > _0.125 0.375 > > %. g > > |domain error > > | %.g > > f . f > > |domain error > > | f .f > > g . g > > |domain error > > | g .g > > h . h > > |domain error > > | h .h > > h * g > > 0 4 > > 0 _3 > > > > The answers to all these operations are > simple. Why are there these domain errors? > > > > Here is the project this issue is > coming up in, although I believe it is more basic than > that. > > > > vw=: (,@(((_ > 0)$~#@:])`]`(1$~,~@:}.@[)}))`(,@(((0 > _)$~#@:])`]`(1$~,~@:}.@[)}))@.(<:@:({.@:[)) > > NB. (moveno boardsz) nw (x1 y1;x2 y2; > etc) > > NB. Gives vertex weights for a move > list of a game as vector > > > > > > rows=: <"1 > > cols=: <"1@|: > > diags=: (-.((0;_1)&{))@:(</.) > > a=: 3 3$i.9 > > conndiag=: 3 : 0 > > r=. r,.|.r [ r=. >0{z [ i=. 1 [ n=. > #z [ z=. diags y > > while. i<n do. > > col=. >i{z > > i=. >:i > > adds=. >2<\col > > r=. r,adds > > r=. r,(|."1 adds) > > end. > > ) > > > > connsq=: 3 : 0 > > r=. 0 2$0 [ i=. 0 [ n=. #z [ z=. y > > while. i<n do. > > col=. >i{z > > i=. >:i > > adds=. >2<\col > > r=. r,adds > > r=. r,(|."1 adds) > > end. > > ) > > connrws=: connsq@:rows > > conncls=: connsq@:cols > > > > edges=: 3 : 0 NB. takes board size as > argument > > a=. (2$bs)$i.*:bs [ bs=. y > > r=. (connrws a),(conncls a) > > r=. r,conndiag a > > ) > > > > BOARDSZ=: 5 > > EDGES=: edges BOARDSZ > > VPLYR=: 1 NB. whether the vertical > player is first or second > > > > A=: 3 : 0 > > mat=. (2$netsz)$0 [ netsz=. *:BOARDSZ [ > j=. 0 [ i=. 0 [ arg=. VPLYR,BOARDSZ > > if. y=0 do. pcweights=. netsz$1 else. > pcweights=. arg vw y end. > > while. i<netsz do. > > while. j<netsz do. > > mat=. (0{(((1 2$i,j) e. > EDGES)*((i{pcweights)+j{pcweights))) (<(i,j))}mat > > j=. >:j > > end. > > j=. 0 > > i=. >:i > > end. > > mat > > ) > > > > D=: 3 : 0 > > diag=. (2$netsz)$ 1,netsz#0 [ netsz=. > *:BOARDSZ [ colsum=. +/y [ y=. A y > > r=. colsum*diag > > ) > > > > L=: D-A NB. the Laplacian > > > > NB. %. Laplacian or . (dot) for > Laplacian times current gives domain errors > > > > Any help would be appreciated! > > > > Brian Babiak MD > > https://drbabiak.com > > > > > > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm > > > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm -- regards, ==================================================== GPG key 1024D/4434BAB3 2008-08-24 gpg --keyserver subkeys.pgp.net --recv-keys 4434BAB3 gpg --keyserver subkeys.pgp.net --armor --export 4434BAB3 ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm