用免費的電腦資源協助數學的教學,學習與探索_復華中學教師營_中山大學應數系高中數學人才班_2021

“Talk is cheap. Show me the code.”
― Linus Torvalds

老子第41章
上德若谷
大白若辱
大方無隅
大器晚成
大音希聲
大象無形
道隱無名

拳打千遍, 身法自然

“There’s no shortage of remarkable ideas, what’s missing is the will to execute them.” – Seth Godin
「很棒的點子永遠不會匱乏,然而缺少的是執行點子的意志力。」—賽斯.高汀


摘要:

直到, 在學習 R 語言的過程, 才發現有 Markdown 這種文件,
他的語法很單純, 卻可以快速呈現網頁部落格等文件的畫面, 等於是一種簡化的網頁文件, 在近10年內逐漸受到喜愛.
=
(用簡單的語法封裝繁雜的網頁語法)

總結

只考慮免費開源之軟體時:

  1. 以 markdown 的格式編輯製作 跨平台、跨版本的筆記、講義、部落格等文件 (數學的講義, 報告, 作業之協助)
  2. 數學圖形的繪製之軟體:
    直覺的滑鼠拖動方式, 可以使用 GeoGebra, 需要更精確的程式操控可以使用 Python 的 海龜繪圖模組 turtle 或Matplotlib.pyplot 程式庫.
  3. 數學的計算與檢驗:
    基礎的部分(微積分含中學以下)可以使用 GeoGebra,
    需要更進階的微積分計算可以使用 Python 的 SymPy 等程式庫(特別是符號運算的部分, 需要使用 SymPy).
    4 數學的探索之協助
    我自己本身的經驗, 通常有某個想法時, 會先以 免費GeoGebra (或免費Mathigon) 進行視覺上的探索, 如果要再擴大尺度與複雜度時, 才開始用 Python, Matlab 等程式模擬探索.

Remark:

  • Mathigon, 牛津大學學霸開發的免費開源數學軟體.
  • GeoGebra, 奧地利薩爾斯堡大學開發的免費開源數學軟體.

Markdown 優缺點

優點:
多數版本 支援 Latex 編輯數學符號 語法
可讀性高
比HTML寫起來簡潔
好理解,快速撰寫
支援HTML寫法

缺點:

功能較HTML少,有些方法還是需要使用HTML標籤(tag)來撰寫

Ref: Coding起來- 程式開發不可忽略的語言- Markdown 教學 link




用免費的電腦資源協助數學的教學, 學習與探索

講題: 用免費的電腦資源協助數學的教學, 學習與探索

講者: 國立高雄師範大學數學系 賴鵬仁教授

主辦單位: 高雄市復華中學教師研習營

時間:110.05.12(日)下午13:50~15:50

對象:中學教師


講題: 用免費的電腦資源協助數學的學習與探索

講者: 國立高雄師範大學數學系 賴鵬仁教授

主辦單位: 國立中山大學應用數學系 高中數學人才培育班

時間:110.03.14(日)下午1:30~3:30

地點:中山大學理學院一樓國際會議廳

對象:國中~高中二年級數學人才培育班學生(約110人)

作者介紹的解決方案

這次講題, 作者介紹的 用免費的電腦資源協助數學 的解決方案, 並不是最方便最好的, 只是許多可行的方案中的一種, 以講者在數學系教學使用電腦軟體輔助教學, 實踐超過20年的經驗, 的一些建議.

1. 以 markdown 的格式編輯製作 跨平台、跨版本的筆記、講義、部落格等文件 (數學的講義, 報告, 作業之協助)

是建議以 markdown 的格式編寫:
markdown 文件, 副檔名是 .md 檔, , 其實是純文字檔, 可以輕易轉成網頁 .html.pdf 的檔案, 可以想成是用簡單的指令語法, 先在純文字檔寫, 再用可以編譯 .md 檔的免費軟體例如 RStudio、 VS code、Typora 等, 讓文件呈現出網頁部落格等文件的畫面, 過程跟寫一份 C 語言的程式或是一份 LaTex 文件類似.

markdown 的格式不單可以呈現一般文章, 也適合用在簡報的呈現,

markdown 最讓本人喜愛的兩點是, 因為我的講義需要使用大量的數學符號與數學圖形,

  1. markdown 可以插輕鬆入圖檔, 動畫檔 .gif 也可以, 也可以畫流程圖、心智圖等, 也可以插入程式碼.
  2. markdown 可以插輕鬆入 Latex 之指令 (Latex 或 Tex 是專業編輯 數理化公式或科學算式等 之程式語言)
    甚至在有些編輯器下(RStudio), 不單可以呈現 markdown 的完成文件, 也可以即時執行 Python 或 R 程式碼, 將執行結果同步呈現在文字之間 (類似在 Jupter Notebook 上寫一份講義並同步執行 Python 程式碼, 將 Python 執行結果同步呈現在文字之間)
    可以編譯 .md 檔的免費軟體例如:
  • RStudio 就可以在文字間插入 R 的 codes 立即執行程式碼, 呈現結果在文字間、
  • JupterNotebook 則可以將文件匯出轉存為 .md 檔,
  • VScode 也支持 markdown 檔案編輯並即時呈現效果 (同步 預覽preview 文檔跑出的結果), 等等,
  • 在 Windows作業系統下, 可以使用免費的 Typora 來編輯並即時呈現效果.

2. 數學圖形的繪製之軟體:

直覺的滑鼠拖動方式, 可以使用 GeoGebra, 需要更精確的程式操控可以使用 Python 的 Matplotlib.pyplot 程式庫, 或 R 語言的 plot()函數, 等.

我的經驗建議, 在問題尺度與複雜度不大又需要即時以圖像視覺呈現探索過程的情況下, GeoGebra 其實優於以寫程式的方式進行探索.

問題尺度大時, GeoGebra 會有效能延遲的問題,
而當問題複雜度大時, 單使用 GeoGebra之工具列拖拉方式加GGBScript指令使用, 還是會發現難以模擬複雜之問題, 此時還是需以寫程式的方式進行探索, 較切實可行,

