[爆卦]如何求反函數是什麼?優點缺點精華區懶人包

為什麼這篇如何求反函數鄉民發文收入到精華區:因為在如何求反函數這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者pmove (pain is my old friend)看板Math標題[代數] 是否有可能用...

如何求反函數 在 愛德恩 Instagram 的最佳解答

2021-09-10 21:08:23

(上) 今天來回答最多人問的如何面對虧損走出交易低潮保持開心?可能跟七月下旬大盤修正行情有關,讓我來好好回答.月底神單看多了,來看看另類分享文: 首先,如何面對虧損?我記得之前有分享過,也是超級績效裡面提到的:損失是獲利公式裡面的一個函數,是必然的存在.無法移除損失這個函數,只能控制他的大小優化獲...



給定一函數func, 參數是i, j, k. 輸出是x, y. 假設i, j, k, x, y 都可以定義的數(非0/0),且不是無限大。
用Python語法表示:x, y = func(i, j, k)

那是否可以針對任何func, 用電腦實作一個萬用反函數?我稱此反函數invFunc, 或者用比較數學的表示法func^-1
用Python語法表示:i, j, k = invFunc(func, x, y)

我想問invFunc是否一定可以由程式寫出來?因為目前沒看到相關的萬用反函數可用,因此猜想是無法,如果真的是無法的話,方便解說一下,爲什麼無法?謝謝。
-----
Sent from JPTT on my iPhone

