I think too. Here is the smallest eigenvalue of a:
require 'math/lapack/geev'
ev=.geev_jlapack_ a
{.sort|>1{ev
6.83897e_14
Esa
-----Original Message-----
From: Programming [mailto:[email protected]] On Behalf
Of 'Jon Hough' via Programming
Sent: Friday, July 28, 2017 9:17 AM
To: [email protected]
Subject: Re: [Jprogramming] Matrix operations questions
I think a is singular. You should use LAPACK to decompose it perhaps.
see: http://code.jsoftware.com/wiki/Studio/LAPACK
--------------------------------------------
On Fri, 7/28/17, Brian Babiak <[email protected]> wrote:
Subject: Re: [Jprogramming] Matrix operations questions
To: [email protected]
Date: Friday, July 28, 2017, 2:33 PM
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" <[email protected]
on behalf of [email protected]>
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 <[email protected]>
wrote:
Subject: [Jprogramming] Matrix operations questions
To: [email protected]
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
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm