2010年7月24日 星期六

[自動轉寄] (Passions) Re: [問題] mathematica 的block用法和三個問題

作者: chungyuandye (養花種魚數月亮賞星星)
標題: Re: [問題] mathematica 的block用法和三個問題
時間: Sat Jul 24 19:17:36 2010

※ 引述《Passions (passion)》之銘言:
: ※ 引述《chungyuandye (養花種魚數月亮賞星星)》之銘言:
: : {r,n,t,y}是區域變數,只有在f這個函數才有作用,一旦跳出f它什麼都不是
: : 舉個例子
: : g[x_]:=Block[{w=10,xx=x},2xx+w]
: : 執行一下
: : g[10]
: : {ww,xx}
: : g[10]=30
: : {ww,xx}={ww,xx}
: : 不過為了怕之前L,G,K這些變數已經有定義過,建議改成這樣
: : f[L_?NumberQ,G_?NumberQ,K_NumberQ]:=Block[{LL=L,GG=G,KK=K,r,n,t,y},
: : {r}=NDSolve[{包含n,t,LL,GG的微分方程式,n[0]==K},n,{t,0,10}];
: : y=n[a] /. r;Plus @@ ((b-y)^2)]
: : @@=Apply,Plus @@ ((b-y)^2)] =>把加法套用在((b-y)^2)上
: 謝謝你的回信!
: 不過仍然有幾個問題:
: 一、關於 Block 的用法,仍有一點不清楚。
: 原式中的 Block[{A},B ; C ; D ]
: 分號; 在 mathematica 中,應該是代表指令結束,

執行B->執行C->最後輸出D
你就當成你在寫程式就好了∼∼

: 但在這邊還是被包在 Block 裡面,這真的是非常奇怪,不知道語法是什麼。
: 二、Plus @@ ((b-y)^2)]
: 這個跑出來的結果會是 2 + b - y
: 這真的是非常奇怪,直接把它當2看,這樣不就把平方的意義給弄掉了嗎

這個一點都不奇怪,因為在Mathematica裡面
如果你把((b-y)^2)當成一個List,那第一個元素是b,第二個元素是-y,
第三個元素2,你把加法套到這三個元素當然是2+b-y

: 不過又回到第一個問題來,還是他在Block 裡能表現出特別的意義來?
: 三、舉的這個例子我能看懂
: 跑 g[x_]:=Block[{w=10,xx=x},2xx+w]
: g[10] 會得到30。
: 但是例子中的 {ww,xx}和 {ww,xx}={ww,xx}
: : g[10]
: : {ww,xx}
: : g[10]=30
: : {ww,xx}={ww,xx}
: 是什麼意思呢?
ww,xx都是區域變數,所以跳出g以外那根本沒有被定義
所以還是只傳回ww,xx

: 不好意思問題蠻多的 ><
: 如果能抽空幫忙回答的話,我會非常感激的
: 感謝!


--
養花種魚數月亮賞星星

http://cydye1069.blogspot.com

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.173.130.58

沒有留言:

張貼留言