例如像模擬旅行推銷員問題 traveling saleman problem, 其演算法有很多種,

  • 尺度稍大, GeoGebra 可能就跑不動了.
  • 複雜度, 即使是 TSP 的所有演算法中 最簡單的一個演算法, 要在 GeogGerba 中呈現, 使用 GeoGebra之工具列拖拉方式加GGBScript指令使用, 可能就要操作與設計好幾個小時, 才能完成, 如果改用 Python 或 Matlab 寫程式, 約 一個小時內就可以完成.

註: 至於在 GeoGebra 中使用 JavaScript 的程式區來寫程式, 還是會因為變數在繪圖區(Geogebra的環境變數區 )與程式區(JavaScript的環境變數區) 之間的傳遞, 偶而會有一些難以掌控的狀況發生, 且兩邊的資料型態與語法不盡相同, 在實作時, 還是會有些小困擾, 且還是會有效能的問題!

3. 數學的計算與檢驗:

基礎的部分(微積分含以下)仍然可以使用 GeoGebra, 需要更進階的計算可以使用 Python 的 NumPy, SciPy, SymPy 等程式庫(特別是符號運算的部分, 需要使用 SymPy), 或 R 語言, 等.

4 數學的探索之協助

  • 探索題材之尋找, 可以多上網找適當資源, 有很多優質的數學網站或 YouTube站, 多半是英文, 可以使用自動翻譯, 仍可以抓到7成8成的意思.
  • 已經有某個想法時, 則可以使用 GeoGebra 或 Python+NumPy+SciPy 等協助深入探討.

我自己本身的經驗, 通常有某個想法時, 會先以 GeoGebra 進行視覺上的探索, 如果要再擴大尺度與複雜度時, 才開始用 Python, Matlab 等程式模擬探索.


數學的講義, 報告或作業之協助

在台灣108課綱開始實行之後, 莘莘學子在自己的簡報與作業的呈現上, 必須多加用心了.

一般我們在簡報或作業, 都習慣用 word 與 powerpoint 去製作.

但是以作者自己的經驗, 多年來一直遇到軟體舊版本寫的講義與軟體新板本不相容的問題, 例如之前用 Office2000製作的, 用 Office 2010 即使能打開, 也出現許多問題, 可能有些效果無法呈現, 或是數學符號變成無法修改, 收到的學校公文word檔, 如果是用 Office2010 製作的, 我的電腦要是還沒更新, 例如仍是用 Office2000, 則情形常常更嚴重, 有時會連打開都打不開, 尤其許多問題都是因為我的講義需要使用大量的數學符號與數學圖形,在 word 或 powerpoint 上呈現常常遇到諸多問題,常常在某個版本已經摸索到穩定可以順利撰寫呈現,換新的 word 版本, 我又要手忙腳亂一陣子.

就這樣用了許多年, 心理面積壓著, 是否該找尋某種軟體可以製作出跨平台、跨版本的筆記文件、落格文件、投影片等, 製作一次, 就可以較持久的使用, 不用再擔心版本的問題, 或者是擔心用手機、或平板可能就打不開的問題.

這也是 Google 推出 Google雲端文件軟體, 微軟推出 Office360 等等, 都是因應大家這個長期積壓在心底的訴求.

我原先第一個想到的跨平台、跨版本的文件解法就是, 乾脆用網頁呈現自己的講義、演講投影片等, 副檔名是 .html,

因為網頁是跨平台, 只要有瀏覽器的地方, 不管是桌機、筆電、手機、平板,智慧型電視機等等, 通通都可以看到, 不需要先安裝適當的軟體.
(例如需要 有安裝word, 才能打開看到 word 文件, Excell 文件, 則需要有安裝 Excel, 如果要看到 Matlab 的文件, 就需要先裝 Matlab 等等).
但是在學習用網頁語法寫講義的過程, 就碰到需要花大量時間學習, 只能將這個想法擱置.

也想到我的博士論文是整本用 Tex 撰寫, 嘗試用 Latex 重寫原有用 word 打的講義, 但是 Latex在插入圖片跟使用中文等方面, 在遇到問題時, 必須很熟練的人才能排除問題, 故這個方案也在投入很多時間之後決定暫時放棄.

中間也嘗試學習使用 Google 雲端文件軟體, 但是就我個人的感覺, 使用方式並不直覺, 就暫停這方面的學習.

直到, 在學習 R 語言的過程, 才發現有 Markdown 這種文件,
他的語法很單純, 卻可以快速呈現網頁部落格等文件的畫面, 等於是一種簡化的網頁文件, 在近10年內逐漸受到喜愛.

(用簡單的語法封裝繁雜的網頁語法)

尤其在有名的開放原始碼分享網站 GitHub 上, 是指定用戶以 markdown 來撰寫該網站上的網頁內容. 一般稱其為標記語言的一種, 屬於較輕量級的標記語言, 較易學易上手, 故我們接下來要跟大家介紹 .md 檔的編輯方法.


.md 檔的編輯方法.

.md 檔的編輯方法非常多樣, 許多方法都是需要連上適當網站, 在他們的雲端環境下編輯.
如果想離線在自己 Windows 下, 可以安裝 Typora, 但是 Typora 的基本版免費版, 無法同時看原始檔, 與編譯出的畫面(就是所謂的預覽), 只可以看到編譯出的畫面
同時看原始檔, 與預覽, 這個功能, RStudio 或 VScode都有,
Typora 好處是, 很單純, 就是專心編輯 .md 檔,
不像 RStudio 與 VScode 功能太豐富了, 對初學者, 反而是一種負擔.

故以下

  • 對於國高中等初學者, 推薦使用 Typora(但基本版無法執行Latex語法), 或線上編輯器MdEditor, Markdown Editor (此兩者皆可執行Latex語法),等
  • 對於經常使用程式語言的人, 可以使用 VScode
  • 對於熟悉資料分析與 R 的人, 推薦使用 RStudio
線上編輯器
MdEditor

可以執行 編輯數學之Latex語法,
注意: 每個Markdown線上編輯器對編輯數學之Latex或 Tex 語法會有些微差異!
他的 $$E=mc^2$$ E = m c 2 E=mc^2 E=mc2, 是單行, 並不會自動獨立一行,
但是在多數Markdown線上編輯器, 用左右雙 $字號 包住 $$ ,,, $$ 則會自動獨立一行!
他這用左右單 $字號 包住 $E=mc^2$ 則無法執行成 Latex效果.
他獨立多行的語法則是:

