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

Reply via email to