在 AI 的輔助下用數學軟體做計算
作者:謝其磐
介紹
在學習數學的過程裡,善用數學計算軟體,可以輔助計算,也可以協助繪圖,調整參數,有助於建立數學觀念和直覺。然而,初學數學軟體或學習寫程式碼時,需要熟悉一些指令和語法。此時,可以使用 AI 工具來取得指令或程式碼,就可以有效率地使用這些計算工具。這樣,也可以讓頭腦專注在要解決的數學問題本身,而程式或指令的細節就可由 AI 協助。
這篇文章介紹如何以 AI 對話,來協助使用數學計算軟體,這裡以 wxMaxima 這個數學計算軟體來做示範。wxMaxima 是個功能強大的自由軟體,可以做基礎到高階的數學符號計算,也可以做數值計算。wxMaxima 可以免費下載安裝使用,在 MS Windows,Mac OS,或 Linux 系統都可以使用。
AI 的對話工具有很多種,這裡使用的是 ChatGPT 工具。使用的版本是 GPT-4o。讀者也可以使用免費的 GPT-3.5,都可以得到答案。以下把我們在 ChatGPT 對話窗問的問題稱為「提示」(prompt),ChatGPT 回答的內容程稱為「回應」。
實例說明
例題 1
問題:
使用 wxMaxima 畫出 \(y = x^2 + 3x - 1\) 的函數圖形。
提示:
請在 wxMaxima 程式中,畫出 y = x^2 + 3*x - 1 的函數圖形。
回應:
在 wxMaxima 中,你可以使用以下指令來畫出函數 \( y = x^2 + 3x - 1 \) 的圖形:
/* 定義函數 */
f(x) := x^2 + 3*x - 1;
/* 繪製圖形 */
plot2d(f(x), [x, -10, 10], [ylabel, "y"], [xlabel, "x"], [legend, false]);
以上指令將會畫出在 ( x ) 範圍從 -10 到 10 之間的 \( y = x^2 + 3x - 1 \) 的圖形。如果你想調整範圍或其他圖形屬性,可以修改相應的參數。
請在 wxMaxima 中輸入這些指令並運行,即可看到所需的圖形。
在 wxMaxima 執行
把 ChatGPT 回應的指令,分別複製貼上 wxMaxima 的指令欄,再按 Shift + Enter 執行。
即可得到函數圖形,如下圖:
例題 2
問題:
使用 wxMaxima 求 \(x^2 + 3x - 1\ = 0\) 這個方程式的解。
提示:
請在 wxMaxima 程式中,計算 x^2 + 3*x - 1 = 0 這個方程式的解。
回應:
在 wxMaxima 中,你可以使用 solve
函數來求解方程式 \( x^2 + 3x - 1 = 0 \)。以下是具體的指令:
/* 定義方程式 */
eq : x^2 + 3*x - 1 = 0;
/* 求解方程式 */
solve(eq, x);
這些指令會計算並返回方程式 \( x^2 + 3x - 1 = 0 \) 的解。請在 wxMaxima 中輸入並執行這些指令,即可得到解的結果。
在 wxMaxima 執行
把 ChatGPT 回應的指令,分別複製貼上 wxMaxima 的指令欄,再按 Shift + Enter 執行。即可得到方程式的解:
\[ \left[ x\mathop{=}\mathop{-}\left( \frac{\sqrt{13}\mathop{+}3}{2}\right) \mathop{,}x\mathop{=}\frac{\sqrt{13}\mathop{-}3}{2}\right] \]
wxMaxima 執行的畫面如下圖:
例題 3
問題:
使用 wxMaxima,求 \(y = x^2 + 3x - 1\) 這個函數在 x = 1 這點的切線方程式。
提示:
請在 wxMaxima 程式中,求 x^2 + 3*x - 1 = 0 這函數在 x = 1 這點的切線方程式。
回應:
在 wxMaxima 中,你可以使用以下步驟來求解函數 \( y = x^2 + 3x - 1 \) 在 \( x = 1 \) 點的切線方程式:
- 計算函數在 ( x = 1 ) 點的值。
- 計算函數在 ( x = 1 ) 點的導數(即斜率)。
- 使用點斜式方程式來求切線方程式。
以下是具體的指令:
/* 定義函數 */
f(x) := x^2 + 3*x - 1;
/* 計算函數在 x = 1 的值 */
y1 : f(1);
/* 計算導數 */
df(x) := diff(f(x), x);
/* 計算函數在 x = 1 點的斜率 */
m : df(1);
/* 切線方程式 */
tangent_line(x) := m*(x - 1) + y1;
/* 顯示切線方程式 */
tangent_line(x);
這些指令將會計算並顯示切線方程式。請在 wxMaxima 中輸入並執行這些指令,即可得到所需的切線方程式。
在 wxMaxima 執行
分別在 wxMaxima 中一個一個依序執行上面的指令。
當我們執行到第 4 個指令時,出現了錯誤訊息:
此時,我們可以詢問 ChatGPT 解決的方法,
提示:
當執行以下執令:
m : df(1);
出現了錯誤訊息:
diff: second argument must be a variable; found 1
#0: df(x=1)
應如何解決?
回應:
這個錯誤訊息是因為在 diff
函數中沒有正確指定變數。應該明確告訴 diff
函數對哪個變數求導數。以下是修正後的指令:
/* 定義函數 */
f(x) := x^2 + 3*x - 1;
/* 計算函數在 x = 1 的值 */
y1 : f(1);
/* 計算導數 */
df : diff(f(x), x);
/* 計算函數在 x = 1 點的斜率 */
m : ev(df, x=1);
/* 切線方程式 */
tangent_line(x) := m*(x - 1) + y1;
/* 顯示切線方程式 */
tangent_line(x);
這些指令應該可以正確計算並顯示切線方程式。請在 wxMaxima 中輸入並執行這些指令。
在 wxMaxima 執行
重新開一個新的 wxMaxima 視窗,並且執行上述指令,即可得到切線方程式為 \( y = 5x - 2 \)。
指令和執行結果如下圖:
這裡在最後,我們自行多加了一個指令 expand(%)
,這個指令的功用是展開整理前一個式子,其中 %
代表的是前一個指令輸出的結果。
例題 4
問題:
請在 wxMaxima 中,畫出函數 \( y = x^2 + 3x - 1 \) 和在 \( x = 1 \) 這個切點的切線方程式的圖形。
讀者可以自行練習這個題目,最後可以在 wxMaxima 中用指令:
plot2d([f(x), tangent_line(x)], [x, -10, 10], [ylabel, “y”], [xlabel, “x”], [legend, “Function”, “Tangent Line”]);
得到所要的圖形:
讀者可以試者調整 x 的範圍,x 軸和 y 軸的標題文字等等格式,以調整顯示的範圍和其它格式設定。
結語
這篇文章介紹了如何使用 wxMaxima 來計算數學,並且在 ChatGPT 的輔助下,取得對應的程式指令碼,並且進行除錯。讀者可以自行運用類似的技巧,計算其它數學問題,並且繪製圖形。在計算軟體和 AI 的輔助之下,相信可以讓同學更有效率地計算數學問題,並且培養相關的數學觀念。
補充:
wxMaxima 的基本指令教學: