本書基于Mathematica 12.3,全面介紹了Mathematica軟件的高級編程技術,全書分為8章:第1章Mathematica基礎,重點闡述Mathematica軟件的入門操作;第2章Wolfram語言經典編程,討論類似于C語言等高級語言的Mathematica編程方法;第3章Wolfram語言列表,敘述了Mathematica軟件重要的數(shù)據(jù)類型列表的操作方法;第4章詳細討論了Wolfram語言內置函數(shù)和自定義函數(shù)的用法;第5章模塊編程技術分析Mathematica軟件四種主要的模塊編程技巧;第6章討論了Wolfram語言字符串和數(shù)據(jù)集;第7章展示了Mathematica軟件強大的繪圖和聲音處理能力;第8章詳細闡述了Mathematica程序包的設計方法。Mathematica軟件是能體現(xiàn)計算機價值的科學計算軟件,而運行于其上的Wolfram語言是**層次的科學計算語言。本書基于Mathematica 12.3,全面介紹了Mathematica軟件的高級編程技術, 本書可作為高等院校工學、理學、藝術學和經濟學等學科本科生和研究生學習Mathematica軟件和Wolfram語言的入門教材,也可作為這些學科門類下設專業(yè)本科生和研究生及科研人員用于數(shù)據(jù)分析的參考書。
Mathematica在作者們的學習和科研中占據(jù)著核心地位。對于從事教學和科研的普通高校教師來說,Mathematica軟件是最有價值的軟件,也是教學和科研工作的強有力助手。除了Mathematica軟件之外,我們還經常使用Visual Studio(C#語言)和RAD Studio(C 語言)兩種編程開發(fā)環(huán)境,但都是為Mathematica軟件服務。在Mathematica軟件環(huán)境下使用Wolfram語言設計并測試好算法程序后,再借助于C#或C 語言生成可執(zhí)行工程軟件。我們擬通過本書向和我們一樣從事教學和科研工作的朋友們推薦Mathematica軟件,同時向對高級程序設計和科學計算感興趣的讀者推薦Wolfram語言。
Mathematica軟件能做什么?在科學研究上,我們使用Mathematica軟件實現(xiàn)圖像的加密與解密算法、神經網(wǎng)絡算法以及量子計算算法(一類有趣的復矩陣變換); 在教研活動上,我們在大學物理、高等數(shù)學、線性代數(shù)、概率論與數(shù)理統(tǒng)計、復變函數(shù)、數(shù)學物理方程、數(shù)學建模、信號與系統(tǒng)、數(shù)字信號處理、自動控制(還使用了SystemModeler軟件)、數(shù)字圖像處理和神經網(wǎng)絡與機器學習等課程中,均借助Mathematica軟件輔助教研,效果頗佳。總體來說,Mathematica軟件是一種稱為Wolfram語言的高級計算機語言的工作平臺,Wolfram語言比其他計算機語言更容易實現(xiàn)各類算法,且以友好的方式呈現(xiàn)算法結果。C語言被稱為過程化語言,其按算法的實現(xiàn)流程進行程序設計,即過程化編程。C 和C#語言稱為面向對象的語言,用類(一種數(shù)據(jù)結構)將算法的屬性(即數(shù)據(jù))和方法(即函數(shù))封裝起來,增強程序的健壯性。而Wolfram語言是一種函數(shù)式的語言,不同于C語言(由于C語言程序由一個main函數(shù)和其他若干功能函數(shù)組成,C語言也稱函數(shù)化語言),Wolfram語言的函數(shù)式是指這種語言中,程序由函數(shù)實現(xiàn),不但每個函數(shù)均可以獨立運行得到相應的結果,而且函數(shù)可以復合調用執(zhí)行復雜的功能。Wolfram語言可視為一種泛函化的語言,并可稱之為數(shù)學語言或超級語言。
Mathematica軟件誕生于1988年,創(chuàng)始人為科學家Stephen Wolfram,而運行于Mathematica軟件上的程序設計語言則以這位科學家的名字命名,稱之為Wolfram語言。目前,Mathematica軟件包括6000多個函數(shù),涉及了物理學、數(shù)學、化學、生物學、信息科學、計算機科學、藝術學、宇宙學、建筑學和金融學等眾多領域,這些函數(shù)的實現(xiàn)方法統(tǒng)稱為Wolfram技術。Mathematica軟件在系統(tǒng)仿真領域的拓展軟件稱為SystemModeler(SystemModeler軟件支持Modelica建模語言和Wolfram科學計算語言,為Mathematica軟件的伴侶軟件),Mathematica軟件和SystemModeler軟件被公認為科學計算和建模仿真領域最先進的軟件,在全球范圍內推動了并繼續(xù)推動著科學和技術的創(chuàng)新。可以說,Mathematica軟件是最能體現(xiàn)計算機價值的科學計算軟件,而Wolfram語言是最高層次的科學計算語言。
多年來,Mathematica軟件已經成為物理學和數(shù)學領域的主要科研工具,而現(xiàn)在,Mathematica軟件和Wolfram技術也被廣泛應用于信息科學、計算機科學、生命科學、社會科學和金融等學科領域的數(shù)據(jù)分析和工程計算。本書著眼于Mathematica軟件的基本用法和Wolfram技術的基本技巧,面向擬使用Mathematica軟件助力其學習和研究的大學生、研究生和科研工作人員。本書是一本自成體系的Mathematica教材。此外,對于初次接觸Mathematica軟件的讀者,推薦《Mathematica科學計算與程序設計》(西安電子科技大學出版社,2021年)作為入門速成教材; 對于信息安全研究人員,推薦《高級圖像加密技術基于Mathematica》(西安電子科技大學出版社,2020年)作為學習Mathematica軟件應用于密碼算法編程的參考書。這兩本教材展示了Wolfram技術不但以優(yōu)美的形式實現(xiàn)各式各樣的算法,而且還將這些算法的結果呈現(xiàn)進一步升華,助力研究人員深入分析算法的本質和內涵。
全書基于Mathematica 12.3,共分為9章。第1章為Mathematica基礎,介紹了Mathematica軟件的入門操作和基本數(shù)據(jù)類型,為后續(xù)章節(jié)的學習奠定基礎。第2章為Wolfram語言經典編程,重點分析了經典分支語句和循環(huán)語句的實現(xiàn)方法,同時介紹了Mathematica軟件中的關系運算符和邏輯運算符,并通過大量實例突出了經典編程方法的特點。第3章討論了Wolfram語言中最重要的數(shù)據(jù)類型列表,介紹了列表的構造方法和操作技巧。第4章闡述了Mathematica內置函數(shù)的用法以及自定義用戶函數(shù)的技巧和方法,重點討論了Map和Apply函數(shù)的用法。第5章詳細闡述了Wolfram語言模塊編程技術,對比分析了4種模塊編程函數(shù)的用法,并討論了并行編程方法。第6章詳細介紹了字符串的操作方法,并討論了規(guī)則、關聯(lián)、數(shù)據(jù)集和模式匹配。第7章結合科技文獻出版中對圖形的要求,詳細闡述了Mathematica軟件的二維繪圖、三維繪圖和動畫技術,并討論了Mathematica軟件的聲音處理技術。第8章深入介紹了自定義程序包技術,討論了編寫程序包并將自定義函數(shù)及其說明文檔添加到Mathematica軟件中的方法,最后敘述了Wolfram自然語言輸入和筆記本程序調試方法。第9章討論了感知器和BP神經網(wǎng)絡的實現(xiàn)方法,詳細介紹了借助Wolfram語言實現(xiàn)神經網(wǎng)絡學習和預測的程序設計技巧。
本書由國家自然科學基金(No. 61762043)、江西省自然科學基金(No. 20192BAB207022)和江西省教育廳科學技術研究重點項目(No. GJJ190249)資助出版,特此鳴謝。
本書由江西財經大學量子計算研究中心信息安全課題組編寫。其中,江西財經大學陳愛國執(zhí)筆第1章、唐穎軍執(zhí)筆第2章、吳文華執(zhí)筆第3章、陳偉執(zhí)筆第4章、熊堂堂執(zhí)筆第6章、張勇執(zhí)筆第7~9章; 濱州學院胡永生教授執(zhí)筆第5章。全書由張勇統(tǒng)稿、定稿。作者張勇感謝導師陳天麒教授、洪時中教授和汪國平教授對其科研工作和學術研究的長期指導,他們對科學的熱愛和對作者的鼓勵是作者從事科研工作的巨大精神支柱; 感謝其愛人賈曉天老師在煩瑣的資料檢索和整理工作方面所做的細致工作,為其節(jié)省了大量學習時間。全體作者感謝Wolfram Research公司楊圣匯老師的悉心指導,為本書的寫作清除了技術困難和障礙; 感謝清華大學出版社趙凱老師對本書寫作和出版的支持。
本書極力呈現(xiàn)Mathematica軟件對于大學生和各領域教研人員的重要性,但限于作者們的知識水平,書中難免有缺漏之處,懇請同行專家、學者和讀者朋友不吝賜教。
免責聲明: 書中Mathematica和Wolfram Research等是Wolfram公司的注冊商標。本書內容僅用于教學,嚴禁任何單位和個人將其應用于商業(yè)場合。
作者
2022年2月
于江西財經大學楓林園
源碼
教學大綱
第1章Mathematica基礎
1.1認識Mathematica
1.1.1啟動Mathematica
1.1.2筆記本
1.1.3一個簡單實例
1.2自定義函數(shù)
1.2.1筆記本自定義函數(shù)
1.2.2程序包自定義函數(shù)
1.3全局變量
1.3.1變量名
1.3.2上下文環(huán)境
1.3.3全局參數(shù)
1.4基本數(shù)據(jù)類型
1.4.1Wolfram語言常數(shù)
1.4.2原子數(shù)據(jù)類型
1.4.3浮點數(shù)
1.4.4數(shù)量單位
1.4.5數(shù)制表示
1.5文檔中心
1.5.1幫助文檔
1.5.2插件文檔
本章小結
第2章Wolfram語言經典編程
2.1循環(huán)編程
2.1.1For循環(huán)
2.1.2While循環(huán)
2.1.3NestWhile循環(huán)
2.1.4Do循環(huán)
2.2關系運算符和邏輯運算符
2.2.1關系運算符
2.2.2邏輯運算符
2.3選擇編程
2.3.1If分支
2.3.2Switch分支
2.3.3Which分支
2.3.4Piecewise函數(shù)
2.4典型實例
本章小結
第3章Wolfram語言列表
3.1列表構造
3.1.1Import函數(shù)
3.1.2Table函數(shù)
3.1.3數(shù)組與矩陣
3.1.4字符列表
3.1.5隨機數(shù)列表
3.2列表操作
3.2.1列表元素訪問
3.2.2Map和Apply方法
3.2.3向量與矩陣操作
3.2.4集合操作
本章小結
第4章內置函數(shù)與自定義函數(shù)
4.1常用內置函數(shù)
4.1.1列表處理
4.1.2基本初等數(shù)學函數(shù)
4.1.3基本高等數(shù)學函數(shù)
4.1.4基本矩陣函數(shù)
4.1.5函數(shù)調用形式
4.2自定義函數(shù)
4.2.1函數(shù)定義
4.2.2函數(shù)選項設置
4.3純函數(shù)
4.3.1純函數(shù)定義
4.3.2嵌套函數(shù)
本章小結
第5章模塊編程技術
5.1Module模塊
5.1.1Module函數(shù)
5.1.2Module模塊實例
5.2Block模塊
5.2.1Block函數(shù)
5.2.2Block模塊實例
5.3With模塊
5.3.1With函數(shù)
5.3.2With模塊實例
5.4Compile模塊
5.4.1配置MinGW64編譯器
5.4.2Compile函數(shù)
5.4.3Compile模塊實例
5.5并行編程
5.5.1并行計算函數(shù)
5.5.2并行處理函數(shù)
本章小結
第6章字符串與數(shù)據(jù)集
6.1字符串
6.1.1字符串合并與拆分
6.1.2字符串替換操作
6.1.3字符串模式匹配
6.1.4正則表達式
6.1.5字符串變換函數(shù)
6.2規(guī)則與關聯(lián)
6.2.1規(guī)則
6.2.2關聯(lián)
6.3數(shù)據(jù)集
6.4模式匹配
本章小結
第7章圖形與聲音
7.1二維繪圖
7.1.1Plot函數(shù)
7.1.2DiscretePlot函數(shù)
7.1.3ListPlot函數(shù)
7.1.4ListLinePlot函數(shù)
7.1.5Graphics函數(shù)
7.1.6PolarPlot函數(shù)
7.1.7ParametricPlot函數(shù)
7.1.8ContourPlot函數(shù)
7.1.9BarChart函數(shù)
7.1.10PieChart函數(shù)
7.1.11Show函數(shù)
7.1.12GraphicsGrid函數(shù)
7.2三維繪圖
7.2.1Plot3D函數(shù)
7.2.2DiscretePlot3D函數(shù)
7.2.3ParametricPlot3D函數(shù)
7.2.4RevolutionPlot3D函數(shù)
7.2.5SphericalPlot3D函數(shù)
7.2.6ListPlot3D函數(shù)
7.2.7ContourPlot3D函數(shù)
7.2.8ListContourPlot3D函數(shù)
7.2.9ListSurfacePlot3D函數(shù)
7.2.10Graphics3D函數(shù)
7.3動畫
7.3.1Animate函數(shù)
7.3.2Manipulate函數(shù)
7.4圖像處理基礎
7.4.1圖像轉換為矩陣
7.4.2矩陣轉換為圖像
7.5聲音
本章小結
第8章Mathematica程序包
8.1歐幾里得算法
8.2程序包
8.3Wolfram Workbench開發(fā)
8.3.1Wolfram Workbench安裝
8.3.2創(chuàng)建程序包
8.3.3創(chuàng)建測試文檔
8.3.4創(chuàng)建幫助文檔
8.4自然語言
8.5程序調試
本章小結
第9章神經網(wǎng)絡
9.1數(shù)據(jù)預處理
9.1.1數(shù)據(jù)歸一化
9.1.2數(shù)據(jù)白化
9.1.3協(xié)方差均衡
9.1.4數(shù)據(jù)還原
9.1.5數(shù)據(jù)預處理模塊程序
9.2感知器
9.2.1感知器原理
9.2.2感知器實例
9.2.3Wolfram實現(xiàn)方法
9.3BP神經網(wǎng)絡
9.3.1BP算法
9.3.2BP神經網(wǎng)絡實例
9.3.3Wolfram實現(xiàn)方法
本章小結
附錄AMathematica筆記本目錄管理和顯示樣式
參考文獻