[Jprogramming] Matrix equation

Mike Day mike_liz.day at tiscali.co.uk
Wed Aug 20 23:27:17 UTC 2014


Raul's right of course.

Although Wx is indeed a scalar,  Nc and so NcI are 1x1 matrices.
NcI acts like a scalar,  but if we replace NcI by scalar nci (say),  then
    CT mp NcI mp C
may be replaced by CT mp nci * C ,  or CT mp C * nci , etc.

Mike

On 20/08/2014 15:42, Mike Day wrote:
> 0. Your J expression for Wx looks wrong to me.
> If you want to get
>
>    Wx = (1-(q0^2)-(q1^2)-(q2^2)-(q3^2))%2 in conventional arithmetic 
> notation
> then you need
>    Wx=:(1-(q0^2)+(q1^2)+(q2^2)+(q3^2))%2
> or
>    Wx=:(1-+/*:q)%2      NB. Your J-expression is effectively (1- -/ 
> *:q)%2
> or
>    [Wx=: -: -. +/*:,C   NB. according to your definition of C
>
> 0
> Maybe q = (q0, q1, q2, q3) is not always so simple.
> Whatever its numerical value, Wx is scalar,  and might perhaps be 
> regarded as 0.5 * (1 - C mp CT) .
>
>
> 1.  Nc = C.Nb.CT is scalar, and therefore NcI is also scalar.
>
>
> 2.  You don't state the vector l,  so I can only use your stated value 
> for W,  and I've used your stated value for B;
> both of these were given to 3 places of decimals.
>
>
> 3. A suitable J expression allowing for NbI as an overall factor, 
> since it's a left multiplier in both parts of
>
>    (NbI-NbI*CT*NcI*C*NbI)*W + (NbI*CT*NcI*Wx) (conventional notation)
>
> appears to be
>
>    dX=:NbI mp((I-CT mp NcI mp C mp NbI)mp W)+CT mp NcI mp Wx NB. J 
> notation
>
> where
>    I =: =i.#NbI    NB. identity matrix
>
> Using my value of 0 for Wx:
>
> 25j20": dX=:NbI mp((I -CT mp NcI mp C mp NbI)mp W)+CT mp NcI mp Wx
>
> _0.33362737497592021000
>
> _0.21892578452135747000
>
> _0.10546486185920967000
>
> _0.24545356011509956000
>
> _0.10446141957003618000
>
>
> Using your value of 0.5 for Wx:
>
> 25j20": dX=:NbI mp((I -CT mp NcI mp C mp NbI)mp W)+CT mp NcI mp %2
>
> _0.33362725373747026000
>
> _0.21892575956391414000
>
> _0.10546489384744806000
>
> _0.24545356063333446000
>
> _0.10446153412014780000
>
>
> Evidently CT mp NcI is numerically small compared to the expression 
> involving W.
>
>
> Please note that scalar part-expressions could be moved around, and 
> they may be applied with a simple * verb.
> I haven't done that here.
>
>
> Mike
>
> On 20/08/2014 08:43, "Papp Erik Tamás" wrote:
>> Dear Forum,
>>
>> Can somebody help me to solve the folloving matrix equation?
>>
>>         pps=:9!:11   NB. set print precision
>>     pps 20
>>     mp=: +/ . *         NB. Matrix product
>> NB.=======================================================================================
>>     NB. The following matrix equation have to be solve
>>     NB. dX=(NbI-NbI*CT*NcI*C*NbI)*W+NbI*CT*NcI*Wx
>> NB.=======================================================================================
>>     NB. BT = B transpose
>>         BT=:|:B
>>     NB. Nb = BT*B
>>         Nb=:BT mp B
>>     NB. NbI = Nb inverse
>>         NbI=:%.Nb
>>     NB. W = BT * l
>>         W=: BT mp l
>>     NB. C = [q0 q1 q2 q3 0]
>>         C=:1 5$q0,q1,q2,q3,0
>>     NB. CT = C transpose
>>         CT=:|:C
>>     NB. Wx = (1-(q0^2)-(q1^2)-(q2^2)-(q3^2))%2
>>         Wx=:(1-(q0^2)-(q1^2)-(q2^2)-(q3^2))%2
>>     NB. Nc = C * Nb * CT
>>         Nc=:C mp Nb mp CT
>>     NB. NcI = Nc inverse
>>         NcI=:%.Nc
>> NB.=======================================================================================
>>         ]Nc=:C mp Nb mp CT
>> 5736.3999999999996
>>             ]Nc=:(C mp Nb) mp CT
>> 5736.3999999999996
>>             ]Nc=:C mp (Nb mp CT)
>> 5736.3999999999996
>> NB.=======================================================================================
>>     12j3":B
>>         4.700       4.700      20.700       4.700      _3.300
>>        _4.700     _20.700     _11.300     _27.300      _8.000
>>        16.000       6.600      22.600       0.000       8.000
>>         2.200      12.200       8.200      _7.800       4.200
>>        _2.200     _18.200       6.200      _9.800       2.000
>>         6.000       1.600      _2.400      10.000       8.000
>>         9.200      _0.800      15.200      19.200       1.200
>>        _9.200      _5.200      _6.800      _2.800      _8.000
>>         6.000     _12.400       3.600     _10.000      _2.000
>>       _10.300      _0.300     _24.300     _20.300       1.700
>>        10.300      14.300      13.700      17.700      12.000
>>       _14.000       6.600     _17.400      10.000      _2.000
>>        _5.800     _15.800     _19.800       4.200      _3.800
>>         5.800      29.800      _1.800      22.200       2.000
>>       _14.000      _2.400      _6.400     _10.000     _12.000
>>         $B
>> 15 5
>>         12j3":BT
>>         4.700      _4.700      16.000       2.200 _2.200       
>> 6.000       9.200      _9.200       6.000 _10.300      10.300     
>> _14.000      _5.800       5.800 _14.000
>>         4.700     _20.700       6.600      12.200 _18.200       
>> 1.600      _0.800      _5.200     _12.400 _0.300      14.300       
>> 6.600     _15.800      29.800 _2.400
>>        20.700     _11.300      22.600       8.200 6.200      
>> _2.400      15.200      _6.800       3.600 _24.300      13.700     
>> _17.400     _19.800      _1.800 _6.400
>>         4.700     _27.300       0.000      _7.800 _9.800      
>> 10.000      19.200      _2.800     _10.000 _20.300      17.700      
>> 10.000       4.200      22.200 _10.000
>>        _3.300      _8.000       8.000       4.200 2.000       
>> 8.000       1.200      _8.000      _2.000 1.700      12.000      
>> _2.000      _3.800       2.000 _12.000
>>         $BT
>> 5 15
>>         12j3":Nb
>>      1222.600     623.600    1555.000     853.000     611.300
>>       623.600    2549.800     805.200    1754.000     602.300
>>      1555.000     805.200    2985.800    1034.600     602.300
>>       853.000    1754.000    1034.600    2936.600     602.300
>>       611.300     602.300     602.300     602.300     607.300
>>         $Nb
>> 5 5
>>         12j6":NbI
>>      0.004533    0.000333   _0.001772   _0.000311   _0.002826
>>      0.000333    0.000749   _0.000128   _0.000382   _0.000573
>>     _0.001772   _0.000128    0.001127    0.000039    0.000754
>>     _0.000311   _0.000382    0.000039    0.000642    0.000016
>>     _0.002826   _0.000573    0.000754    0.000016    0.004295
>>         $NbI
>> 5 5
>>         12j3":W
>>      _981.642
>>     _1344.633
>>     _1326.828
>>     _1561.409
>>      _610.603
>>         $W
>> 5 1
>>         12j3":C
>>         0.500       0.500       0.500       0.500       0.000
>>         $C
>> 1 5
>>         12j3":CT
>>         0.500
>>         0.500
>>         0.500
>>         0.500
>>         0.000
>>         $CT
>> 5 1
>>         12j3":Wx
>>         0.500
>>         $Wx
>> 1
>>         12j3":Nc
>>      5736.400
>>         $Nc
>> 1 1
>>         NcI
>> 0.00017432536085349698
>>         $NcI
>> 1 1
>> NB.=======================================================================================
>>     NB. dX=(NbI-NbI*CT*NcI*C*NbI)*W+NbI*CT*NcI*Wx
>>     NB. dX=(NbI-NbI mp CT mp NcI mp C mp NbI) mp W+NbI mp CT mp NcI 
>> mp Wx
>> NB.=======================================================================================
>>     NB. solution step by step
>>     dX=:(NbI-NbI mp CT mp NcI mp C mp NbI) mp W+NbI mp CT mp NcI mp Wx
>
>>     NB. dX=f+i
>>     ]a=:NbI mp CT
>>    0.0013909444659834052
>>   0.00028633175856724745
>> _0.00036699466085721166
>>   _5.9456044547029092e_6
>>   _0.0013142105194193007
>>         ]b=:a mp NcI
>>   2.4247689595973174e_7
>>    4.991488713605179e_8
>> _6.3976476685240161e_8
>> _1.0364696420582438e_9
>>   _2.291002230352313e_7
>>         ]c=:b mp C
>>    1.2123844797986587e_7   1.2123844797986587e_7 
>> 1.2123844797986587e_7   1.2123844797986587e_7 0
>>    2.4957443568025895e_8   2.4957443568025895e_8 
>> 2.4957443568025895e_8   2.4957443568025895e_8 0
>>   _3.1988238342620081e_8  _3.1988238342620081e_8 
>> _3.1988238342620081e_8  _3.1988238342620081e_8 0
>> _5.1823482102912192e_10 _5.1823482102912192e_10 
>> _5.1823482102912192e_10 _5.1823482102912192e_10 0
>>   _1.1455011151761565e_7  _1.1455011151761565e_7 
>> _1.1455011151761565e_7  _1.1455011151761565e_7 0
>>         ]d=:c mp NbI
>>   3.3727189656402491e_10   6.942883603207513e_11 
>> _8.8987726198450762e_11  _1.441671712780783e_12 _3.1866568738641721e_10
>>   6.9428836032077935e_11  1.4292217412350897e_11 
>> _1.8318497076221252e_11 _2.9677417531211663e_13 _6.5598669749826067e_11
>> _8.8987726198451706e_11 _1.8318497076220693e_11 
>> 2.3479025363938921e_11  3.8037882477597397e_13 8.4078558655125846e_11
>> _1.4416717127807238e_12 _2.9677417531209235e_13 
>> 3.8037882477595918e_13  6.1624385209859802e_15 1.3621393066516946e_12
>> _3.1866568738642073e_10 _6.5598669749824141e_11 
>> 8.4078558655125924e_11  1.3621393066517597e_12 3.0108592311420753e_10
>>         ]e=:NbI - d
>>    0.0045328344164105271  0.00033293998348083668 
>> _0.0017724766597981138 _0.00031140912439777367 _0.0028261600905336174
>>   0.00033293998348086812  0.00074882329681384913 
>> _0.00012756882532661765 _0.00038153100293938686 _0.00057288268896462887
>>   _0.0017724766597981279 _0.00012756882532660762 
>> 0.0011266169145724698   3.9439332284661476e_5 0.00075421374633090137
>> _0.00031140912439777405 _0.00038153100293938501 
>> 3.9439332284660466e_5  0.00064160958749499744 1.6408293152415618e_5
>>   _0.0028261600905336603 _0.00057288268896460545 
>> 0.00075421374633090712   1.6408293152416783e_5 0.0042952959863754138
>>         ]f=:e mp W
>> _0.33363012653942103
>> _0.21892822215417146
>> _0.10546286817415873
>> _0.24545184018518121
>>   _0.1044605740131157
>>         ]g=:NbI mp CT
>>    0.0013909444659834052
>>   0.00028633175856724745
>> _0.00036699466085721166
>>   _5.9456044547029092e_6
>>   _0.0013142105194193007
>>         ]h=:g mp NcI
>>   2.4247689595973174e_7
>>    4.991488713605179e_8
>> _6.3976476685240161e_8
>> _1.0364696420582438e_9
>>   _2.291002230352313e_7
>>         ]i=:g mp Wx
>> 0.00069547223299170258 0.00014316587928362372 _0.00018349733042860583 
>> _2.9728022273514546e_6 _0.00065710525970965033
>>             ]dX=:f + i NB. step by step solution
>> _0.33293465430642932
>> _0.21878505627488784
>> _0.10564636550458734
>> _0.24545481298740857
>> _0.10511767927282535
>> NB.=======================================================================================
>>     NB. VERSION 1
>>     NB. dX=(NbI-NbI*CT*NcI*C*NbI)*W+NbI*CT*NcI*Wx
>>     NB. dX=((NbI-(((NbI*CT)*NcI)*C*NbI))*W)+((NbI*CT)*NcI*Wx)
>>         ]dX=:((NbI-(((NbI mp CT) mp NcI) mp C mp NbI)) mp W)+((NbI mp 
>> CT) mp NcI mp Wx)
>> _0.33363000530097303
>>   _0.2189281971967279
>> _0.10546290016239707
>> _0.24545184070341602
>> _0.10446068856322722
>> NB.=======================================================================================
>>     NB. VERSION 2
>>     NB. dX=(((NbI-(((NbI*CT)*NcI)*C)*NbI)*W)+(NbI*CT)*NcI)*Wx
>>         ]dX=:(((NbI-(((NbI mp CT) mp NcI) mp C) mp NbI) mp W)+(NbI mp 
>> CT) mp NcI) mp Wx
>> _0.16681494203126254 _0.10946408611964216 _0.052731466075317708 
>> _0.12272592061082542 _0.052230401556669366
>> NB.=======================================================================================
>>     NB. VERSION 3
>>     NB. dX=((NbI-(((NbI*CT)*NcI)*C)*NbI)*W)+(NbI*CT)*NcI*Wx
>>         ]dX=:((NbI-(((NbI mp CT) mp NcI) mp C) mp NbI) mp W)+(NbI mp 
>> CT) mp NcI mp Wx
>> _0.33363000530097303
>>   _0.2189281971967279
>> _0.10546290016239707
>> _0.24545184070341602
>> _0.10446068856322722
>> NB.=======================================================================================
>>     NB. VERSION 4
>>     NB. dX=(NbI-NbI*CT*NcI*C*NbI)*W+NbI*CT*NcI*Wx
>>     NB. D=(NbI*CT)*NcI
>>     NB. dX=(NbI-D*C*NbI)*W+D*Wx
>>     NB. dX=((NbI-((D*C)*NbI))*W)+D*Wx
>>         ]dX=:(NbI-((D mp C) mp NbI)) mp W + D mp Wx[D=:(NbI mp CT) mp 
>> NcI
>> _0.33363012560096128
>> _0.21892822202521539
>> _0.10546286851468895
>> _0.24545184023593167
>> _0.10446057488621374
>> NB.=======================================================================================
>>     NB. VERSION 5
>>     NB. dX=(NbI-NbI*CT*NcI*C*NbI)*W+NbI*CT*NcI*Wx
>>     NB. dX=:(NbI-NbI mp CT mp NcI mp C mp NbI) mp W+NbI mp CT mp NcI 
>> mp Wx
>>         ]dX=:(NbI-NbI mp CT mp NcI mp C mp NbI) mp W+NbI mp CT mp NcI 
>> mp Wx
>> _0.33363012560096128
>> _0.21892822202521539
>> _0.10546286851468895
>> _0.24545184023593167
>> _0.10446057488621374
>> NB.=======================================================================================
>>        NB. ORDER OF EVALUATION J Primer tell
>>     NB. J has a right-to-left order of evaluation.
>>     NB. J always parenthesies from right-to-left.
>>     NB. Remember: no verb precedence and right-to-left evaluation
>> NB.=======================================================================================
>>     NB. How can solve the above matrix equation?
>>     NB.
>>     NB. Can somebody tell me the right solution?
>>     NB.
>>     NB. Thanks, Erik
>> ----------------------------------------------------------------------
>


-----
No virus found in this message.
Checked by AVG - www.avg.com
Version: 2014.0.4716 / Virus Database: 4007/8071 - Release Date: 08/20/14



More information about the Programming mailing list