自己常用的Mathematica代碼


理論力學(xué)輔助:

Lf[tt_, vv_, var__, t_] := 
 Module[{l = Simplify[tt - vv], n = Length[var], i = 0},
  Table[D[D[l, D[var[[i]], t]], t] - D[l, var[[i]]], {i, 1, n}]
  ]

例子:

In[1]:= Lf[1/2 m x1'[t]^2 + 1/2 m x2'[t]^2, 
 1/2 k (x1[t]^2 + x2[t]^2), {x1[t], x2[t]}, t]

Out[1]= {k x1[t] + m (x1^\[Prime]\[Prime])[t], 
 k x2[t] + m (x2^\[Prime]\[Prime])[t]}

大物實驗助手:

處理數(shù)據(jù):

FixData[list_List, f_Function] := 
 Module[{l = Length[list]}, Table[f[list[[i]]], {i, 1, l}]]

離散函數(shù)頻譜分析:

注:正在完善之中

FuL[l_List, \[Omega]_, \[Delta]t_, {a_, b_}] := 
 1/Abs[b - a] Total@
   Table[l[[i]] \[Delta]t E^(I \[Omega] i \[Delta]t), {i, 1, 
     Length[l]}]

(*使用示例*)
ls = Table[Evaluate[x[t] /. s], {t, 0, 200, 0.1}];(*s是一個混沌方程的解*)

PL = Flatten@
   Table[FuL[ls, \[Omega], 0.1, {0, 200}], {\[Omega], 0.1, 4, 0.002}];
頻譜圖
函數(shù)名稱 用途 格式
FuL 計算頻譜滩愁,輸出列表 FuL[離散列表, 角頻率, 間隔時間, {起始, 結(jié)束}]

復(fù)變函數(shù)繪圖好幫手:

TransComplexPlot[w_, f_, {x_, xf_, xz_}, {y_, yf_, yz_}, 
  PlotPoints -> n_, PlotRange -> {{l_, r_}, {d_, u_}}] :=
 ParametricPlot[{Re[w[f]], Im[w[f]]}, {x, xf, xz}, {y, yf, yz}, 
  PlotPoints -> n, PlotRange -> {{l, r}, {d, u}}]

使用示例:


使用示例
可使用選項 用途 格式
PlotPoints 控制細致程度 PlotPoints->n
PlotRange 繪圖范圍 PlotRange -> {{l, r}, {d, u}}

波動光學(xué)繪圖

Len = Compile[{{x, _Real}, {y, _Real}, {z, _Real}, {x2, _Real}, {y2, \
_Real}, {z2, _Real}}, 
  If[{x, y, z} != {x2, y2, z2}, Sqrt[
   N[(x - x2)^2 + (y - y2)^2 + (z - z2)^2]], 1.0]]

PutDot = Compile[{{x, _Real}, {y, _Real}, {z, _Real}, {\[CurlyPhi], \
_Real}, {\[Omega], _Real}, {W, _Real}, {b, _Real}, {L, _Integer}},
  Table[N[
    W/(b*Len[x, y, z, i, j, 0])*
     E^(-I (\[Omega] b*Len[x, y, z, i, j, 0] + \[CurlyPhi]))], {i, 1, 
    L}, {j, 1, L}]
  ]

LightDotQ[n_, \[Omega]_, b_, DList_] := Module[
  {x = Length[DList], LightPx = Table[0, {i, 1, n}, {j, 1, n}]},
  LightPx = 
   Abs[Sum[PutDot[DList[[k]][[1]], DList[[k]][[2]], 0, 
      DList[[k]][[3]], \[Omega], DList[[k]][[4]], b, n], {k, 1, x}]];
  ArrayPlot[LightPx, ColorFunction -> "Rainbow"]
  ]

LightDot3DQ[n_, \[Omega]_, b_, DList_, z_] :=
 Module[
  {x = Length[DList], LightPx = Table[0, {i, 1, n}, {j, 1, n}]},
  LightPx = 
   Abs[Sum[PutDot[DList[[k]][[1]], DList[[k]][[2]], z, 
      DList[[k]][[3]], \[Omega], DList[[k]][[4]], b, n], {k, 1, x}]];
  ArrayPlot[LightPx, ColorFunction -> "Rainbow"]
  ]

使用示例:

模擬平面上的有源相控陣光場
模擬三維空間中的光場

使用說明:

函數(shù)/變量名稱 用途 格式
LightDotQ 繪制二維空間的光場 LightDotQ[圖像大小, 光的頻率, 空間密度, 光點序列]
LightDot3DQ 繪制三維空間的光場投到二維平面上的光強分布 LightDot3DQ[圖像大小, 光的頻率, 空間密度, 光點序列, 光點高度]
光點序列 描述一個光點 {x,y,初相位,光強}

遺傳算法程序包(不完整)

1.建立種群:

MakeGroup[Num_Integer, f_Function] := Table[f[i], {i, 1, Num}]

示例:

