### Related

##### dotdistrib-limit-true

dotdistrib:true;

I(X):=(X^^-1);

T(X):=X.I(T12).T14c.I...

Calculate

? dotdistrib;

Calculate

##### dotdistrib-limit-true

dotdistrib:true;

I(X):=(X^^-1);

T(X):=X.I(T12).T14c.I...

Calculate

? dotdistrib;

Calculate

### dotdistrib

Run Example
```(%i1)dotassoc:true;
(%o1)                                true
(%i2) dotdistrib:true;
(%o2)                                true
(%i3) dot1simp:true;
(%o3)                                true
(%i4) dotconstrules:true;
(%o4)                                true
(%i5) dotexptsimp:true;
(%o5)                                true
(%i6) declare(a,scalar);
(%o6)                                done
(%i7) I(X):=(X^^-1);
<- 1>
(%o7)                           I(X) := X
(%i8) T(X):=X.I(T12).T14c.I(T14e).T12.I(X).T14e;
(%o8)  T(X) := X . (I(T12) . (T14c . (I(T14e) . (T12 . (I(X) . T14e)))))
(%i9) limit((1/a)*(T(T12+a*S)-T(T12)),a,0);
<- 1>              <- 1>                    <- 1>
(%o9) limit  ((a S) . T12      . T14c . T14e      . T12 . (T12 + a S)
a -> 0
<- 1>                    <- 1>
. T14e + T14c . T14e      . T12 . (T12 + a S)      . T14e - T14c)/a
(%i10) limit((1/a).((X+a).(X+a)-X.X),a,0);
1             1     <2>    1
(%o10)          limit  ((-) . X . a + (-) . a    + (-) . a . X)
a -> 0   a             a            a
(%i11) ```
Run Example
```load ("scifac") ;
(%o1)      /usr/share/maxima/5.21.1/share/simplification/scifac.lisp
(%o2) /usr/share/maxima/5.21.1/share/contrib/integration/abs_integrate.mac
(%o3)         /usr/share/maxima/5.21.1/share/calculus/fourie.mac
(%i4) nc_factor(e):= block([opsubst: true],  subst(lambda([[L]], apply(nc_factor_aux, L)), "+", e));
(%o4) nc_factor(e) := block([opsubst : true],
subst(lambda([[L]], apply(nc_factor_aux, L)), "+", e))
(%i5) dotassoc  : false;
(%o5)                                false
(%i6) dotdistrib: false;
(%o6)                                false
(%i7) dot2tic_tac(e):= block([inflag: true],  if safe_op(e)#"." then error("op(e) shoule be '.'"),  if length(e)#2 then error("the number of arguments should be 2"),  funmake('tic, [first(e)])*funmake('tac, [second(e)]));
(%o7) dot2tic_tac(e) := block([inflag : true],
if safe_op(e) # "." then error("op(e) shoule be '.'"),
if length(e) # 2 then error("the number of arguments should be 2"),
funmake('tic, [first(e)]) funmake('tac, [second(e)]))
(%i8) tic_tacify(e):= block([op: safe_op(e), inflag: true, seen_dot: false, prederror: true],  if op="." then dot2tic_tac(e)  else if op="*" then map(lambda([el],      if not seen_dot and op="." then (seen_dot: true, dot2tic_tac(el)) else el), e)  else e);
(%o8) tic_tacify(e) := block([op : safe_op(e), inflag : true,
seen_dot : false, prederror : true], if op = "." then dot2tic_tac(e)
else (if op = "*" then map(lambda([el],
if (not seen_dot) and (op = ".") then (seen_dot : true, dot2tic_tac(el))
else el), e) else e))
(%i9) ntic_or_ntac(e):= is(not funp('tic, e) or not funp('tac, e));
(%o9)  ntic_or_ntac(e) := is((not funp('tic, e)) or (not funp('tac, e)))
(%i10) de_tic_tacify_aux(e):= block([fst: 1, scn: 1, rst: 1, inflag: true, prederror: true],  for el in e do (if funp('tic, el) then fst: remfun('tic, el)    else if funp('tac, el) then scn: remfun('tac, el)    else rst: rst*el),  rst*(fst . scn));
(%o10) de_tic_tacify_aux(e) := block([fst : 1, scn : 1, rst : 1,
inflag : true, prederror : true], for el in e do if funp('tic, el)
then fst : remfun('tic, el) else (if funp('tac, el)
then scn : remfun('tac, el) else rst : rst el), rst (fst . scn))
(%i11) de_tic_tacify(e):= block([inflag: true, prederror: true, op: safe_op(e)],  if op="*" and every(ntic_or_ntac, args(e)) then de_tic_tacify_aux(e)  else if op#false then map('de_tic_tacify, e)  else e);
(%o11) de_tic_tacify(e) := block([inflag : true, prederror : true,
op : safe_op(e)], if (op = "*") and every(ntic_or_ntac, args(e))
then de_tic_tacify_aux(e) else (if op # false then map('de_tic_tacify, e)
else e))
(%i12) nc_factor_aux([L]):= block([M, op],  M: map('tic_tacify, L),  M: factorsum(factor(apply("+", M))),  de_tic_tacify(M));
(%o12) nc_factor_aux([L]) := block([M, op], M : map('tic_tacify, L),
M : factorsum(factor(apply("+", M))), de_tic_tacify(M))
(%i14) ```
Run Example
```kill(all);
(%o0)                                done
(%i1) depend(x_1,s);
(%o1)                           depend(x_1, s)
(%i2) depend(x_2,s);
(%o2)                           depend(x_2, s)
(%i3) M: matrix([m_1, 0],[0, m_2]);
[ m_1   0  ]
(%o3)                            [          ]
[  0   m_2 ]
(%i4) C: matrix([c_1+c_2, -c_2],[-c_2, c_2]);
[ c_2 + c_1  - c_2 ]
(%o4)                        [                  ]
[   - c_2     c_2  ]
(%i5) K: matrix([k_1+k_2, -k_2],[-k_2, k_2]);
[ k_2 + k_1  - k_2 ]
(%o5)                        [                  ]
[   - k_2     k_2  ]
(%i6) F: matrix([F_1(s)],[F_2(s)]);
[ F_1(s) ]
(%o6)                             [        ]
[ F_2(s) ]
(%i7) X: matrix([x_1(s)],[x_2(s)]);
[ x_1(s) ]
(%o7)                             [        ]
[ x_2(s) ]
(%i8) dotdistrib: true;
(%o8)                                true
(%i9) eqn: F = M.(s^2*X) + C.(s*X) + K.X;
[ F_1(s) ]                                              2
(%o9) [        ] = matrix([- c_2 s x_2(s) - k_2 x_2(s) + m_1 s  x_1(s)
[ F_2(s) ]
+ (c_2 + c_1) s x_1(s) + (k_2 + k_1) x_1(s)],
2
[m_2 s  x_2(s) + c_2 s x_2(s) + k_2 x_2(s) - c_2 s x_1(s) - k_2 x_1(s)])
(%i10) Z: mat_unblocker(matrix([coeff(rhs(eqn),x_1(s)), coeff(rhs(eqn),x_2(s))]));
[      2                                                   ]
[ m_1 s  + (c_2 + c_1) s + k_2 + k_1     - c_2 s - k_2     ]
(%o10)   [                                                          ]
[                                          2               ]
[           - c_2 s - k_2             m_2 s  + c_2 s + k_2 ]
(%i11) H: invert(Z);
2                       2
(%o11) matrix([(m_2 s  + c_2 s + k_2)/((m_1 s  + (c_2 + c_1) s + k_2 + k_1)
2
(m_2 s  + c_2 s + k_2) + (- c_2 s - k_2) (c_2 s + k_2)),
2                                    2
(c_2 s + k_2)/((m_1 s  + (c_2 + c_1) s + k_2 + k_1) (m_2 s  + c_2 s + k_2)
+ (- c_2 s - k_2) (c_2 s + k_2))], [(c_2 s + k_2)
2                                    2
/((m_1 s  + (c_2 + c_1) s + k_2 + k_1) (m_2 s  + c_2 s + k_2)
2
+ (- c_2 s - k_2) (c_2 s + k_2)), (m_1 s  + (c_2 + c_1) s + k_2 + k_1)
2                                    2
/((m_1 s  + (c_2 + c_1) s + k_2 + k_1) (m_2 s  + c_2 s + k_2)
+ (- c_2 s - k_2) (c_2 s + k_2))])
[      2                                                   ]
[ m_2 s  + c_2 s + k_2             c_2 s + k_2             ]
(%o12)   [                                                          ]
[                            2                             ]
[     c_2 s + k_2       m_1 s  + (c_2 + c_1) s + k_2 + k_1 ]
(%i13) d: determinant(Z);
2                                    2
(%o13) (m_1 s  + (c_2 + c_1) s + k_2 + k_1) (m_2 s  + c_2 s + k_2)
2
- (- c_2 s - k_2)
(%i14) ```

### Related Help

Help for Dotdistrib