--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.161.13.57 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Math/M.1687058920.A.0EE.html
m3791913 : 不是所有函數都存在反函數 06/18 11:53
pmove : 我想到一個困難點,就是func 有可能超大,導致反函 06/18 11:56
pmove : 數很難求。那假設func在程式碼1000行以下,那有辦法 06/18 11:56
pmove : 實作萬用反函數嗎?目前我只知道,如果限定在三角函 06/18 11:56
pmove : 數的話,sin^-1, cos^-1, tan^-1, …這些都有人寫好 06/18 11:56
pmove : 了。另外求反矩陣,印像中也有公版的。 06/18 11:56
※ 編輯: pmove (1.161.13.57 臺灣), 06/18/2023 11:59:47
pmove : 回1F,m大:那不存在反函數,可返回exception錯誤, 06/18 12:02
pmove : 只處理有反函數就好的,可以麼? 06/18 12:02
pmove : 印像中,數學上,反矩陣也不一定存在啊。但程式裡面 06/18 12:41
pmove : 可以處理反矩陣存在時,才得到反矩陣。 06/18 12:41
j0958322080 : 反矩陣可以看他的 det 是否為零或其他條件,反函數 06/18 12:44
j0958322080 : 要看看到有沒有類似的條件可以讓你判斷 06/18 12:44
freePrester : Google 陷門函數 06/18 12:44
freePrester : 如果你辦得到的話你就能輕鬆進入絕大多數的電腦系統 06/18 12:45
freePrester : RSA 等密碼系統的安全性就是建立在反函數難以求出 06/18 12:47
arrenwu : 你方便說明一下什麼叫做「萬用反函數」嗎? 06/18 12:53
wohtp : 先說說你的I,j,k定義域是啥不過反正你說要用電腦實 06/18 13:36
wohtp : 作,就算都是float也只有有限多個值。 06/18 13:36
wohtp : 那一般解也非常簡單,反正把整個定義域都算過一遍答 06/18 13:36
wohtp : 案全部cache起來,反函數就是在cache裡面搜尋x ,y再 06/18 13:36
wohtp : 反推回原來的I, j, k 06/18 13:36
sunev : 如果是求一個程式,給定任何程式碼,以生成此程式碼 06/18 14:18
sunev : 的反程式碼,那應該會回到停機問題。 06/18 14:18
pmove : 回17樓,w大,把所有值cache起來,先不管效率問題, 06/18 14:56
pmove : 當cache的數,有無理數,或精確度不足,會造成小數 06/18 14:56
pmove : 點某幾位的數後面,被省略不記,如此會造成某些數, 06/18 14:56
pmove : 沒有被cache到。也就是原本func(i, j, k), i, j, k 06/18 14:56
pmove : 可以算完所有值域。但是輸出的x, y有可能被省略,使 06/18 14:56
pmove : 得某些x, y沒被cache, 但不代表此時反函數不存在。 06/18 14:56
pmove : 舉個例子,w = func(u) = u^2, 假設電腦只能表示小 06/18 17:08
pmove : 數點後一位(我知道這跟真正的電腦表示法,不太一樣 06/18 17:08
pmove : )那u =1時,w =1。u =1.1時,w=1.2 (1.21但只能表 06/18 17:08
pmove : 示小數點後一位,省略0.01),我要問w=1.1時,不在c 06/18 17:08
pmove : ache中,此時u 是多少?我只知道u 不是1,就是1.1, 06/18 17:08
pmove : 但到底是多少,尤其當func 更複雜時,有時候很難判 06/18 17:08
pmove : 斷 06/18 17:08
arrenwu : 所以你想要的其實是一個 產生反函數的函數? 06/18 18:00
pmove : 回樓上,其實很多大大都已回答,是卡在效率問題的樣 06/18 18:17
pmove : ,所以目前沒有公版invFunc 06/18 18:17
musicbox810 : 就取近似,線性差值 06/18 18:42
musicbox810 : 如果你一開始的定義夠密,結果應該不會太差吧 06/18 18:43
DreamYeh : 隨便舉例x=f(i)=i^4-i+1 請問x=0時i=? 四組答案? 06/18 21:53
deathcustom : 除非在一個區間內,x to y是bijective(1-1 and onto 06/19 01:16
recorriendo : Newton's method對我來說就是萬用反函數 :P 06/19 12:50
sunev : 程式可以要求輸出preimage,不一定要 1-1 06/19 13:13
LPH66 : 討論完可行性了, 我來說一聲: 這問法像是 XY 問題 06/19 19:54
LPH66 : 原 PO 很有可能有一些跟反函數相關的工作要做 06/19 19:54
LPH66 : 但不知何理由無法或希望不要個別地求反函數 06/19 19:55
LPH66 : 因此來問有何可以不需個別索求反函數的方式 06/19 19:55
LPH66 : 那經過這些可行性討論之後, 我想要問原 PO: 06/19 19:55
LPH66 : 你最一開始會有需要反函數的需求是什麼? 06/19 19:56
LPH66 : 就算只對特定類型的函數求逆都是相對簡單的問題 06/19 19:56
LPH66 : 給出需求來大家會比較知道要建議你用什麼方法 06/19 19:57
pmove : 確實是工作上需要求反函數,只是工作上的目前已經求 06/20 10:39
pmove : 出來,好奇為何沒人寫一個公版求反函數,所以來問, 06/20 10:39
pmove : 謝謝。 06/20 10:39
LPH66 : 那麼這裡再補充一件事吧:效率問題其實是其次 06/20 15:34
LPH66 : 有的函數根本上就是無法求得「一個」特定的反函數 06/20 15:34
LPH66 : 都需要將原函數作一些範圍限定或條件限定之後 06/20 15:35
LPH66 : 才能有「一個」反函數被定義出來 06/20 15:35
LPH66 : 這件事和你的原函數的型式極度相關,因此我才會問 06/20 15:36
LPH66 : 究竟原函數長怎樣,這樣才能夠知道要怎麼加條件 06/20 15:37
LPH66 : 去得到那一個反函數,同時也有助於實際求值 06/20 15:37
LPH66 : 給出型式也能知道是不是那些本質上很難求逆的東西 06/20 15:39
wohtp : 唯一的一般解就是我說的窮舉法啊。float還可以讓你 06/20 20:39
wohtp : 這樣搞,R連窮舉的機會都沒了。 06/20 20:39
xcycl : 程式語言不是只能寫 float,是能夠寫 exact real 的 06/21 00:02
Vulpix : 是computable number嗎? 06/21 01:31
wohtp : 只是多幾個位數而已,哪可能真的用電腦實作實數。 06/21 20:34
sunev : 電腦只能處理特定實數,不然就不會定義computable 06/21 21:02
xcycl : 有點好奇心看到關鍵字搜尋就知道不是多幾位數而已 07/02 17:03
xcycl : 可以說是 computable real 沒錯 07/02 17:04

你可能也想看看

搜尋相關網站