```math
\displaystyle
x_2\\
x_3

x 2 x 3 x_2\\ x_3 x2x3

Markdown Editor

可以編輯數學之Latex或 Tex 語法, 單行或多行之Latex語法與MdEditor 類似, 但是無法存檔, 可以複製貼上到自己的本地端編輯器即可

網址 https://markdown-editor.github.io/
link

Markdown Live preview

無法編譯呈現Latex語法數學效果.
https://markdownlivepreview.com/
link

Chrome之插件 Markdown 編輯器: Markdown Editor for Chrome 等等

安裝之後, 點開插件就可以使用, 但是基本版執行Latex語法似乎無法編譯呈現數學效果.

優點是列印為 pdf 的按鈕就在上方, 可以把編輯後的畫面存為 .pdf, 如果是 VSCodes, 或是其他線上的程式, 或是 Typora等, 通常都找不到可以列印為 pdf 的按鈕.

用markdownEditorforChrome插件_編輯matkdown及列印

本地安裝之編輯器
.md 之軟體畫面效果是否免費
Typora可以切換原始碼或編譯之後預覽的畫面, 無法同時呈現, 基本版執行Latex語法似乎有問題需付費
VScode同時有原始碼與預覽視窗, 似乎無法列印為 .pdf檔基本版免費
RStudio同時有原始碼與預覽視窗, 可列印為 .pdf檔, 可存為 .html 檔, 可以選輸出為 word基本版免費
Chrome 插件Markdown Editor for Chrome, 可列印為 .pdf檔基本版免費
Typora

原本不用錢, 現在需付費了.
讀者可以上網搜尋關鍵字 Typora, 下載安裝, 都是一鍵安裝, 非常簡單,
輸入時, 類似 word 的畫面, 可以選擇使用類似 word 的選單, 例如 段落/表格/插入表格, 等等, 對於不熟悉 markdown語法的人, 這是一個方便

也可以直接輸入 markdown 的指令, 按下 enter 之後, 畫面會呈現指令編譯後之效果, 會看不到原來的指令, 可以點選下方選擇切換狀態, 換成只呈現原始碼, 無法同時呈現.

這個功能讓我覺得不太習慣, 故我會同步用另一個可以編輯純文字檔的免費軟體(例如 小作家, WordPad, Sublime Text 等) 打開同一個檔案, 在這個另一個視窗查看原始碼是否正確.
在这里插入图片描述

VScode

VScode 是微軟開放原始碼的軟體, 可以編譯很多語言, 例如 C, C++, C#, Java, Python, 等等, .md 檔也可以, 同樣也是一鍵安裝, 基本版免費的軟體,

要注意的是, 用 VScode 打開 .md 檔時, 不會自動有預覽的視窗, 必須在編輯視窗之右上方一個小小的預覽符號按鈕, 點下去, 才會把視窗分割成左右兩半, 右邊是預覽的畫面, 相當好用,

網路上的文章會建議安裝插件, 例如 Markdown All in One, Markdown Preview Github Styling 等等, 詳細的點選方法, 可以參考各文章, 一開始不必涉入太多細節, 先挑簡單的介紹照著做.
在这里插入图片描述

Ref:

  1. [Markdown] 使用vscode开始Markdown写作之旅, https://zhuanlan.zhihu.com/p/56943330
  2. Day 20: 使用 VS Code 來開發 Markdown, https://ithelp.ithome.com.tw/articles/10225442
RStudio

RStudio 主要是執行 R 的軟體, 是開放原始碼的軟體, 知名的統計與資料分析軟體, 可以編譯 R, Python, 等等, .md 檔也可以, 同樣也是一鍵安裝
可以編輯與預覽 .md 或是 .Rmd 檔, .Rmd 檔可以即時執行 R codes 將結果(例如統計圖表)呈現文字之間

a <- c(1,2,3)
a

在RStudio, 可以點選開新檔案選 .md 格式, 打入適當內容之後, 按下 緊貼編輯區正上方的preview鍵, 可以選輸出為 word 的畫面, 或是 .html 等的畫面, 以下是輸出 word 的畫面
在这里插入图片描述
以下選輸出為 .html 的畫面
在这里插入图片描述
如果希望在 markdown文檔 內, 可以即時呈現 R程式執行結果, 則需要新增或打開一個 R markdown 文件( .Rmd 檔), 編譯時, 是使用 knit 鍵, 詳細請參考 台北大學吳漢銘教授的投影片 http://www.hmwu.idv.tw/web/R/F03-hmwu_R-Rmarkdown.pdf link.


數學圖形的繪製之協助

數學圖形的繪製可以使用免費的開源軟體 GeoGebra, 例如以下畫拋物線,
GeoGebra不單可以畫靜態的圖, 還可以動態模擬, 也可以計算測量圖中角度、距離等, 也可以算微分、積分等等,
有別於一般的繪圖軟體.
可以使用滑鼠拖拉的方式, 對於較嫻熟的使用者, 也可以直接下指令.

GeoGebra畫拋物線
GeoGebra 也可以輕鬆呈現 3D 數學圖形
需要先點開3D繪圖區, 在輸入欄位輸入 f(x,y)=sin(x*y), 按 enter, 即可看到 立體的函數圖:
在这里插入图片描述
Ex: 請同學即時在自己手機平板或筆電安裝 GeoGebra, 行動式裝置需安裝行動版, 到AppStore, Google store等搜尋 GeoGebra
Ex: 安裝好之後試著畫出一個任意三角形, 檢驗3條中線會交於一點, 即重心存在.
Ex: 試著畫出一個拋物線, 類似上方的圖形, 有滑桿, 動態文字等, 觀察首項係數與開口大小之關係, 觀察常數項如何影響圖形.

Ref: https://www.geogebra.org/ link

數學符號的打印之協助

我本身以前是都用 word 跟安裝在它上面之插件 MathType 或方程式編輯器, 可以方便編打數學符號,
但是一直碰到換新版的 word 的時, 原有的 MathType 裝不上, 就要到處找新版的 MathType, 或是查如何使用 word 內部的 方程式編輯方式, 常常會因為太忙, 會一段時間都無法編輯數學符號, 尤其數學專業的人, 處理的數學式子, 都較複雜.
現在則習慣先用 Markdown 把 數學語法編好, 如果要用在 word 內, 再擷取為圖檔貼過去就好, 就不用為了每次 word 換新版, 我雞飛狗跳一番.

在Markdown可以直接使用 Latex 的語法編輯數學式子

註:
Tex 語法的由來:
TeX 是高納德 Donald E. Knuth 教授(圖靈獎得主) 的精心傑作,它是個功能非常強大的幕後排版系統,含有彈性很大,而且很低階的排版語言。當初,是因為 Knuth 教授在寫他的大著 TAOCP(The Art of Computer Programming) 時,發覺書商把他書中的數學式子排得太難看了,於是決定自行開發一個非常適合排數學式子的排版語言,這就是 TeX 系統的來由。
Ref: 大家來學 LaTeX, https://www.cs.pu.edu.tw/~wckuo/doc/latex123/latex123.html link


產生數學符號之 Latex指令 要用錢字符包住 $ ⋯ \cdots $,
如果要獨立一行, 就是雙重錢字符包住 $$ ⋯ \cdots $$,

上標用 ^, 下標用下畫線 _
例如

上標或次方用 ^

$A^2$

A 2 A^2 A2

如果上標有好幾個, 就用 A^{i,j,k}

$A^{i,j,k}$

A i , j , k A^{i,j,k} Ai,j,k

上標中還可以有上標

$A^{i^{j}}$

A i j A^{i^{j}} Aij

$A^{i^{j^{k}}}$

A i j k A^{i^{j^{k}}} Aijk

下標用下畫線 _

$A_i$

A i A_i Ai

下標中還可以有下標

$A_{I_{2, 5}}$

A I 2 , 5 A_{I_{2, 5}} AI2,5

分數用 \frac{}{}

\frac{2}{5}

2 5 \frac{2}{5} 52

\dfrac{2}{5}

2 5 \dfrac{2}{5} 52

如果數學式子要獨立一行, 就用雙重錢字符 包住 $$ ⋯ \cdots $$
例如一元二次方程式 a x 2 + b x + c = 0 ax^2+bx+c=0 ax2+bx+c=0 (程式碼 $ax^2+bx+c=0$)

根與係數的公式, 以下是獨立一行置中

x = − b ± b 2 − 4 a c 2 a x=\frac{-b\pm\sqrt{b^2-4ac}}{2a} x=2ab±b24ac

程式碼如下
$$x=\frac{-b\pm\sqrt{b^2-4ac}}{2a}$$   

跳行則用兩個反斜線
x = − b ± b 2 − 4 a c 2 a y = − b ± b 2 − 4 a c 2 a x=\frac{-b\pm\sqrt{b^2-4ac}}{2a}\\ y=\frac{-b\pm\sqrt{b^2-4ac}}{2a} x=2ab±b24ac y=2ab±b24ac

程式碼如下
 $$x=\frac{-b\pm\sqrt{b^2-4ac}}{2a}\\
 y=\frac{-b\pm\sqrt{b^2-4ac}}{2a}$$  

矩陣使用 \begin{array}{cc} 等等 \end{array}

( a b c d ) \left(\begin{array}{cc} a&b\\c&d \end{array} \right) (acbd)


程式碼如下
$$\left(
\begin{array}{cc} 
a & b\\
c & d 
\end{array} 
\right)$$

例如 R 2 \mathbb{R}^2 R2 (程式碼 $\mathbb{R}^2$), R 2 R^2 R2 (程式碼 $R^2$)中的 旋轉公式, R ( O , θ ) ( x , y ) = ( x cos ⁡ ( θ ) − y sin ⁡ ( θ ) , x sin ⁡ ( θ ) + y c o s ( θ ) R(O,\theta)(x,y)= (x \cos(\theta)-y \sin(\theta), x\sin(\theta) + y cos(\theta) R(O,θ)(x,y)=(xcos(θ)ysin(θ),xsin(θ)+ycos(θ)

在这里插入图片描述

程式碼:

$$ R(O,\theta)(x,y)= 
(x \cos(\theta)-y \sin(\theta), x\sin(\theta) + y cos(\theta) $$

用矩陣表示就比較清楚

R ( O , θ ) ( x , y ) = ( cos ⁡ ( θ ) − sin ⁡ ( θ ) sin ⁡ ( θ ) c o s ( θ ) ) ( x y ) R(O,\theta)(x,y)=\left( \begin{array}{cc} \cos(\theta)&-\sin(\theta) \\ \sin(\theta)& cos(\theta) \end{array} \right) \left( \begin{array}{c} x\\y \end{array} \right) R(O,θ)(x,y)=(cos(θ)sin(θ)sin(θ)cos(θ))(xy)

程式碼如下

程式碼如下:
$$R(O,\theta)(x,y)=
\left( 
\begin{array}{cc} 
\cos(\theta)&-\sin(\theta) \\ 
\sin(\theta)& cos(\theta) 
\end{array} 
\right)
\left( 
 \begin{array}{c}  
 x\\y 
 \end{array} 
 \right)$$

積分

∫ f ( x )    d x \int f(x)\; dx f(x)dx

程式碼如下
$$\int f(x)\; dx$$

微分
d d x f ( x ) \frac{d}{dx} f(x) dxdf(x)

程式碼如下
$$\frac{d}{dx} f(x)$$

偏微分
∂ ∂ x f ( x ) \frac{\partial}{\partial x} f(x) xf(x)

程式碼如下
$$\frac{\partial}{\partial x} f(x)$$

複數積分
∫ ∣ z ∣ = 1 f ( z + 1 z 2 , z − 1 z 2 i ) d z i z = ∫ 0 2 π f ( c o s θ , s i n θ ) d θ \int\limits_{|z|=1} f(\frac{z+\frac{1}{z}}{2},\frac{z-\frac{1}{z}}{2i})\frac{dz}{iz}=\int_{0}^{2\pi} f(cos\theta,sin\theta) d\theta z=1f(2z+z1,2izz1)izdz=02πf(cosθ,sinθ)dθ

程式碼如下
$$\int\limits_{|z|=1} 
f(\frac{z+\frac{1}{z}}{2},\frac{z-\frac{1}{z}}{2i})\frac{dz}{iz}
=\int_{0}^{2\pi} 
f(cos\theta,sin\theta) d\theta$$

極限

lim ⁡ x → 0 f ( x ) \lim_{x \rightarrow 0} f(x) x0limf(x)

性質的敘述

t h e    P y t h a g o r e a n    T h e o r e m   畢氏定理 ⇔ t h e    L a w    o f    C o s i n e s   餘弦公式 ⇔ t h e    A d d i t i o n    F o r m u l a    o f    C o s i n e s    ( o r    S i n e s )   和角公式 the\; Pythagorean \;Theorem\:畢氏定理 \Leftrightarrow the\; Law\; of \;Cosines \:餘弦公式\\ \Leftrightarrow the\; Addition \;Formula \;of \;Cosines \;(or \;Sines) \:和角公式 thePythagoreanTheorem畢氏定理theLawofCosines餘弦公式theAdditionFormulaofCosines(orSines)和角公式

程式碼如下
$$the\; Pythagorean \;Theorem\:畢氏定理
 \Leftrightarrow 
 the\; Law\; of \;Cosines \:餘弦公式\\
\Leftrightarrow
 the\; Addition \;Formula \;of \;Cosines \;(or \;Sines) \:和角公式$$
初學者 可以利用 GeoGebra的插入文字對話框裏, 有Latex的簡便用法

在这里插入图片描述

Ex: 請同學練習用 Markdown 編出以下:
橢圓之方程式
x 2 a 2 + y 2 b 2 = 1. \frac{x^2}{a^2}+\frac{y^2}{b^2}=1. a2x2+b2y2=1.

椭球面之方程式
ellipsoid x 2 a 2 + y 2 b 2 + z 2 c 2 = 1. \frac{x^2}{a^2}+\frac{y^2}{b^2}+\frac{z^2}{c^2}=1. a2x2+b2y2+c2z2=1.

雙曲拋物面(馬鞍面)
hyperbolic paraboloid x 2 a 2 − y 2 b 2 = z . \frac{x^2}{a^2}-\frac{y^2}{b^2}=z. a2x2b2y2=z.
Hint: 分數用 \frac{ }{ }

Ex: 將以上的方程式輸入 GeoGebra看看能否畫出圖形

Ex: 請同學練習用 Markdown 編出以下 柯西舒瓦茲不等式:
Hint: sigma 的符號用 \sum_{ 1 }^{ n }
∣ ∑ i = 1 n a i b i ∣ ≤ ( ∑ i = 1 n a i 2 ) 1 / 2 ( ∑ i = 1 n b i 2 ) 1 / 2 . \left| \sum_{i=1}^n a_ib_i \right| \le (\sum_{i=1}^n a_i^2)^{1/2} (\sum_{i=1}^n b_i^2)^{1/2}. i=1naibi (i=1nai2)1/2(i=1nbi2)1/2.
或是用更號, 看起來會較舒服
Hint: 更號 \sqrt{ }
∣ ∑ i = 1 n a i b i ∣ ≤ ( ∑ i = 1 n a i 2 ) ( ∑ i = 1 n b i 2 ) . \left| \sum_{i=1}^n a_ib_i \right| \le \sqrt{ (\sum_{i=1}^n a_i^2)} \sqrt{(\sum_{i=1}^n b_i^2)}. i=1naibi (i=1nai2) (i=1nbi2) .
或是有時是寫成
( ∑ i = 1 n a i b i ) 2 ≤ ( ∑ i = 1 n a i 2 ) ( ∑ i = 1 n b i 2 ) . \left( \sum_{i=1}^n a_ib_i \right)^2 \le (\sum_{i=1}^n a_i^2) (\sum_{i=1}^n b_i^2). (i=1naibi)2(i=1nai2)(i=1nbi2).
其實就是向量的內積公式:
∣ ⟨ x , y ⟩ ∣ 2 ≤ ⟨ x , x ⟩ ⋅ ⟨ y , y ⟩ \big| \langle x,y\rangle \big|^2 \leq \langle x,x\rangle \cdot \langle y,y\rangle x,y 2x,xy,y
Ex: 請同學練習用 Markdown 編出以下高中數學課本實驗本中的數學式子

高中數學課本實驗本一下中的數學式子


\displaystyle 呈現較美麗
( ∑ k = 1 n a k b k ) 2 ≤ ( ∑ k = 1 n a k 2 ) ( ∑ k = 1 n b k 2 ) \displaystyle \left( \sum_{k=1}^n a_{k} b_k \right)^2 \leq \left( \sum_{k=1}^n a_k^2 \right) \left( \sum_{k=1}^n b_k^2 \right) (k=1nakbk)2(k=1nak2)(k=1nbk2)

上式的程式碼:

$$\displaystyle
\left( \sum_{k=1}^n a_{k} b_k \right)^2
\leq
\left( \sum_{k=1}^n a_k^2 \right)
\left( \sum_{k=1}^n b_k^2 \right)$$

sin ⁡ ( α ) θ = ∑ i = 0 n ( x i + cos ⁡ ( f ) ) \sin(\alpha)^{\theta}=\sum_{i=0}^{n}(x^i + \cos(f)) sin(α)θ=i=0n(xi+cos(f))

上式的程式碼:

$$\sin(\alpha)^{\theta}=\sum_{i=0}^{n}(x^i + \cos(f))$$

1 ( ϕ 5 − ϕ ) e 2 5 π = 1 + e − 2 π 1 + e − 4 π 1 + e − 6 π 1 + e − 8 π 1 + ⋯ \displaystyle \frac{1}{ \Bigl(\sqrt{\phi \sqrt{5}}-\phi\Bigr) e^{ \frac25 \pi}} = 1+\frac{e^{-2\pi}} {1+\frac{e^{-4\pi}} { 1+\frac{e^{-6\pi}} {1+\frac{e^{-8\pi}} {1+\cdots} } } } (ϕ5 ϕ)e52π1=1+1+1+1+1+e8πe6πe4πe2π

上式的程式碼:

$$\displaystyle
    \frac{1}{
        \Bigl(\sqrt{\phi \sqrt{5}}-\phi\Bigr) e^{
        \frac25 \pi}} = 1+\frac{e^{-2\pi}} {1+\frac{e^{-4\pi}} {
        1+\frac{e^{-6\pi}}
        {1+\frac{e^{-8\pi}}
         {1+\cdots} }
        }
    }$$

f ( x ) = ∫ − ∞ ∞ f ^ ( ξ )   e 2 π i ξ x   d ξ f(x) = \int_{-\infty}^\infty \hat f(\xi)\,e^{2 \pi i \xi x} \,d\xi f(x)=f^(ξ)e2πiξxdξ

上式的程式碼:

$$f(x) = \int_{-\infty}^\infty
    \hat f(\xi)\,e^{2 \pi i \xi x}
    \,d\xi$$
Latex 可以設定颜色

語法
字體颜色︰{\color{颜色}表達式}
背景颜色︰{\pagecolor{颜色}表達式}
例如

x 1 , 2 = − b ± b 2 − 4 a c 2 a x_{\color{Red}1,2}=\frac{-b\pm\sqrt{{\color{Orange}b^2-4ac}}}{2a} x1,2=2ab±b24ac

上式的程式碼:

$x_{\color{Red}1,2}=\frac{-b\pm\sqrt{{\color{Orange}b^2-4ac}}}{2a}$

Ref: (推薦) 暗-小汐, LaTeX 各种命令,符号, link.


流程圖的打印可以使用 Markdown

sequence diagram 時序圖

Alice Bob Hello Bob, how are you? Bob thinks I am good thanks! Alice Bob

上式的程式碼:

```mermaid
sequenceDiagram
Alice -->> Bob: Hello Bob, how are you?
Note right of Bob: Bob thinks
Bob -->> Alice: I am good thanks!
\```

张三 李四 王五 你好!李四, 最近怎么样? 你最近怎么样,王五? 我很好,谢谢! 我很好,谢谢! 李四想了很长时间, 文字太长了 不适合放在一行. 打量着王五... 很好... 王五, 你怎么样? 张三 李四 王五

上式的程式碼

```mermaid
    sequenceDiagram
    张三 ->> 李四: 你好!李四, 最近怎么样?
