在 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 \) 點的切線方程式:

  1. 計算函數在 ( x = 1 ) 點的值。
  2. 計算函數在 ( x = 1 ) 點的導數(即斜率)。
  3. 使用點斜式方程式來求切線方程式。

以下是具體的指令:

/* 定義函數 */
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 的基本指令教學:

wxMaxima Self-Guided Tutorial

這個網誌中的熱門文章

自然科學和數學參考書籍和線上課程的推薦

「成功燈塔行」引領成功學子航向理想的目的地