Math 求解包含digamma函数的方程组最有效的方法是什么?
求解涉及digamma函数的方程组最有效的方法是什么 我有一个向量v,我想解一个向量w,这样对于所有I: digamma(sum(w))-digamma(w_i)=v_i 及 w_i>0 我找到了gsl函数gsl_sf_psi,这是digamma函数(使用某种级数计算)。有一个恒等式可以用来简化方程吗?使用解算器是我的最佳选择吗?我正在使用C++0x;哪种解算器最容易使用且速度最快Math 求解包含digamma函数的方程组最有效的方法是什么?,math,gsl,equations,equation-solving,Math,Gsl,Equations,Equation Solving,求解涉及digamma函数的方程组最有效的方法是什么 我有一个向量v,我想解一个向量w,这样对于所有I: digamma(sum(w))-digamma(w_i)=v_i 及 w_i>0 我找到了gsl函数gsl_sf_psi,这是digamma函数(使用某种级数计算)。有一个恒等式可以用来简化方程吗?使用解算器是我的最佳选择吗?我正在使用C++0x;哪种解算器最容易使用且速度最快 从我的初步研究来看,digamma不容易可逆(搜索逆digamma会给出通过二进制搜索工作的算法),因此整个系统
从我的初步研究来看,digamma不容易可逆(搜索逆digamma会给出通过二进制搜索工作的算法),因此整个系统不会简化是有意义的 因此,使用解算器现在会留下两个问题:处理digamma计算速度非常慢的事实,以及处理w_i>0的限制,否则digamma(w_i)将在w_i=0时崩溃 对于第一个问题,我想也许我应该为最近计算的digamma值实现一个缓存——我认为这是一个好主意,但对根查找算法的工作原理知之甚少 我的想法是解决第二个问题,找到w''u i=log(w'u i)。那样的话,我就全完了。我不知道这是不是个好主意。可能没有直接查找digamma(exp(w'))的函数?此外,该算法可能会在w'空间中采取步骤,而不会改善情况,因为从w'->w的映射会失去一些精度,因此w'的两个元素可能映射到同一个w 仍然存在找到一个好的、快速的寻根算法的问题。我想我可以在另一个问题中问这个问题
谢谢…我建议使用解算器将是最好的主意,主要是因为考虑各种方程的各种稳定性和收敛区域可能很棘手,重新设计轮子是没有用的。虽然我从未真正解决过像您提到的那样的系统,但我认为以下库之一很可能有您想要的解决方案:
- 当然,你可以在谷歌上搜索更多内容:)[这些是我熟悉的]
希望这能有所帮助。不确定,但您是否能获得更好的答案,然后再回来这里询问有关算法的具体问题?感谢您抽出时间回答。我已经更新了这个问题。尼斯,谢谢你对这个问题的更新,让我了解了如何解决这些系统,以及我可以预期的问题。顺便说一句,我相信您已经知道这一点,但GSL也有根查找算法:)