
發(fā)布
注冊
/
登錄Mathematica
關(guān)注創(chuàng)建者:匿名 創(chuàng)建時(shí)間:2015-11-27

Mathematica的實(shí)例教程
如果教學(xué)或科研組有眾多 Mathematica 使用的需求,歡迎評論聯(lián)系我們獲取優(yōu)惠價(jià)格。
在 80 年代,我參加了一個(gè)科學(xué)演講,是關(guān)于一種相當(dāng)麻煩的方法來并行化當(dāng)時(shí)存在的一個(gè)符號計(jì)算系統(tǒng),我很快意識到我可以更優(yōu)雅地為 Mathematica 帶來并行性,這要?dú)w功于它的符號通信協(xié)議 MathLink。這個(gè)協(xié)議讓我不僅可以在同時(shí)運(yùn)行的 Mathematica 內(nèi)核之間交換數(shù)據(jù),還可以交換程序。
結(jié)果是一個(gè)完全用Mathematica編寫的包,稱為 Parallel Computing Toolkit (https://wolfr.am/10mMRZwRh)。當(dāng)時(shí),并行計(jì)算意味著昂貴的大型機(jī)器、FORTRAN 和批處理作業(yè),在交互式的 Mathematica 筆記本上實(shí)驗(yàn)不同的并行模式是相當(dāng)令人滿意的,在本地網(wǎng)絡(luò)上的多臺機(jī)器進(jìn)行計(jì)算, 能夠并行地進(jìn)行函數(shù)編程,并并行地使用符號表達(dá)式和任意精度的算法。很多人對此表示很驚訝,他們認(rèn)為并行化是一件非常復(fù)雜的事情,需要超級計(jì)算機(jī)和大量資金,以及相當(dāng)大的問題,才值得。事實(shí)是,人們解決的大多數(shù)問題都很容易并行化。
與此同時(shí),并行計(jì)算機(jī)的格局已經(jīng)穩(wěn)定并演變?yōu)槿N架構(gòu):多核機(jī)器、托管集群和 PC 的自組織網(wǎng)絡(luò)。Mathematica 在所有這些方面的工作方式都相同,但查找資源和啟動(dòng)流程的方式卻大不相同;Mathematica 非常適合與現(xiàn)有環(huán)境交互,并且通過一些額外的 Java 代碼,現(xiàn)在可以直接在所有三種架構(gòu)中使用。
為了應(yīng)對多核機(jī)器的廣泛可用性,Wolfram Research 決定在 Mathematica 的每個(gè)軟件中包含我的 Parallel Computing Toolkit 的功能。此時(shí)(對于第 7 版)我們還徹底修改了并行命令的設(shè)計(jì)。
因此,Mathematica 現(xiàn)在知道它運(yùn)行的計(jì)算機(jī)的處理器內(nèi)核數(shù)量,并在需要時(shí)自動(dòng)使用它們。
展開 索恩提供的解決方案從Wolfram語言(即Mathematica軟件使用的語言)編程開始?!拔覍懴路匠淌?,在Mathematica中進(jìn)行測試,然后再用ImageTransformation函數(shù)構(gòu)建圖像?!彼鞫鹘榻B說。
創(chuàng)作團(tuán)隊(duì)還需要在黑洞周圍放置一個(gè)吸積盤,以計(jì)算出從IMAX相機(jī)所看到的黑洞外觀(光線在黑洞的翹曲時(shí)空中彎曲),并在蟲洞附近模擬光線傳播。利用Mathematica的數(shù)值積分和ImageTransformation函數(shù),索恩可以確保方程生成正確的結(jié)果?!?em>Mathematica是我沿著方程是否正確并為Double Negative視覺效果團(tuán)隊(duì)提供原始圖像的方式?!背似狈砍晒χ?,索恩的創(chuàng)新方法還在“美國物理學(xué)雜志”(American Journal of Physics)和“古典與量子引力”(Classical and Quantum Gravity)雜志上發(fā)表。他在文章中描述的可視化技術(shù)有望在未來的電影和研究項(xiàng)目中得到應(yīng)用。
索恩早在Interstellar之前就是Mathematica的用戶。在他早期的職業(yè)生涯中,所有的編程工作都是用Fortran完成的,但Mathematica出現(xiàn),很快就吸引了他,并轉(zhuǎn)為使用Mathematica?!?em>Mathematica改變了一切,我基本上放棄了Fortran。”索恩說。到20世紀(jì)90年代,Mathematica是他進(jìn)行數(shù)值工作和運(yùn)算的首選工具。他還使用Mathematica在他的著作The Science of Interstellar一書中創(chuàng)作了許多插圖。該書的讀者群是一般大眾,其中有50多個(gè)插圖都是在Mathematica的幫助下創(chuàng)作的。它曾蟬聯(lián)“紐約時(shí)報(bào)暢銷書排行榜”五個(gè)星期,激發(fā)了電影觀眾對科學(xué)和物理學(xué)的興趣。
展開 ·Mathematica本身就是一個(gè)方便學(xué)習(xí)的程序語言。 Mathematica提供互動(dòng)且豐富的幫助功能,讓使用者現(xiàn)學(xué)現(xiàn)賣。強(qiáng)大的功能,簡單的操作,非常容易學(xué)習(xí)特點(diǎn),可以最有效的縮短研發(fā)時(shí)間。
當(dāng)我聽到人們說Mathematica不夠快的時(shí)候,我通常會提出想要看一下這段令他們煩惱的代碼,然后會發(fā)現(xiàn),其實(shí)并不是Mathematica本身的表現(xiàn)不夠好,而是Mathematica沒有被最優(yōu)使用。我覺得我應(yīng)該和大家分享一下我在優(yōu)化Mathematica代碼時(shí)首先會看的一些內(nèi)容。
01
如果可以的話盡量盡早使用浮點(diǎn)數(shù)
我最??吹降膶?dǎo)致代碼變慢的問題是,程序員會不經(jīng)意地讓Mathematica做超出需要的細(xì)致的事情。沒必要的代數(shù)精確是其中最常見的問題。
在多數(shù)與數(shù)字相關(guān)的軟件中,是不需要這么精確的代數(shù)的。1/3和0.33333333333333是一樣的。當(dāng)你碰到特別嚴(yán)重的在數(shù)字上不穩(wěn)定的問題時(shí)這個(gè)差異可能會被放大的特別明顯,但是,在大多數(shù)情況中,浮點(diǎn)數(shù)已經(jīng)足夠使用了,而且最重要的是,浮點(diǎn)數(shù)運(yùn)算更快。Mathematica中,任何小于16位的小數(shù)都被看作是機(jī)器浮點(diǎn)數(shù),所以如果更想要速度而可以舍棄一些精確性的時(shí)候,記得用小數(shù)(比如,三分之一輸入為1./3.)。以下是一個(gè)例子,可以看到使用浮點(diǎn)數(shù)是精確數(shù)運(yùn)行速度的50.6倍。在這個(gè)例子中,兩個(gè)數(shù)字的使用得到的是同一個(gè)結(jié)果。
在符號運(yùn)算中也是這樣。如果你不是很在意符號式的結(jié)果,并且計(jì)算的穩(wěn)定性也不是問題的話,那么盡快使用數(shù)值作為替代。比如,求解下面的二項(xiàng)式符號計(jì)算時(shí),在使用數(shù)值作為替代之前,這個(gè)代碼可能會讓Mathematica生成長達(dá)五頁的中間符號表達(dá)式。
展開 
Mathematica的相關(guān)專題、標(biāo)簽、搜索
Mathematica的最新內(nèi)容
關(guān)鍵詞:博弈論;mathematica;逆向求解法,納什均衡,均衡解參數(shù)分析
本文復(fù)現(xiàn)《中國管理科學(xué)》中一篇題為“考慮企業(yè)異質(zhì)性的外部知識對流程創(chuàng)新作用機(jī)制的博弈分析[1]”。
關(guān)鍵字:mathematica;博弈論,逆向求解法,納什均衡,均衡解參數(shù)分析
本文復(fù)現(xiàn)一篇題為“Who should invest in blockchain technology under different pricing models in supply chains?[1]” 近年來,供應(yīng)鏈成員爭相投資區(qū)塊鏈技術(shù),以提高產(chǎn)品可追溯性,從而在運(yùn)營中獲得更多利潤。
相應(yīng)形函數(shù)外插矩陣:
公式推導(dǎo)
為了便于公式的推導(dǎo),可借助Mathematica符號計(jì)算軟件,編寫如下代碼:
(*應(yīng)用2*2高斯積分方案*)
(*定義形函數(shù)(Q4)*)
l1[\[Xi]_] := (1 - \[Xi])/2
l2[\[Xi]_] := (1 + \[Xi])/2
N1[\[Xi]_, \[Eta]_] := l1[\[Xi]]*l1[\[Eta]
在學(xué)習(xí)Mathematica元編程和研究NP問題的過程中,本文所討論的問題是一個(gè)很好的切入點(diǎn)。
沖擊壓縮多孔材料
代碼相關(guān)
Python | 破片戰(zhàn)斗部對某導(dǎo)彈陣地的毀傷效果
Python | 多彈打擊地面人員的毀傷概率分布
LS-DYNA | 使用Python批量輔助LS-DYNA的結(jié)構(gòu)設(shè)計(jì)
LS-DYNA | 寫漢字“戰(zhàn)斗部”
PyQt | 戰(zhàn)斗部毀傷效能評估軟件的設(shè)計(jì)與開發(fā)
ChatGPT | LS-DYNA遇到ChatGPT
爬蟲+游戲 | Mathematica
鋼錘低速撞擊鋼筋混凝土
代碼相關(guān)
Python | 破片戰(zhàn)斗部對某導(dǎo)彈陣地的毀傷效果
Python | 多彈打擊地面人員的毀傷概率分布
LS-DYNA | 使用Python批量輔助LS-DYNA的結(jié)構(gòu)設(shè)計(jì)
LS-DYNA | 寫漢字“戰(zhàn)斗部”
PyQt | 戰(zhàn)斗部毀傷效能評估軟件的設(shè)計(jì)與開發(fā)
ChatGPT | LS-DYNA遇到ChatGPT
爬蟲+游戲 | Mathematica
鋼錘低速撞擊鋼筋混凝土
代碼相關(guān)
Python | 破片戰(zhàn)斗部對某導(dǎo)彈陣地的毀傷效果
Python | 多彈打擊地面人員的毀傷概率分布
LS-DYNA | 使用Python批量輔助LS-DYNA的結(jié)構(gòu)設(shè)計(jì)
LS-DYNA | 寫漢字“戰(zhàn)斗部”
PyQt | 戰(zhàn)斗部毀傷效能評估軟件的設(shè)計(jì)與開發(fā)
ChatGPT | LS-DYNA遇到ChatGPT
爬蟲+游戲 | Mathematica
鋼錘低速撞擊鋼筋混凝土
代碼相關(guān)
Python | 破片戰(zhàn)斗部對某導(dǎo)彈陣地的毀傷效果
Python | 多彈打擊地面人員的毀傷概率分布
LS-DYNA | 使用Python批量輔助LS-DYNA的結(jié)構(gòu)設(shè)計(jì)
LS-DYNA | 寫漢字“戰(zhàn)斗部”
PyQt | 戰(zhàn)斗部毀傷效能評估軟件的設(shè)計(jì)與開發(fā)
ChatGPT | LS-DYNA遇到ChatGPT
爬蟲+游戲 | Mathematica
8b476665bc30ef733cfed92e83adcd67fe53f92f22638e1a7b2b071c46624199ea19045fcPython | 破片戰(zhàn)斗部對某導(dǎo)彈陣地的毀傷效果
Python | 多彈打擊地面人員的毀傷概率分布
LS-DYNA | 使用Python批量輔助LS-DYNA的結(jié)構(gòu)設(shè)計(jì)
LS-DYNA | 寫漢字“戰(zhàn)斗部”
PyQt | 戰(zhàn)斗部毀傷效能評估軟件的設(shè)計(jì)與開發(fā)
ChatGPT | LS-DYNA遇到ChatGPT
爬蟲+游戲 | Mathematica


