問懂計算機的你三個問題:
第一個問題,有沒有哪一種編程語言,可以同時做可視化工具、數據處理工具、科學計算工具,還可以當玩具?
第二個問題:哪種編程語言,是一本「活的百科全書」,可以從中學到各個學科的知識,比如說數學、物理、計算機圖形學等。
最後一個問題,哪一種編程語言的代碼長度可以最短?
今天給大家介紹的 Mathematica,也就是 Wolfram 語言,它就是上面問題的答案。
它的的確確,在絕大多數問題下,代碼長度都是最短的;同時,它的幫助文檔也可以說一個百科全書;進一步的,它可以做可視化、數據處理、科學計算,甚至也可以用來當玩具。
那為什麼這個編程語言會比別的語言更簡潔,同時還有這麼多功能呢?
1.簡潔
我們先從簡潔開始說起。
Mathematica的代碼之所以簡潔,有兩個重要的因素。一是它有大量的原生函數,目前,它自帶的函數已經有近五千個了;二是它的語法本身,就會使得代碼更加簡潔。
先說第一點,Mathematica擁有大量的原生函數。有人可能會說,這不就是「作弊」嘛?
確實看起來有點像作弊,但仔細研究,就會發現這不是簡單的堆砌函數,而是在「普適計算」思想指導下的必然結果。所謂「普適計算」,大致可以理解成「萬物皆可計算」。
比如說,Mathematica 中有一些濾波函數,它們可以作用到數值列表上,但同時,也可以直接作用到圖片上。進一步的,還可以作用到三維圖像上。所以可以看到,在 Mathematica 中,幾乎每一個函數,都可以作用在很多不同的對象上。而作為輔助,顯然要引入大量的配套函數。但這就像一棵樹一樣:枝幹其實並不多,但功能(樹葉)非常強大。
再說第二點,它的語法本身,就會使得代碼更加簡潔。舉一個簡單的例子,如果我想將多個函數嵌套起來,比如說這個表達式:
一般的語言可能會這樣寫:
這個時候就會發現,我們很難判斷其中一個元素到底在什麼地方。而 Mathematica 則有一個非常聰明的做法:使用 @ 符號連接函數,就像這樣寫:
這樣,函數的嵌套關係就一目瞭然了。後期還會講到 Map 函數、模式替換等操作,它們都會大幅地提高書寫效率,同時保有很好的閱讀效率。
2.百科
現在來解釋一下,為什麼我稱 Mathematica「是一個百科全書」,而且是一個「活的百科全書」。
主要得益於 Mathematica 的幫助文檔內容非常豐富,幾乎無所不包。
一個簡單的例子,Mathematica 有一個原生函數:叫做 Mandelbrot Set Plot。用來繪製 Mandelbrot 集合圖,也就是這裡顯示的這種圖像。
打開它的幫助文檔之後,點擊「更多信息和選項」,就能看到非常詳細的背景信息,比如說第一條,就給出了 Mandelbrot 集的數學定義,寫的也非常清晰明瞭。
而幫助文檔裡的例子,還可以直接就在文檔裡運行。你甚至可以修改它的幾個參數,看看有什麼變化。而且你不用擔心會損壞這些文檔,因為它不會保存這些修改。
而像這樣的幫助文檔,在 Mathematica 中非常常見,大家在後續的學習中,可以多多體驗。
3.Mathematica 是什麼?
所以,Mathematica 是什麼呢?
這就回到了第一個問題:有沒有哪一種編程語言,可以同時做可視化、數據處理、科學計算,還可以當玩具?通過這個問題,我們就可以完整的描述Mathematica了:
Mathematica = 編程語言 + 可視化工具 + 數據處理工具 + 科學計算工具 + 玩具
作為編程語言,它的代碼效率非常高;作為可視化工具,它擁有從一維到四維的可視化能力,擁有從普通照片到CT圖像的顯示能力;作為數據處理工具,它也有一整套的數學工具進行配套;而作為科學計算工具,它的數學函數幾乎覆蓋了所有數理工作所需的範圍。甚至,它還是一個玩具,使用簡短代碼,就可以進行很多有意思的實驗。
4.新課上線:
Mathematica 軟件入門教程
所以,總結一下,這套課程將會
利用很多具體的項目,來系統地講解 Mathematica 的使用方法,歡迎在「集智AI學園」參加這個系列課程。課程講師
上課方式
13節課,每週更新。線上視頻課程。
課程價格
單節 25.6元,系列課總價 256元
免費試聽
Mathematica 概述(6分鐘,免費)
Wolfram 語言入門:從1+1到混沌(24分鐘,免費)
課程大綱
一、概論
1. 簡述
簡潔:Mathematica為什麼比其他語言更簡潔?
百科:初步認識Mathematica中的寶庫——幫助文檔;
定義:Mathematica是什麼?
2. Wolfram語言入門:從1+1到混沌
數值計算;
表達式輸入 / 代數計算;
二維、三維、參數繪圖;
微分方程、數值微分方程;
Mathematica程序包
二、可視化
3. 函數可視化:繪圖函數通覽
可視化是一種分類:它將重要的信息呈現出來,同時淡化、隱藏那些不重要的信息;
Mathematica中函數繪圖工具的種類
對主要繪圖工具的詳細講解
如何選擇繪圖工具?
4. 函數可視化:繪圖函數的選項
通過選項,可以繪製出任意想要的圖像;
如何控制圖像的風格?
如何修改圖像的細節?
如何「一鍵」得到符合常見論文規範的圖形?
5. 數據可視化:你需要怎樣的可視化工具
數據可視化工具通覽
各個數據可視化工具的講解
數據可視化函數的用法、選項
導入、處理外部數據
6. 數據可視化:數據可視化的技巧
處理大量數據的方法:採樣(系統自帶的採樣函數,手動採樣,像素化)
處理重疊數據的方法:使用密度圖處理重疊數據,使用二維分佈圖處理重疊數據,加入噪聲
7. 圖形繪製:手寫Plot函數
Graphics函數
幾何對象通覽
手寫Plot函數
作業:手寫ListPlot函數
三、Wolfram語言基礎
8. 界面:可以計算的筆記本
提示欄
上下文、文件位置與筆記本的關係
筆記本排版
9. 函數式編程:不用For循環的程序
一種問題有幾種寫法?
For, Table, Do, Nest,它們都是什麼意思?
比較各個函數的效率
@
模式,與模式匹配
四、數據處理
10. 數據處理:大物實驗的「終極神器」
數據輸入、預處理(字符轉數字、清除無效數據)
轉置的妙用
擬合、以及相關檢測
插值函數
濾波
11. 圖像處理:「手寫」一個PS
PS是怎樣調整圖像的?
如何在Mathematica中修圖?
如何將這些功能做成界面?
五、科學數學計算
12. 數學分析 / 線性代數
極限、數列
微積分與微分方程
為程序提供更多的信息
線性代數
13. 圖與網絡:社交網絡分析
社交網絡是什麼?
社交網絡模型:Barabasi-Albert模型
如何可視化一個網絡?
如何手動生成特定的網絡?
如何測量一個網絡的參數?
閱讀更多 集智俱樂部 的文章
關鍵字: Mathematica 數據挖掘 圖像處理