Questions tagged «roots»

3
四次方程的解
对于四次方程的解是否有开放的C实现: ax⁴+bx³+cx²+dx+e=0ax⁴+bx³+cx²+dx+e=0ax⁴+bx³+cx²+dx+e=0 我正在考虑实施法拉利解决方案。在Wikipedia上,我读到该解决方案仅对某些可能的系数符号组合具有计算稳定性。但是也许我很幸运……通过使用计算机代数系统分析求解并导出到C,我得到了一个务实的解决方案。但是,如果有经过测试的实现,我更喜欢使用它。我搜索一种快速方法,但不希望使用一般的根查找器。 我只需要真正的解决方案。

2
在给定的间隔中找到函数的所有根
我需要在给定的时间间隔中找到标量函数的所有根。该功能可能有间断。该算法可以具有ε的精度(例如,如果算法没有找到比ε更近的两个不同的根,则可以。 是否存在这种算法?你能指出我有关那篇论文吗? 实际上,我有一个使用布伦特算法在给定间隔中找到零的函数,以及一个在给定间隔中找到最小值的函数。使用这两个函数,我建立了自己的算法,但是我想知道是否存在更好的算法。我的算法是这样的: 我从一个间隔[a,b]和一个函数开始f。如果sign(f(a+ε)) ≠ sign(f(b-ε))我知道a和之间至少有一个零b,我发现z = zero(]a,b[)。z通过查看z-εand 的值,我测试是否真的为零(可能是不连续性)z+ε。如果是,我将其添加到找到的零列表中。如果f(a+ε)和f(b-ε)均为正,我搜索m = min(]a, b[)。如果f(m)仍为正,我搜索m = max(]a,b[)是因为a和之间可能存在不连续性b。如果f(a+ε)和f(b-ε)为负,我则相反。 现在,从发现(z或m)的点开始,我将构建一个堆栈,其中包含函数的零,不连续和拐点。第一次迭代后,堆栈现在看起来像[a, z, b]。我再次从时间间隔]a,z[和开始算法]z,b[。当在两个点a和之间b,极值具有与两个区间结束相同的符号,并且两个极点都没有不连续性时,我从堆栈中删除了该区间。没有更多时间间隔时该算法结束。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.