[問題] 跑遞迴數列效率問題
想請教
若我想利用python中的套件sympy
去計算出某遞迴數列的理論值
遞迴數列定義如下:
a_{n+2}=2*sin(15度)*a_{n+1}-a_n
a_1=2
a_2=2*sin(15度)
(不太確定套件這樣用是否適合,總之跑得動,但要求14項數
之後的取值,就會卡住不動)
碼如下:
from sympy import *
memo = {0:2, 1: (sqrt(6)-sqrt(2))/2}
def sinus_seq(n):
if not n in memo:
memo[n] = (2*(sqrt(6)-sqrt(2))/4)*sinus_seq(n-1)-sinus_seq(n-2)
return memo[n]
for i in range(12):
print("c[{}]={}".format(i,simplify(sinus_seq(i))))
執行時,當我把倒數第二列的range(k)改為k=15時,
利用計算時間的套件
顯示出來的訊息
CPU times: total: 4min 8s
而k=12的訊息為CPU times: total: 12.7 s
數字k更大k>15,就會卡住不動了
想請教有沒有可以改善更有效率的output出更多項的方法??例如要跑到第3000項數列值
先謝謝高手願意分享!
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.254.207.148 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1688271340.A.088.html
→
07/02 13:36,
1年前
, 1F
07/02 13:36, 1F
推
07/02 13:37,
1年前
, 2F
07/02 13:37, 2F
→
07/02 13:41,
1年前
, 3F
07/02 13:41, 3F
推
07/02 13:50,
1年前
, 4F
07/02 13:50, 4F
→
07/02 14:08,
1年前
, 5F
07/02 14:08, 5F
→
07/02 18:47,
1年前
, 6F
07/02 18:47, 6F
→
07/03 06:23,
1年前
, 7F
07/03 06:23, 7F
→
07/03 06:23,
1年前
, 8F
07/03 06:23, 8F
→
07/03 10:58,
1年前
, 9F
07/03 10:58, 9F
→
07/03 10:59,
1年前
, 10F
07/03 10:59, 10F
→
07/03 11:47,
1年前
, 11F
07/03 11:47, 11F
→
07/03 11:49,
1年前
, 12F
07/03 11:49, 12F
討論串 (同標題文章)
Python 近期熱門文章
PTT數位生活區 即時熱門文章