李四-->>王五: 你最近怎么样,王五?
李四--x 张三: 我很好,谢谢!
李四-x 王五: 我很好,谢谢!
Note right of 王五: 李四想了很长时间, 
文字太长了<br/>不适合放在一行.

李四-->>张三: 打量着王五...
张三->>王五: 很好... 王五, 你怎么样?

甘特圖 gantt chart

2014-01-06 2014-01-07 2014-01-08 2014-01-09 2014-01-10 2014-01-11 2014-01-12 2014-01-13 2014-01-14 2014-01-15 2014-01-16 2014-01-17 已完成 进行中 计划中 现有任务 Adding GANTT diagram functionality to mermaid

上式的程式碼

```mermaid
gantt
    dateFormat  YYYY-MM-DD
    title Adding GANTT diagram functionality to mermaid
    section 现有任务
    已完成    :done,    des1, 2014-01-06,2014-01-08
    进行中    :active,  des2, 2014-01-09, 3d
    计划中    :         des3, after des2, 5d

flowchart 垂直流程圖

Created with Raphaël 2.3.0 開始 我的操作 確認? 結束 yes no

上式的程式碼

```mermaid
flowchat
st=>start: 開始
e=>end: 結束
op=>operation: 我的操作
cond=>condition: 確認?

st->op->cond
cond(yes)->e
cond(no)->op
Created with Raphaël 2.3.0 开始 操作 Yes or No? 输入/输出 结束 子程序 yes no

