2011年11月20日 星期日

[自動轉寄] [通告] 與其在網路上當鄉民,不如學會Know How做事業

作者: healthbe2 (成長是美麗的痛)
標題: [通告] 與其在網路上當鄉民,不如學會Know How做事業
時間: Sun Nov 20 17:48:39 2011


===========================================

景氣再怎麼壞,都還是有人荷包滿滿

誰說年輕就不能有大成就!

眼光,工具,抓住未來的方向,您也能像他們一樣

http://successasia.blogspot.com/

===========================================


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

2011年11月15日 星期二

[自動轉寄] Re: [問題] 請教有關遞迴式

作者: chungyuandye (養花種魚數月亮賞星星) 看板: Mathematica
標題: Re: [問題] 請教有關遞迴式
時間: Wed Nov 16 00:02:08 2011

※ 引述《sphwny (時間過的真快>"<)》之銘言:
: 不好意思又來問問題了
: 目前小弟寫到定義分段函數
: 然後使用遞迴的方式把剩下的函數定義完
: 舉例如下:
: H[-1,x1_,x2_,x3_,n_] :=E^(-x1*x3)*(n!/x2^n)*Sqrt[1/(2*x2)]
: 然後
: H[0,x1_,x2_,x3_,n_]:=
: x3/(2*n)*H[-1,x1,x2,x3,n+1]-x1/(2*n)*H[-1,x1,x2,x3,n] /; x2==0.5*x3^2
: H[0,x1_,x2_,x3_,n_]:=
: n!*(0.5*x1*H[-1,x1,x2,x3,n-1]-0.5*x3*H[-1,x1,x2,x3,n]) /; x2!=0.5*x3^2 ; x1>0
: H[0,x1_,x2_,x3_,n_]:=
: 0.5*x1*H[-1,x1,x2,x3,n-1]-0.5x3*H[-1,x1,x2,x3,n] /; x2!=0.5*x3^2 ; x1<0
: H[0,x1_,x2_,x3_,n_]:=
: 0.5*x3*H[-1,x1,x2,x3,n] /; x2!=0.5*x3^2; x1==0
: Table[H[i,x1_,x2_,x3_,n_]:= (1/i)*H[i-2,x1,x2,x3,n+1]-
: (x3/i)*H[i-1,x1,x2,x3,n+1]-(x1/i)*H[i-1,x1,x2,x3,n], {i,12}];
: 最後再把這些函數做些計算處理的時候
: 出現了遞迴次數超過256次之類的訊息以及後面伴隨很多錯誤訊息
: 當中似乎出現了什麼問題
: 是我的定義語法錯誤了嗎?
: 還是有其他的方法來定義這樣子的遞迴函數?
: 麻煩各位大師替我解惑!! 謝謝!!


上面的函數可以改用Which試試看!至於遞迴次數可以利用$RecursionLimit=?? 來設定
上面的函數因為都是利用SetDelayed來定義,所以每次都必須重新計算,
因此當i大的時候會非常耗時,可以試著用動態定義來改善

H[-1,x1_,x2_,x3_,n_]=E^(-x1*x3)*(n!/x2^n)*Sqrt[1/(2*x2)]

H[0,x1_,x2_,x3_,n_]:=Which[
x2==0.5*x3^2,
x3/(2*n)*H[-1,x1,x2,x3,n+1]-x1/(2*n)*H[-1,x1,x2,x3,n],
x2!=0.5*x3^2&&x1>0,
n!*(0.5*x1*H[-1,x1,x2,x3,n-1]-0.5*x3*H[-1,x1,x2,x3,n]),
x2!=0.5*x3^2&&x1<0,
0.5*x1*H[-1,x1,x2,x3,n-1]-0.5x3*H[-1,x1,x2,x3,n],
x2!=0.5*x3^2&&x1==0,
0.5*x3*H[-1,x1,x2,x3,n]
]

H[i_,x1_,x2_,x3_,n_]:=H[i,x1,x2,x3,n]=(1/i)*H[i-2,x1,x2,x3,n+1]-(x3/i)*
H[i-1,x1,x2,x3,n+1]-(x1/i)*H[i-1,x1,x2,x3,n]

利用相同的原理,可以利用Fibonacci number的函數來做實驗

f1[0] = 0; f1[1] = 1; f2[0] = 0; f2[1] = 1;
f1[x_Integer] := f1[x - 1] + f1[x - 2]
f2[x_Integer] := f2[x] = f2[x - 1] + f2[x - 2]
AbsoluteTiming@f1[30]
AbsoluteTiming@f2[30]

f1沒利用動態定義,f2則是利用動態定義來定義函數。

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

http://chungyuandye.twbbs.org


--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.173.136.123
※ 編輯: chungyuandye 來自: 218.173.136.123 (11/16 00:04)
※ 編輯: chungyuandye 來自: 218.173.136.123 (11/16 00:10)

2011年11月13日 星期日

[自動轉寄] Re: [問題] 解聯立方程式

作者: qoodeva (發呆的花枝)
標題: Re: [問題] 解聯立方程式
時間: Sun Nov 13 17:55:51 2011

※ 引述《chungyuandye (養花種魚數月亮賞星星)》之銘言:
: ※ 引述《qoodeva (發呆的花枝)》之銘言:
: : Do[
: : zt=(aω^2 +c)+d e-d^2 q; (*這是方程式,a,b,c,e,q為常數,ω為未知數*)
: : sol=Solve[zt==0,d]; (求解d,但因為ω為未知數,會出現未精準值)
: : H=HH[[4;;6,4;;6]]; (*H是HH矩陣的子矩陣*)
: : HE=Eigenvalues[H];
: : HD=Det[H];
: : If[Sign[HD]=\=0, (*判定HD行列式不為零*)
: : If[
: : Sign[HD]=-Sign[zz],Print[ω] (*判定行列式大於零時,將對應的ω輸出*)
: : ];
: : ];
: : zz=HD;
: : ,{ω,1,12000,1}]
: zt=(aω^2 +c)+d e-d^2 q
: 你的aω^2中間少打一個等號或是空格
: 其他看起來沒有錯才對

喔喔,那只是打快了一點,實際上我是有空格的,不過謝謝你,
我今天重新試了好幾次,最後發現,我HH矩陣是寫在Do外面
,但是多打了個//MatrixForm,再變成矩陣顯示時似乎沒辦法執行Do裡面的code,
消去之後就有插值跑出來,但是我的研究還沒做完,
我也不確定這樣跑出來的數字正不正確,但是至少有東西在跑了,謝謝你黑。

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