In[1]  = MakeGroup[10, Sin[#/2] &]

Out[1] = {Sin[1/2], Sin[1], Sin[3/2], Sin[2], Sin[5/2], Sin[3], Sin[7/2], 
 Sin[4], Sin[9/2], Sin[5]}
函數(shù)名稱 用途 格式
MakeGroup 建立種群 MakeGroup[種群規(guī)模, 生成函數(shù)]

2.基因交換

基礎(chǔ)模式:

Swap[List1_List, List2_List, {S_Integer, T_Integer}] :=
 (*基因一,基因二,{開始交換點藻治,終止交換點}*)
 Block[
  {Len = Length[List1], Len2 = Length[List2]},
  If[Len != Len2, Null,(*若長度不等,返回Null*)
   (*Table[If[S\[LessEqual]i\[LessEqual]T,
   List2\[LeftDoubleBracket]i\[RightDoubleBracket],
   List1\[LeftDoubleBracket]i\[RightDoubleBracket]],{i,1,Len}]交換*)
   List1[[1 ;; S - 1]]~Join~List2[[S ;; T]]~Join~List1[[T + 1 ;; Len]]
   ]
  ]
函數(shù)名稱 用途 格式
Swap 基因交換 Swap[基因1, 基因2, {起始點, 終止點}]
基因突變:

Changex[GeList_List, Pc_Integer, {f_Function, Kind_String}] := Block[
  {GeCopy = GeList},
  Switch[(*考慮多種變化選項*)
   Kind,
   "Change", GeCopy[[Pc]] = f[GeCopy[[Pc]]],
   "Add", GeCopy[[Pc]] += f[GeCopy[[Pc]]]]; GeCopy
  ]

GeChange[p_Real, GeList_List, n_Integer, {f_Function, Kind_String}] :=
 (*突變概率截驮,基因序列藏斩,突變n次,{突變函數(shù)劫狠,突變模式}*)
 Block[
  {Len = Length[GeList],
   Pc = 0,
   GeCopy = 0
   },
  If[RandomReal[] < p,
   GeCopy = GeList;
   Nest[Changex[#, RandomInteger[{1, Len}], {f, Kind}] &, GeCopy, n](*n次迭代*)
   , GeList]
  ]

GeChangeList[GeList_List, pList_List, {f_Function, Kind_String}] :=
 (*基因序列,突變序列永部,{突變函數(shù)独泞,突變模式}*)
 Block[
  {Len = Length[GeList],
   Pc = 0,
   GeCopy = GeList
   },
  Do[GeCopy = Changex[GeCopy, pList[[i]], {f, Kind}];, {i, 1, Length[pList]}];
  GeCopy
  ]

GePMC[GeList_List, {S_Integer, T_Integer}] :=(*部分重排序*)
 (*需要突變的基因,{開始位苔埋,結(jié)束位}*)
 Module[{GeCopy = GeList,
   head = GeList[[1 ;; S - 1]],
   body = GeList[[S ;; T]],
   foot = GeList[[T + 1 ;; Length[GeList]]]
   },
  head~Join~Reverse[body]~Join~foot
  ]

示例:

隨機變異一個基因:


隨機變異一個基因

基因倒位:

基因倒位
函數(shù)名稱 用途 格式
GeChange 基因隨機變異 GeChange[突變概率,基因序列,突變n次,{突變函數(shù),突變模式}]
GePMC 基因倒位 GePMC[需要突變的基因,{開始位,結(jié)束位}]

第二次更新于2014年11月20日

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末懦砂,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌荞膘,老刑警劉巖罚随,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異羽资,居然都是意外死亡淘菩,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進店門屠升,熙熙樓的掌柜王于貴愁眉苦臉地迎上來潮改,“玉大人,你說我怎么就攤上這事腹暖』阍冢” “怎么了?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵脏答,是天一觀的道長糕殉。 經(jīng)常有香客問我,道長殖告,這世上最難降的妖魔是什么阿蝶? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮丛肮,結(jié)果婚禮上赡磅,老公的妹妹穿的比我還像新娘。我一直安慰自己宝与,他們只是感情好焚廊,可當(dāng)我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著习劫,像睡著了一般咆瘟。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上诽里,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天袒餐,我揣著相機與錄音,去河邊找鬼谤狡。 笑死灸眼,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的墓懂。 我是一名探鬼主播焰宣,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼捕仔!你這毒婦竟也來了匕积?” 一聲冷哼從身側(cè)響起盈罐,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎闪唆,沒想到半個月后盅粪,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡悄蕾,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年票顾,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片帆调。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡库物,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出贷帮,到底是詐尸還是另有隱情,我是刑警寧澤诱告,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布撵枢,位于F島的核電站,受9級特大地震影響精居,放射性物質(zhì)發(fā)生泄漏锄禽。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一靴姿、第九天 我趴在偏房一處隱蔽的房頂上張望沃但。 院中可真熱鬧,春花似錦佛吓、人聲如沸宵晚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽淤刃。三九已至,卻和暖如春吱型,著一層夾襖步出監(jiān)牢的瞬間逸贾,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工津滞, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留铝侵,地道東北人。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓触徐,卻偏偏與公主長得像咪鲜,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子锌介,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內(nèi)容