ref: markdown 流程图语法, link

上式的程式碼

```mermaid
flowchat
 st=>start: 开始
 e=>end: 结束
 op=>operation: 操作
 sub1=>subroutine: 子程序
 cond=>condition: Yes or No?
 io=>inputoutput: 输入/输出
 st->op->cond
 cond(yes)->io->e
 cond(no)->sub1(right)->op
three
one
c2
c1
a2
a1

上式的程式碼

```mermaid
flowchart TB
c1-->a2
subgraph one
a1-->a2
end
subgraph three
c1-->c2
end
子图2变量名
子图1变量名
D
C
B
A

上式的程式碼

```mermaid
graph TD
subgraph 子图1变量名
A-->B
end
subgraph 子图2变量名
C-->D
end
A
B
C
D

上式的程式碼

```mermaid
graph TB
A & B--> C & D

與以下效果一樣

A
C
D
B

上式的程式碼

```mermaid
graph TB
A --> C
A --> D
B --> C
B --> D
three
two
one
c2
c1
b2
b1
a2
a1

上式的程式碼

```mermaid
graph TB
c1-->a2
subgraph one
a1-->a2
end
subgraph two
b1-->b2
end
subgraph three
c1-->c2
end

graph LR 水平流程圖

链接
长方形
圆角长方形
菱形

