Symja - Java computer algebra library - https://github.com/axkr/symja_android_library
axkr on master
basic JUnit tests for Associati… (compare)
axkr on master
Improve SameQ() for 2 arguments (compare)
axkr on master
Let SameQ(), SameQ(a1), UnsameQ… Cofactort, Minors "normalize" s… (compare)
axkr on master
#331 fix bug in Minors (compare)
axkr on master
#331 WIP first Minors() impleme… (compare)
axkr on master
#329 improved elimzeroplus rules (compare)
axkr on master
#331 WIP Cofactor first impleme… (compare)
axkr on master
Fix bugs found by SpotBugs (compare)
axkr on master
fix bug in PatternMatcher#remov… #329 clean up / rename elimzero… (compare)
axkr on master
#329 use PossibleZeroQ to deter… (compare)
axkr on master
#329 handle possible denominato… (compare)
axkr on master
#329 added more general rules f… (compare)
axkr on master
#330 return Indeterminate as su… (compare)
{termquery$$fuchs,termquery$$huhn,termquery$$schaf,termquery$$wolf}
which works here: http://matheclipse.org/
IExpr varsExpr = calcEvaluator.eval("Variables(" + calc + ")");
evaluates to {termquery$$fuchs,termquery$$huhn,termquery$$schaf,termquery$$wolf}
, the same code in 2.0.0-SNAPSHOT evaluates to just Variables(termquery$$fuchs*(termquery$$huhn*(1-termquery$$schaf)+termquery$$schaf)+(1-termquery$$fuchs)*termquery$$schaf*termquery$$wolf)
calc
is of course my test string "termquery$$fuchs*(termquery$$huhn*(1-termquery$$schaf)+termquery$$schaf)+(1-termquery$$fuchs)*termquery$$schaf*termquery$$wolf"
in the examples above)
Hi, Is. there a plan to support Matrix Calculus in Symja, where, a matrix or vector can be manipulated as a whole? Such a support exists in Sympy, as illustrated as follows:
X = MatrixSymbol('X', 3, 3)
Y = MatrixSymbol('Y', 3, 3)
(X.TX).IY. would give 𝑋^(−1) (𝑋^𝑇)^(−1) 𝑌 // where, X.T is transpose(X); X.I is inverse(X)
What would be even better is to support the formulae in Matrix Calculus for differentiations of Matrix expressions (https://en.wikipedia.org/wiki/Matrix_calculus), such as
D(transpose(a)*X*b, X)
would produce
b*transpose(a)
where a and b are two vectors and X is a matrix of compatible shapes.
Such a support would make Symja very useful in Differentiable Programming of tensor-based programs.
M
is defined as 3x3 matrix
TensorDimensions(M)
@axkr Thanks for the thought. I've filed a feature request. The implementation is probably not too complicated, but does have some subtle aspects (e.g., matrix layout conventions: https://en.wikipedia.org/wiki/Matrix_calculus#Layout_conventions ).
So far, I haven't found an open-source tool with a full support of that feature. Sympy's support is incomplete. MatrixCalculus (http://www.matrixcalculus.org/) has a good support, but is not open-sourced. If Symja implements it, it could be the first open-source tool with that feature.