|
Wenn man die Gleichungen > eqn = Flatten[{ > { C12+C13*C23/(C13+C23) == C10*C20/(C10+C20) }, > { C13+C12*C23/(C12+C23) == C10*C30/(C10+C30) }, > { C23+C12*C13/(C12+C23) == C20*C30/(C20+C30) } }]; > Solve[eqn, {C10, C20, C30}] vor Solve etwas "massiert", d.h. auf polynomiale Form bringt (und sich dabei die auftretenden Bedingungen merkt), dann geht es auch mit Mathematica ganz flott: eqnew = Map[ (Numerator[Together[Simplify[#[[2]] - #[[1]]]]] == 0)&, eqn ]; Solve[eqnew, {C10, C20, C30}] dauert dann nur Sekunden. Es wäre natürlich interessant zu wissen, warum zwischen der ersten und der zweiten Version der Eingabe (algorithmisch) ein so großer Unterschied besteht; insbesondere, ob dies nur auf das Mitspeichern der Bedingungen zurückzuführen ist, oder ob ein anderer Algorithmus verwendet wird. Im Allgemeinen werden wohl Resultanten oder Gröbner Basen für Eliminationsprobleme verwendet, und da treten auch bei trügerisch "kleinen" Eingaben oft sehr aufwendige Berechnungen auf. -- Oliver Gloor -------------------------------------------------------------- Oliver Gloor University of Tuebingen Dr. sc. math. ETH Institute for Computer Science Tel: +49 / 7071 297 5480 Sand 13 Fax: +49 / 7071 67 540 D-72076 Tuebingen, Germany e-mail: gloor@XXXXXXX.de http://www-sr.informatik.uni-tuebingen.de/~gloor |