Re: [問題]有關=跟:=
※ 引述《huangcooly (弱小豪)》之銘言:
: 通常我定義一個方程式時我都會用:=
: 像是f[x_]:=x
: 可是我今天想要用Do定義個許多方程式卻遇到了奇怪的點
: f"0"[x_]=1
: f"1"[x_]=x
: Do[f"n"[x_]:=(2n-1)*f"n-1"[x]-(n-1)*f"n-2"[x],{n,2,20}]
: f後""內為我f下標,打不出來以""表示
: 我這樣Do跑出來無法定義
: 不知道為什麼
: 我是將:=改為=之後就可以了
: 有高手可以幫我解釋一下嘛QQ
不能的原因同上篇推文
但即使改成 = 可以用也不是很建議的寫法,詳細原因是f"0" (""代表下標)
不是個最簡物件 (atom),所以 = (Set) 函數做了跟你想像中差很多的工作
即使得到正確的結果,過程中卻偷偷搞亂了一些東西。詳細就不多說了,總之
跟我說請你試試輸入 ?? Subscript 看看輸出長怎樣有關
推薦這樣寫
f[0][x_] := 1;
f[1][x_] := x;
f[n_][x_] := Expand[(2 n - 1) f[n - 1][x] - (n - 1) f[n - 2][x]]
於是
f[20][x] = -61569617941264712611136 + 157589477064007448732512 x
...都可以很快算出來
或者你想看遞回中間的結果就改寫成
f[0][x_] := 1;
f[1][x_] := x;
f[n_][x_] := f[n][x] = Expand[(2 n - 1) f[n - 1][x] - (n - 1) f[n - 2][x]]
這樣只要你輸入
?? f
就會得到所有 f[n][x] 的值
Edit
當遞迴次數很小兩種寫法幾乎沒差,但若你要算的很不是 f[20][x] 而是 f[200][x] 時,
前一種作法根本跑不出來必須用後一種。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.213.88
※ 編輯: jurian0101 來自: 140.112.213.88 (05/23 15:10)
推
05/25 15:09, , 1F
05/25 15:09, 1F
推
05/26 01:58, , 2F
05/26 01:58, 2F
討論串 (同標題文章)
Mathematica 近期熱門文章
PTT數位生活區 即時熱門文章