利用 CoCalc 網站的 ChatGPT 對話窗來算數學

圖片
CoCalc 網站 提供了線上計算的平台環境,作者致力於發展用電腦做數學運算,開發了 SageMath 這種數學計算程式。 在 CoCalc 網站中,除了提供 SageMath 的計算,也提供了 Python, R 等等計算環境。 登入 CoCalc 網站後,在首頁會有 Extensive ChatGPT Integration 的對話視窗,整合了 ChatGPT 與網站數學運算的功能。 我們也可以利用這個 ChatGPT 視窗,輸入文字提示指令來得到如何做數學計算。 例如輸入: “用 Python 畫出 y = x^2 + 3x + 1 = 0 的函數圖形。” 網站就會生成 Python 程式碼: import numpy as np import matplotlib . pyplot as plt x = np . linspace ( - 10 , 10 , 100 ) # Generate 100 points between -10 and 10 y = x ** 2 + 3 * x + 1 # Calculate y values plt . plot ( x , y ) plt . xlabel ( 'x' ) plt . ylabel ( 'y' ) plt . title ( 'Graph of y = x^2 + 3x + 1' ) plt . grid ( True ) plt . show ( ) SageMath 本身也是一個功能強大的數學計算軟體。我們來使用看看。在 CoCalc 的 ChatGPT 對話窗輸入: “用 SageMath 畫出 y = x^2 + 3x + 1 的函數圖形,並且求 x^2 + 3x + 1 = 0 的解。” 得到 SageMath 的程式碼,並且執行它: # Plot the graph of y = x^2 + 3x + 1 f ( x ) = x ^ 2 + 3 * x + 1 plot ( f , - 5 , 5 , ymin = - 5 , ymax = 20 , color = 'blue' ) # Solve the equati

用 SymPy 的數學函數來做計算

SymPy 模組是 Python 程式裡一個功能很強大的數學計算模組,可以做符號運算得到公式解,也可以做數值運算得到數值解。從基本的數學計算,到求方程式的解,算微積分,都可以用 SymPy 內的函數來計算。

在使用 SymPy 時,必需在程式的開頭引入 sympy 模組:

from sympy import *

接下來,就可以使用 SymPy 的函數了。

SymPy 中常用的數學函數

分類 函數 描述 例子
基礎運算 simplify(expr) 簡化表達式 simplify(sin(x)**2 + cos(x)**2)1
expand(expr) 展開表達式 expand((x + 1)**2)x**2 + 2*x + 1
factor(expr) 因式分解表達式 factor(x**2 - 2*x - 8)(x - 4)*(x + 2)
代數 solveset(equation, var) 解方程式 solveset(x**2 - 4, x){-2, 2}
微積分 diff(expr, var) 對表達式進行微分 diff(sin(x), x)cos(x)
integrate(expr, var) 對表達式進行積分 integrate(exp(x), x)exp(x)
limit(expr, var, point) 計算表達式的極限 limit(sin(x)/x, x, 0)1
三角函數 sin(x), cos(x), tan(x) 三角函數 sin(pi / 2)1
asin(x), acos(x), atan(x) 反三角函數 asin(1)π/2
指數對數 exp(x) 指數函數 exp(1)E
log(x, base) 對數函數,base默認為 e log(e)1

在 SymPy 裡,圓周率 π 在 SymPy 裡是以 pi 來表示。自然對數的底數 e 是以 E 來表示。

在這裡,我們先介紹如何用 SymPy 內的函數來做三角函數,指數,和對數的計算。

例如,要計算 sin(30°),要以弧度 sin(π/6) 來計算:

sin(pi / 6)

\(\displaystyle \frac{1}{2}\)

我們看到 SymPy 內建是以分數來呈現計算的結果。

如果要以數值解來呈現,可以在要後面加上 .n(),就會以小數呈現數值解:

sin(pi / 6).n()

\(\displaystyle 0.5\)

這裡看到,它算出正確的值 0.5。而不是像在前一篇文章用 math 模組中算出的近似值 0.49999999999999994。

對數的用法,若沒有指定底數 (base),就會以自然對數的底數 e 來計算:

log(100).n()

\(\displaystyle 4.60517018598809\)

若要計算以 10 為底數的對數,可以輸入:

log(100, 10).n()

\(\displaystyle 2.0\)

指數可以用 Pow( ) 這個函數,例如要計算 2 的 3 次方:

Pow(2, 3)

\(\displaystyle 8\)

SymPy 的主要功能之一是可以做數學的符號運算,例如解方程式 \(x^2 + 3x - 2 = 0\)

# 先設未知數 x
x = Symbol("x")

# 計算方程式的解
solveset(x**2 + 3*x - 2, x)

\(\displaystyle \left\{- \frac{3}{2} + \frac{\sqrt{17}}{2}, - \frac{\sqrt{17}}{2} - \frac{3}{2}\right\}\)

如果要用數值解呈現上面的計算結果,可以用以下表示:

solveset(x**2 + 3*x - 2, x).n()

\(\displaystyle \left\{-3.56155281280883, 0.56155281280883\right\}\)

SymPy 的符號運算功能很豐富,也可以用來計算代數,微積分,和數學其它領域。對於用電腦做數學符號計算有興趣的讀者,可以更深入地學習 SymPy。

這個網誌中的熱門文章

在 Colab 筆記本裡呈現更美觀的數學式

用 Colab AI 生成程式碼解數學方程式

利用 CoCalc 網站的 ChatGPT 對話窗來算數學