2011年7月8日 星期五

[自動轉寄] Re: Bifurcation diagram of Logistic Map

作者: chungyuandye (養花種魚數月亮賞星星) 看板: Mathematica
標題: Re: Bifurcation diagram of Logistic Map
時間: Sat Jul 9 09:34:22 2011

※ 引述《biglion ( )》之銘言:
: 看到你的非線性的例子 讓我借題發揮一下
: 提到非線性系統
: 一定不會漏掉 Logistic Map 著名的 Bifurcation diagram
: 相信只要對非線性有些微了解的人都看過
: 不要覺得這很難畫
: 其實使用Mathematica 可以很輕易的就畫出來哦!
: (****** Code Start *******)
: (* Definition of Logistic Map *)
: lmap[r_][xn_] := r xn (1 - xn);
: (* Run n iterations and pick the last m pts *)
: np[n_][m_][r_] :=
: Thread[{r, Take[NestList[lmap[r], Random[], n], -m]}]
: (* Collect data from r=r1 to r=r2 with step dr *)
: s[r1_, r2_, dr_, n_, m_] := Flatten[np[n][m] /@ Range[r1, r2, dr], 1];
: (* run r=2.9~4.0 step=0.0005 *)
: g2d9to4d0 = s[2.9, 4, .0005, 1000, 200]; (*It may take ~10 seconds*)
: (* See the result! *)
: fig1=ListPlot[g2d9to4d0, PlotRange -> {{2.9, 4}, {0, 1}},
: PlotStyle -> PointSize[.0001], FrameLabel -> {"r", "xn"},
: Frame -> True, RotateLabel -> False]
: fig2=ListPlot[g2d9to4d0, PlotRange -> {{3.4, 3.67}, {0.73, 0.92}},
: PlotStyle -> PointSize[.0001], FrameLabel -> {"r", "xn"},
: Frame -> True, RotateLabel -> False]
: (****** Code End ******)

稍微用Compile修改一下

