簡體   English   中英

使用 C 中的 log() 導出指數 function

[英]derive exponential function using log() in C

我正在嘗試使用對數得出指數 function 。 我從下面的等式 log(22026.4657948067) 知道是 10,exp(10) 是 22026.4657948067

我想了解 exp() 和 log() 背后的基本數學。 目前,我在 C 中有 log(),我想知道轉換邏輯,以便我可以從 log() 計算指數()。 謝謝

沒有“轉換邏輯”。 它們都是超越函數,沒有很好的方法來實現另一個。 由於它們是相反的,因此您可以使用牛頓法或其他一些求根方法來找到log(x) - a的零點,並將該值稱為exp(a) ,但這既不准確,效率也大大降低而不是使用內置實現。

如果您要問這些函數通常是如何在數學庫中實現的,一種常見的方法是范圍縮小,然后是多項式逼近。 例如,任何正數都可以通過將其乘以或除以兩個零或多個倍來減少到[1,2)范圍內; log(x * 2) == log(x) + log(2) ,所以我們只需要一個高精度的log(2)常數,從最終結果中添加或減去適當的次數。 然后我們可以對[0,1)上的 function log(1+x)使用泰勒級數; 由於域有限,您可以在沒有太多術語的情況下獲得高精度。 或者,可以在乘法特別昂貴的平台上使用查找表和線性插值。

對數返回必須將底數提高到的指數才能產生給定的數字。

所以如果我們有 x=9,那么 (base 3) log(9) = 2 因為 3^2 = 9。

在 C 中,log() function 使用底數 e,其中 e 是歐拉數 (2.71828)。

所以在你的情況下,發生的事情基本上是: log(22026.4657948067) = 10 然后 e^10 = 22026.4657948067

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM