Actually I just noticed there is a fast solver in Lapack for solving Ax=b.
This is all I need - thanks!

load 'math/lapack/gesv'
   m1=: ?.4 3$30
   gesv_jlapack_ m;m1         NB. solves m * x = m1


Brian Babiak MD
https://drbabiak.com/ <http://drbabiak.com>

paypal: *http://www.paypal.me/BrianBabiakMD
<https://www.paypal.me/BrianBabiakMD>*

cash, check, debit/credit cards, paypal, apple pay, android pay, discover
and amex accepted for all payments

square: *https://squareup.com/store/brian-babiak-md
<https://squareup.com/store/brian-babiak-md>*


On Fri, Jul 28, 2017 at 10:03 AM, Brian Babiak <bdbab...@gmail.com> wrote:

> Thanks for the help everyone. LAPACK is very useful. I also appreciate the
> Rosetta code mesh. It's interesting how many choices were made the same. I
> appreciate the help on this!
>
> Brian Babiak MD
> https://drbabiak.com/ <http://drbabiak.com>
>
> paypal: *http://www.paypal.me/BrianBabiakMD
> <https://www.paypal.me/BrianBabiakMD>*
>
> cash, check, debit/credit cards, paypal, apple pay, android pay, discover
> and amex accepted for all payments
>
> square: *https://squareup.com/store/brian-babiak-md
> <https://squareup.com/store/brian-babiak-md>*
>
>
> On Fri, Jul 28, 2017 at 2:51 AM, Lippu Esa <esa.li...@varma.fi> wrote:
>
>> 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:programming-boun...@forums.jsoftware.com] On
>> Behalf Of 'Jon Hough' via Programming
>> Sent: Friday, July 28, 2017 9:17 AM
>> To: programm...@jsoftware.com
>> 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 <bdbab...@gmail.com> wrote:
>>
>>  Subject: Re: [Jprogramming] Matrix operations questions
>>  To: programm...@jsoftware.com
>>  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" <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/forum
>> s.htm
>>
>>  ----------------------------------------------------------------------
>>      For information about J forums see http://www.jsoftware.com/forum
>> s.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

Reply via email to