Re: [問題]有關=跟:=

看板Mathematica作者 (Hysterisis)時間12年前 (2012/05/23 15:07), 編輯推噓2(200)
留言2則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《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
文章代碼(AID): #1Fl8oMHo (Mathematica)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
文章代碼(AID): #1Fl8oMHo (Mathematica)