上式的程式碼

```mermaid
graph LR
A[长方形] -- 链接 --> B((圆))
A --> C(圆角长方形)
B --> D{菱形}
C --> D

class diagram 類圖 (UML)

Cool
Where am i?
«interface»
Class01
int chimp
int gorilla
size()
AveryLongClass
Class09
C2
C3
Class07
Object[] elementData
equals()
Class10
>>service>>
int id
size()

上式的程式碼

```mermaid
classDiagram
    Class01 <|-- AveryLongClass : Cool
    <<interface>> Class01
    Class09 --> C2 : Where am i?
    Class09 --* C3
    Class09 --|> Class07
    Class07 : equals()
    Class07 : Object[] elementData
    Class01 : size()
    Class01 : int chimp
    Class01 : int gorilla
    class Class10 {
        >>service>>
        int id
        size()
    }

數學的計算與檢驗之協助

  • 國高中數學到大學微積分的範圍, 基本上都能用 GeoGebra 求解探索
  • 大二以上, 較複雜的矩陣、統計、科學計算、演算法等內容, 則 Python+NumPy+SciPy 較適合.

用 GeoGebra 檢驗觀察幾何

例如用 GeoGebra 檢驗觀察 布里昂雄定理
Brianchon’s Theorem 布里昂雄定理
外切於圓之六邊形之兩兩相對頂點連線一定共點.

