求解包含digamma函數的方程組的最有效方法是什麼?求解包含digamma函數的方程組的最有效方法是什麼?
我有一個向量v和我要解決一個向量w,使得對於所有的i:
digamma(總和(W)) - digamma(w_i)= V_I
和
w_i> 0
我發現gsl函數gsl_sf_psi,它是digamma函數(使用某種系列計算)。是否有可用於減少方程的標識?我最好使用求解器嗎?我正在使用C++ 0x;哪個求解器最容易使用和快速?
從我初步的研究,digamma不容易可逆(逆digamma搜索給出了由二進制搜索算法的工作),因此它是有道理的,就沒有簡化整個系統。
因此,使用求解器現在會留下兩個問題:處理digamma計算速度非常慢的事實,並且處理w_i> 0的限制,否則digamma(w_i)將會崩潰w_i = 0。
對於第一個問題,我想也許我應該爲最近計算出的digamma值實現一個緩存 - 我認爲這將是一個好主意,但不太瞭解如何找到根算法。
我的想法是解決第二個問題是找到w'_i = log(w_i)。那樣,w'_i就是全線。我想知道這是不是一個好主意。可能沒有函數直接找到digamma(exp(w'))?此外,該算法可能在w'空間中採取步驟並且不會改進,因爲從w' - > w的映射失去一些精度,因此w'的兩個元素可能映射到相同的w。
仍然存在尋找一個好的快速尋根算法的問題。我想我可以在另一個問題上提出這個問題。
謝謝...
不知道,但你會得到更好的答案在http://mathoverflow.net/,然後回到這裏對算法的具體問題? – 2010-04-11 04:40:58
感謝您花時間回答。我已經更新了這個問題。 – 2010-04-11 18:31:09
不錯,感謝您對問題的更新,讓我深入瞭解如何解決這些系統問題,以及我可以期待的問題。順便說一句,我相信你已經知道這一點,但GSL也有根發現算法:) – Akanksh 2010-04-14 07:25:23