I can't test this because I do not know what you are using for m, and
because I get a value error on z2d when I try gesv_jlapack_ on
arbitrary values.

Still, I am curious - if gesv_jlapack_ is better than (x %. y) what
are the conditions where it's better?

Thanks,

-- 
Raul

On Fri, Jul 28, 2017 at 1:00 PM, Brian Babiak <bdbab...@gmail.com> wrote:
> 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
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to