From: lavandenberg on
Hello all,

I am working on expressing the outcome of a characteristic polynomial in
circuit gains.

The gains are independent, however certain "entities" are common. This is
expected and should result into more simple functions for the gains,
however I cannot seem to achieve a "simple" substitution rule without
getting into complex combinatorics.

I want to avoid resorting into designing a combinatoric algorithms (as I
will need to solve performance issues) and I am wondering if I am not
missing the "obvious" solution.

M is a matrix, a,b,c are functions however are not evaluated at this stage.

I use Solve[CharacteristicPolynomial[M, lambda], lambda]] to derive
something I am simplifying here for illustratory purposes (in reality this
needs to work for systems with a rank of up to one-thousand:

{{Lambda -> 1/(ab)}, {Lambda -> -1/(ab)}, {Lambda -> 1/c}}

Then I simplify using:
/. {1/b-> gain1, 1/c-> gain2, 1/(ab) -> gain3};
resulting in
{{Lambda -> gain1/b}, {Lambda -> -gain3}, {Lambda -> gain2}}

Please note there is a 1/b remaining in the first Lambda that should not be
there as I can achieve full reduction into gains when using the same
simplification rules in a different order.
/. {1/(ab) -> gain3, 1/b-> gain1, 1/c-> gain2};
resulting in a full reduction (b remained in previous solution is now
expressed in gain as well) into gain formula's
{{Lambda -> gain3}, {Lambda -> -gain3}, {Lambda -> gain2}}


The design of the system is such that it should be reduced to "gain only"
expressions.

The replacement rules are generated by an algorithm that calculates the
gains of circuit components and I do not think I can do this in such a way
that I can arrive at a specific ordering that will guide me to
automatically resolve into a full reduction; so I am looking for something
that will do an intellignet replace in such a way that the full reduction
is made.

This should be a fairly common feature so I am hoping there is a simple
Mathematica (combination of) command for this.

Much appreciated!

Sander