npc=Compile[{{n,_Integer},{m,_Integer},{r,_Real}},
{r,#}&/@NestList[r *# *(1-#)&,Random[],n][[-m;;-1]]
];

t[r1_,r2_,dr_,n_,m_]:=Flatten[Map[npc[n,m,#]&,Range[r1,r2,dr]],1]
u[r1_, r2_, dr_, n_, m_] := Flatten[ParallelMap[npc[n, m, #] &,
Range[r1, r2, dr]], 1]

ex1 = AbsoluteTiming@s[2.9, 4, .0005, 1000, 200];
ex2 = AbsoluteTiming@t[2.9, 4, .0005, 1000, 200];
ex2 = AbsoluteTiming@[2.9, 4, .0005, 1000, 200];
ex1[[1]]
ex2[[1]]
ex3[[1]]

fig1 = ListPlot[ex2[[2]], PlotRange -> {{2.9, 4}, {0, 1}},
PlotStyle -> PointSize[.0001], FrameLabel -> {"r", "xn"},
Frame -> True, RotateLabel -> False]

如果是8.0而且有安裝C Compiler的話,npc後面面可以加上
CompilationTarget -> "C"

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

http://chungyuandye.twbbs.org


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

[自動轉寄] Re: [問題] 請問如何依次 Import 多個檔案?

作者: chungyuandye (養花種魚數月亮賞星星) 看板: Mathematica
標題: Re: [問題] 請問如何依次 Import 多個檔案?
時間: Sat Jul 9 06:22:02 2011

※ 引述《Pathria (bjhuang)》之銘言:
: 大家好,最近剛學使用mathematica 7,
: 因為統計分析,需要對多組數據做計算,
: 若我將每一組數據以流水號編碼, 例如 : data1 , data2, data3.
: 希望能以迴圈依次讀取每一組數據,
: 請問 mathematica 的 Import 該如何寫 ?
: 我嘗試寫成下面的型式, 可是問號部分不知道要如何表示?
: For[i=1,i<N, i++,
: p = Import["data" ?, "Table"];
: (*... 分析程式的內容....*)
: ];
: 謝謝.

設定目錄

SetDirectory["路徑"]

假設你的資料分別是 data1, data2,.....

mydata=Import["data" <> ToString[#], 資料格式]&/@Range[100]

<>在 Mathematica 是文字連接符號,資料格式的部份可以查Help

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

http://chungyuandye.twbbs.org


--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.232.186.105
※ 編輯: chungyuandye 來自: 118.232.186.105 (07/09 07:14)

[自動轉寄] Re: [問題] 如何搜尋取代下標?

作者: chungyuandye (養花種魚數月亮賞星星) 看板: Mathematica
標題: Re: [問題] 如何搜尋取代下標?
時間: Fri Jul 8 23:37:02 2011

※ 引述《oversky0 (oversky0)》之銘言:
: 請問在 Mathematica �要如何搜尋及取代下標(subscript)文字?

data = Subscript[x, #] & /@ Range[10]

以下用pattern match 將下標各+10

data /. Subscript[x_, i_] :> Subscript[x, 10 + i]

將下標移除,變數多的時候比較方便

data /. Subscript[x_, i_] :> ToExpression["x" <> ToString[i]]


--
我打研究室走過 那獨坐電腦前的容顏如苦瓜的糾結
靈感不來 長壽的煙霧不散
研究室如小小的寂寞的城 恰如商管的電梯向晚

http://chungyuandye.twbbs.org

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

2011年7月6日 星期三

[自動轉寄] Re: Google + 邀請

作者: secretshadow (台勞)
標題: Re: Google + 邀請
時間: Wed Jul 6 23:37:05 2011

※ 引述《chungyuandye (養花種魚數月亮賞星星)》之銘言:
: ※ 引述《secretshadow (台勞)》之銘言:
: : 之前感謝熱心版友讓我順利加入google+
: : 現在換我回饋啦...
: : 請大家站內信寄帳號..謝謝.:)
: : 希望大家都能順利加入google plus
: : Good Luck :)
: chungyuandye at gmail.com
: thanks a bunch!


Done :)


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

2011年7月5日 星期二

[自動轉寄] Re: [心得] Legend for Plot without PlotLegend

作者: chungyuandye (養花種魚數月亮賞星星) 看板: Mathematica
標題: Re: [心得] Legend for Plot without PlotLegend
時間: Wed Jul 6 00:10:56 2011

※ 引述《chungyuandye (養花種魚數月亮賞星星)》之銘言:
: 標題: [心得] Legend for Plot without PlotLegend
: 時間: Tue Jul 5 09:42:48 2011
:
:
: Mathematica 裡面繪製圖例的函數PlotLegend雖然功能將多,
: 但我個人覺得不是很好用,所以寫了一個比較陽春的函數。
: 如果有什麼其他的建議可以跟我講∼
:
: mylegend[plot_Graphics, legend_List] :=
: Block[{p = plot, l = legend, color, temp},
: (* 擷取色彩 *)
: color = Cases[p, Hue[a_, b_, c_] :> Hue[a, b, c], Infinity];
: (* 配對圖例及色彩 *)
: temp = {color[[#]], l[[#]]} & /@ Range[Length@color];
: (* 建立圖例 *)
: Labeled[p,
: Grid[{Graphics[{#[[1]], Thickness[0.1], Line[{{0, 0}, {1, 0}}]},
: ImageSize -> {24, 24}, AspectRatio -> 8/24, ImagePadding -> 0],
: #[[2]]} & /@ temp],
: (* 指定圖例位置 *)
: {{Right, Top}}]
: ]
:
: 用法:
:
: mylegend[圖形,圖例文字]
:
: p1 = Plot[{Sin[x], Cos[x]}, {x, 0, 2 Pi}]
:
: mylegend[p1,{Sin,Cos}]
:
: ◆ From: 218.173.130.220
: 推 Frobenius:推∼ 07/05 15:33
: 推 xgcj:!! 07/05 16:39
: 推 kichigop:老師你發paper用的圖是直接Mathematica弄出來的嗎? 07/05 19:27
: → kichigop:還是用Origin或Grapher之類的軟體? 07/05 19:27
: → chungyuandye:我只有用Mathematica,轉成EPS也比較方便 07/05 20:18
: 推 Frobenius:請問怎麼用Mathematica轉成EPS?能互轉嗎^^ 07/05 23:30

事實上Mathematica在處理圖形間檔案格式的轉換也是相當方便,
以上面的圖形為例

Export["test.eps",mylegend[p1,{Sin,Cos}]

這時候檔案會儲存到你的home directory,如果你不知道你的Home Directory在哪

Directory[]

這個指令會傳回預設的目錄,萬一你不喜歡預設的目錄,SetDirectory["絕對路徑"]

之後所以的檔案都會儲存到你指定的目錄下。

如果你不想下指令,那圖形選擇起來,滑鼠右鍵->Save Graphics As->

自己要什麼格式自己選


但是在做迴圈時,或是要將現有的檔案轉檔時,一個一個轉就不方便
(*這時候不用到網路找轉檔程式,M@就可以 *)


首先先設定圖檔儲存的目錄,假設目錄的絕對路徑是 ~/test

( Win 應該是C:\\xxx\\,注意是兩斜線 )

(* 設定目錄為test *)
SetDirectory["~/test"];

(* 將副檔名為JPG或jpg的圖檔全部抓出來 *)
data = FileNames["*.JPG" | "*.jpg"]

(* 將JPG檔全部轉成主檔名相同的EPS檔 * )
Export[StringReplace[#,"jpg"|"JPG"->"eps"],Import[#]]&/@data

當然其他格式間的轉換也是沒問題!


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

http://chungyuandye.twbbs.org


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

2011年7月4日 星期一

[自動轉寄] [心得] Legend for Plot without PlotLegend

作者: chungyuandye (養花種魚數月亮賞星星) 看板: Mathematica
標題: [心得] Legend for Plot without PlotLegend
時間: Tue Jul 5 09:42:48 2011


Mathematica 裡面繪製圖例的函數PlotLegend雖然功能將多,
但我個人覺得不是很好用,所以寫了一個比較陽春的函數。
如果有什麼其他的建議可以跟我講∼


mylegend[plot_Graphics, legend_List] :=
Block[{p = plot, l = legend, color, temp},

(* 擷取色彩 *)

color = Cases[p, Hue[a_, b_, c_] :> Hue[a, b, c], Infinity];

(* 配對圖例及色彩 *)

temp = {color[[#]], l[[#]]} & /@ Range[Length@color];

(* 建立圖例 *)

Labeled[p,
Grid[{Graphics[{#[[1]], Thickness[0.1], Line[{{0, 0}, {1, 0}}]},
ImageSize -> {24, 24}, AspectRatio -> 8/24, ImagePadding -> 0],
#[[2]]} & /@ temp],

(* 指定圖例位置 *)

{{Right, Top}}]
]

用法:

mylegend[圖形,圖例文字]

p1 = Plot[{Sin[x], Cos[x]}, {x, 0, 2 Pi}]

mylegend[p1,{Sin,Cos}]

p2=ListLinePlot[Accumulate@RandomReal[{-1,1},100]&/@Range[5]]

mylegend[p2,{"Series-1","Series-2","Series-3","Series-4","Series-5"}]

p3=ContourPlot[Evaluate[x^2+y^2==#&/@Range[5]],{x,-3,3},{y,-3,3}]

mylegend[p3,{"Circle-1","Circle-2","Circle-3","Circle-4","Circle-5"}]


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

http://chungyuandye.twbbs.org


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