1
我正在寫一個小型計算機代數系統,允許基本的算術運算和部首。所以表達式是二叉樹,其內節點是運算符+ - */^
,葉子是有理數。現在我想,像其他CAS做,簡化表達,因此,例如它是基數定義的數字的正常形式?
(5+sqrt(2)+sqrt(8))/(1+sqrt(2)) = 1 + sqrt(8)
如果你開始用左手側,這一點並不明顯,你可以把它改寫成RHS。那麼其他CAS如何做呢?是否有這些表達的正常形式,這樣每個表達式都可以唯一地以正常形式書寫?有沒有一種確定性算法,將任何表達式重寫爲正常形式?
我的直接想法是,他們做某種樹操作來重寫它。儘管如此,我很難理解 - 我通過使用共軛來解決上述問題,這很難做到,並且(暫時)使事情複雜化。也許更適合math.stackexchange? – imallett 2014-10-04 22:23:32
參見Landau的算法:http://www.computer.org/csdl/proceedings/focs/1989/1982/00/063496.pdf和http://en.wikipedia.org/wiki/Nested_radical。 – 2014-10-05 09:13:22