見下圖,ABCDEF是圓外切六邊形,O是圓心,發現各對面之頂點, 例如 FC, DA, BE連線都穿過G, G是各對面頂點連線之共點。
Brianchon’s Theorem 布里昂雄定理
用 GeoGebra 檢驗觀察 the Euler line 歐拉線
the Euler line 歐拉線
垂心 orthocenter H、外心 the circumcenter O、及重心 the centroid G 會共線,稱為the Euler line of the triangle.
在这里插入图片描述

**Ex: ** 根據射影幾何之性質, 如果定理敘述在圓上, 只牽涉到射影不變之性質, 例如多線共點, 有無相交點, 交比之量等等, 則此定理可以從圓推廣到圓錐曲線, 也就是布里昂雄定理在橢圓、雙曲、拋物線上等也對.
(其他定理:例如 蝴蝶定理)
遇到檢驗此種推廣到圓錐曲線上的例子, 用 GeoGebra 就會發現它的好用與威力強大!

用 GeoGebra 或 Python 做簡單的驗證:

Ref: 朱華傳 付雲皓, 美國數學邀請賽試題解答, ch7, 科學出版, 2013.

Problem9: 1960三位美國數學家證明存在 n,
使得 13 3 5 + 11 0 5 + 8 4 5 + 2 7 5 = n 5 133^5+110^5+84^5+27^5=n^5 1335+1105+845+275=n5,
推翻了Euler的一個猜想,
求此n
Sol:
用 GeoGebra
朱華傳_付雲皓_美國數學邀請賽試題解答_ch7

朱華傳_付雲皓_美國數學邀請賽試題解答_ch7_1

用Python:
Python可以表達任意長位數的優點就表現出來了(系統資源受的了的前提)

>>>133**5+110**5+84**5+27**5
61917364224
>>> 61917364224**(1/5)
144.00000000000003
>>> 144**5
61917364224

以下是用 Matlab (數年前測試的資料):


Matlab的位數長度是有限的
>> 133^5+110^5+84^5+27^5

ans =

  6.1917e+010

>> format long
>> 133^5+110^5+84^5+27^5

ans =

    6.191736422400000e+010

>> (133^5+110^5+84^5+27^5)^(1/5)

ans =

    1.440000000000000e+002

>> 1.44^5

ans =

   6.191736422399999

>> 144^5

ans =

    6.191736422400000e+010

數學的探索之協助

數學探索主題之搜尋

幾個 YouTube上數學科普的站:

Numberphile link

3Blue1Brown link

Mathologer link

中央大學單維彰教授的站
ShannMath link

程式語言或動畫或兩者結合呈現數學的探索

動畫的探索, 可以分

  • 以 GeoGebra 探索 (可以結合 JavaScript 程式區)
  • 以 Python 程式結合 turtle 海龜模組的功能, 探索
  • 以 Python 程式結合 Matplotlib 科學繪圖模組的功能, 探索
  • 以 Python 程式結合 pygame 遊戲動畫模組的功能, 探索
  • 以 Python 程式結合 tkinter 繪圖GUI 模組的功能, 探索
以 GeoGebra 探索

例如以 GeoGebra 探索擺線, 追逐線(=等角螺線=對數螺線), 碎形, 幾何分割等等

  • GeoGebra 一般可以不需要用到程式語言, 可以完全用滑鼠拖拉設計, 類似 GSP,
  • 但是 GeoGebra 也有自己的指令, 叫 GGBScript, 分為微積分類、幾何類、代數類等等, 只有簡單型的If 指令, 重複性的動作並沒有 for 迴圈的指令, 需要用 Repeat 指令 (Repeat( <Number>, <Scripting Command>, <Scripting Command>, … )), 是函數式程式語言的特色, 但是比 for 還是較不彈性, 所以 GeoGebra 自己的語法 GGBScript 並不能算是一個完整的程式語言.
  • GeoGebra 也可以執行 JavaScript 程式語言 (操控網頁的語言), 如果要使用較彈性的 for 迴圈, 可以
    選擇使用 JavaScript.
    打開物件(物件就是 GGB裡所有的東東例如, 畫出的一個圓, 一個按鈕等) 的屬性\程式, 選擇程式種類為 JavaScript, 輸入程式碼, 按確定, 對話窗關掉, 就可以執行
    例如以下是在屬性\程式 欄位輸入 試除法檢測因數 的JavaScript程式碼
    列出因數JS_按鈕JS程式區

Ex: 畫出以下六角形形成的螺線
在这里插入图片描述


以 GeoGebra還原 網路上講解消失的方塊魔術拼圖之原理: 帕利高畢氏切割

https://youtu.be/47Jg-56C15Q
link

網路上賣的一個拼圖,
同樣的框, 一開始四塊拼滿,
四塊拿開再裝入,
竟然多出一個小方塊的空間!?
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
以下我們用 GeoGebra 動態實驗 帕利高畢氏定理幾何切割之移動, 讓你豁然開朗!!!

https://www.geogebra.org/m/hkunapvx link

教碩班_帕利高_早期作法_按鈕_完整_20200728


以 GeoGebra 探索 廣義畢氏定理

廣義畢氏

以 GeoGebra 探索幾何分割

何宗洋 拼圖(六芒星的三種切割)_29-4_33-2_29-6.jpg
何宗洋 拼圖(六芒星的三種切割)_29-4_33-2_29-6.jpg

以 GeoGebra 探索碎形

用 GeoGebra 的試算表繪製 Koch 雪花曲線

在这里插入图片描述

實作速成步驟 (參考自 GeoGebra官網分享作品 m43311 orchiming, 我梳理了10多個小時)

打開 GeoGebra 的試算表
先產生兩點A,B,
在試算表A第一個 row,  A1輸入: {A, B}
在A2(試算表A第二個row) 輸入:

Join(Sequence({A1(i),
A1(i) + 1 / 3* (A1(i + 1) - A1(i)),
A1(i) + 1 / 2 *(A1(i + 1) - A1(i)) +
Rotate((A1(i + 1) - A1(i))* 1 / 3 *sqrt(3) / 2, 1.5708),
A1(i + 1) - 1 / 3 *(A1(i + 1) - A1(i)),
A1(i + 1)},
i, 1, Length(A1) - 1))

接著
往下拖拉出 A3, A4,A5,,,
接著, 最好選擇在旁邊欄位, 例如在B5欄位輸入:
Sequence[ Segment[ Element[A5,i], Element[A5,i+1] ],
i,1,Length[A5]-1]
以 GeoGebra 探索擺線

畫萬花尺

以上ˋ圖片及三角形輪廓或蛇形輪廓之內擺線 可以參考
https://www.pinterest.com/pin/169307267228761622/ link

我們可以用 GeoGebra 模擬這個繪製的動作
長短擺線
長短擺線滑桿

園內擺線
在这里插入图片描述

在这里插入图片描述

以 Python 程式結合 turtle 海龜模組的功能, 探索

例如以 Python 探索追逐線其實就是等角螺線也稱對數螺線:
在这里插入图片描述
程式碼如下

# Pursuit, EquiangularSpiral
# By Prof. P-J Lai MATH. NKNU. 20201113

import turtle

##>>> help('turtle.towards')
##Help on function towards in turtle:
##
##turtle.towards = towards(x, y=None)
##    Return the angle of the line from the turtle's position to (x, y).
##
##    Example:
##    >>> pos()
##    (10.00, 10.00)
##    >>> towards(0,0)
##    225.0

T = []
for i in range(4):
    T.append(turtle.Turtle())

colorList = ['red', 'green', 'blue', 'purple']

for i in range(4):
    T[i].shape('turtle')
    #T[i].fillcolor(colorList[i])
    T[i].color(colorList[i])
    T[i].pensize(3)
    T[i].penup()

posList = [ (0,0), (200,0), (200,200), (0,200)]

T[1].setpos(posList[1])
T[2].setpos(posList[2])
T[3].setpos(posList[3])

headingList=[]
for i in range(4):
    headingList.append(T[i].towards( T[(i+1)%4].pos()))

for i in range(4):
    T[i].pendown()


for i in range(70):    
    for i in range(4):
        
        headingList[i] = T[i].towards( T[(i+1)%4].pos())
        T[i].setheading(headingList[i])
        T[i].fd(2)

初學者可以參考我之前的講義
從 Logo 海龜動畫繪圖 學習 Python - 高中彈性課程系列 1 課程簡介
https://blog.csdn.net/m0_47985483/article/details/107502070 link

例如以 Python 探索迷宮程式

可以參考

  • https://blog.csdn.net/weixin_45901519/article/details/109456646 link

  • 從 Logo 海龜繪圖 學習 Python - 高中彈性課程系列 11 用 turtle 呈現演算法之執行動作
    https://blog.csdn.net/m0_47985483/article/details/111172062?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-0&spm=1001.2101.3001.4242 link

References

  • 寫了三天,Markdown全網最全入⾨和進階教程,這次你肯定能學會, https://kknews.cc/zh-tw/news/4jy69qx.html link

  • Windows 下免費編譯 markodwn文件, Typora 網站: https://typora.io/ link

  • markdown語法 中文的說明網站: http://markdown.tw/ link

  • markdown語法 中文的重點說明: https://gist.github.com/billy3321/1001749662c370887c63bb30f26c9e6e link

  • markdown 流程图语法, https://blog.csdn.net/qq_21808961/article/details/81052243?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-5&spm=1001.2101.3001.4242 link

  • 使用 vscode 开始Markdown写作之旅, https://zhuanlan.zhihu.com/p/56943330 link

  • Day 20: 使用 VS Code 來開發 Markdown, https://ithelp.ithome.com.tw/articles/10225442 link

  • 吳漢銘教授介紹 .Rmd 檔, 用 RStudio 編譯 markdown檔: http://www.hmwu.idv.tw/web/R/F03-hmwu_R-Rmarkdown.pdf link

  • 可以即時呈現 R程式執行結果的 markdown: Rstudio支持可视化的Markdown编辑了?https://cloud.tencent.com/developer/article/1727970 link

  • (推薦) 暗-小汐, LaTeX 各种命令,符号, https://blog.csdn.net/anxiaoxi45/article/details/39449445 link.

  • (推薦) Markdown语法和 - -LaTeX 数学记号速查手册, http://www.domuse.com/markdown-and-latex-equation-handbook.html link

  • Latex常见符号对照表, https://blog.csdn.net/zgj926503/article/details/52757631 link

  • AMS-LaTeX, http://www.ams.org/tex/amslatex.html link

  • Wiki 的數學符號指令 link

  • 從 Logo 海龜動畫繪圖 學習 Python - 高中彈性課程系列 1 課程簡介
    https://blog.csdn.net/m0_47985483/article/details/107502070 link

  • 從 Logo 海龜繪圖 學習 Python - 高中彈性課程系列 11 用 turtle 呈現演算法之執行動作
    https://blog.csdn.net/m0_47985483/article/details/111172062?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-0&spm=1001.2101.3001.4242 link

  • 賴鵬仁, GeoGebra 與動態幾何 20200925 申請優良教材 免費pdf 下載點 link

  • 賴鵬仁, 數學文書處理 1 link

  • GeoGebra 官網: https://www.geogebra.org/ link

  • intro-en_4_2_簡體中譯前半段_2015_103-GeoGebra-使用手冊之出處_有tangram, Geogebra 官網 之 intro-en_4_2.pdf 之前半段, 由志工翻譯成中文, 免費pdf 下載點 link

  • GeoGebra 指令完整列表 DivisorsList等等 基隆女中上課教材1030319: 免費pdf 下載點 link

  • geogebra与matlab,浅谈Geogebra在大学数学教学中的应用 link

  • Mathigon, 牛津大學學霸開發的免費開源數學軟體, Discover Mathigon, the Mathematical Playground. Learning mathematics has never been so interactive and fun!,
    https://mathigon.org/ link

  • 網路上講解消失的方塊魔術拼圖之原理: https://youtu.be/47Jg-56C15Q
    link

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值