第 3 章 一元方程與聯立方程¶

本章將介紹如何使用 wxMaxima 解一元一次方程、一元二次方程,以及二元一次聯立方程。本章內容完全對應高中數學最核心的方程式操作,並示範如何使用 CAS 協助檢查答案與處理較複雜的情況。


3.1 解一元一次方程¶

一元一次方程的標準形式為:

$$ ax + b = 0 $$

wxMaxima 使用 solve 指令解方程式:

solve(方程式, 未知數);

▶ 範例:解一元一次方程¶

解:

$$ 2x - 5 = 7 $$

In [2]:
solve(2*x - 5 = 7, x);
Out[2]:
\[\tag{${\it \%o}_{1}$}\left[ x=6 \right] \]

3.2 一元二次方程與判別式¶

一元二次方程一般形式:

$$ ax^2 + bx + c = 0 $$

使用 solve 即可直接求根:

▶ 範例¶

解:

$$ x^2 - 5x + 6 = 0 $$

In [3]:
solve(x^2 - 5*x + 6 = 0, x);
Out[3]:
\[\tag{${\it \%o}_{2}$}\left[ x=3 , x=2 \right] \]

3.2.1 判別式 $\Delta = b^2 - 4ac$¶

判別式決定根的型態:

  • 若 $\Delta > 0$:兩個不同實根

  • 若 $\Delta = 0$:一個實根(重根)

  • 若 $\Delta < 0$:無實根(兩複數共軛根)

可以自訂一個判別式函數:

In [4]:
delta(a,b,c) := b^2 - 4*a*c;
Out[4]:
\[\tag{${\it \%o}_{3}$}\delta\left(a , b , c\right):=b^2-4\,a\,c\]

測試:

In [5]:
delta(1, -5, 6);
Out[5]:
\[\tag{${\it \%o}_{4}$}1\]

3.2.2 用 CAS 推導二次方程的根公式¶

你也可以請 CAS 解一般式:

In [6]:
solve(a*x^2 + b*x + c = 0, x);
Out[6]:
\[\tag{${\it \%o}_{5}$}\left[ x=-\left(\frac{\sqrt{b^2-4\,a\,c}+b}{2\,a}\right) , x=\frac{\sqrt{b^2-4\,a\,c}-b}{2\,a} \right] \]

這可用來驗證教科書公式。


3.3 數值解:高次方程與無法解析的方程式¶

當方程式很複雜(如五次以上),solve 不一定能給解析式。

可改用以下方法求數值解:

  • allroots(方程式):只能用在多項式方程式,求所有數值近似根
  • find_root(方程式, x, 區間起點, 區間終點):用二分法求指定區間的單一根,區間起點和區間終點必須跨過根。
  • mnewton(方程式, x, 估計值):用牛頓法求數值解,不限於多項式方程式,其它非線性方程式也適用。

▶ 範例:數值根¶

求 $x^5 - x + 1 = 0$ 的根。

先嘗試用 solve(),只得到原式,沒有得到解析解。。

In [7]:
solve(x^5 - x + 1, x);
Out[7]:
\[\tag{${\it \%o}_{6}$}\left[ 0=x^5-x+1 \right] \]

用以下指令得到數值解:

In [8]:
allroots(x^5 - x + 1 = 0);
Out[8]:
\[\tag{${\it \%o}_{7}$}\left[ x=0.3524715460317262\,i+0.7648844336005848 , x=0.7648844336005848-0.3524715460317262\,i , x=1.0839541013177105\,i-0.18123244446987544 , x=-\left(1.0839541013177105\,i\right)-0.18123244446987544 , x=-1.1673039782614187 \right] \]

可以看到這個多項式方程式只有 1 個實數解,另外 4 個是虛數解。

若要使用 find_root,先畫出這個函數的圖形,可以看到在 -1 到 -1.5 之間有一個實數解。

In [9]:
plot2d([x^5 - x + 1], [x,-2,2])$   /* 在 wxMaxima 裡,也可以用 wxplot2d() */
No description has been provided for this image
In [10]:
find_root(x^5 - x + 1 = 0, x, -1.5, -1);
Out[10]:
\[\tag{${\it \%o}_{9}$}-1.1673039782614187\]

要使用牛頓法 mnewton 求數值解,初次使用必需先 load(mnewton) 這個套件。

In [11]:
load(mnewton);
mnewton(x^5 - x + 1 =0, x, -2);
Out[11]:
\[\tag{${\it \%o}_{10}$}\mbox{ /home/hcp2/maxima/share/maxima/5.47.0/share/mnewton/mnewton.mac }\]
Out[11]:
\[\tag{${\it \%o}_{11}$}\left[ \left[ x=-1.1673039782614187 \right] \right] \]

3.4 二元一次聯立方程¶

解聯立方程的語法

solve([方程1, 方程2], [未知數1, 未知數2]);

▶ 範例¶

解:

$$ \begin{cases} 2x + y = 7 \\ x - y = 1 \end{cases} $$

In [12]:
solve([2*x + y = 7, x - y = 1], [x, y]);
Out[12]:
\[\tag{${\it \%o}_{12}$}\left[ \left[ x=\frac{8}{3} , y=\frac{5}{3} \right] \right] \]

也可以用牛頓法求聯立方程式的數值解:

In [13]:
mnewton([2*x + y = 7, x - y = 1], [x, y], [2,1]);
Out[13]:
\[\tag{${\it \%o}_{13}$}\left[ \left[ x=2.6666666666666665 , y=1.6666666666666667 \right] \right] \]

3.5 文字題的建模範例¶

▶ 題目範例¶

某班男生 20 人,女生 15 人。若每位男生繳 50 元、女生繳 30 元,總金額為:

$$ 20 \cdot 50 + 15 \cdot 30 $$

但如果有變數(例如人數未知),可用 CAS 建模。

▶ 範例:建模並求解¶

「班上共有 36 人,男生比女生多 8 人,分別有多少男生與女生?」

設:

  • 男生:x

  • 女生:y

方程組:

$$ \begin{cases} x + y = 36 \\ x - y = 8 \end{cases} $$

解:

In [14]:
solve([x + y = 36, x - y = 8], [x, y]);
Out[14]:
\[\tag{${\it \%o}_{14}$}\left[ \left[ x=22 , y=14 \right] \right] \]

3.6 練習題¶

  1. 解下列方程式:
    • $3x - 7 = 11$
    • $x^2 + x - 12 = 0$
  2. 求判別式並判斷下列方程的根的型態:

$$ 2x^2 - 4x + 2 = 0 $$

  1. 使用 allroots 求

$$ x^4 - 3x + 1 = 0 $$

  1. 解聯立方程: $$ \begin{cases} 3x + 2y = 12 \\ x - 4y = -6 \end{cases} $$

3.7 本章小結¶

本章你學會:

  • 使用 solve 解一元一次、一元二次方程

  • 使用判別式判斷二次方程的根

  • 使用 allroots,find_root 與 mnewton 求數值解

  • 解二元一次聯立方程

  • 將文字題轉換成聯立方程建模

下一章將介紹不等式與絕對值方程,讓你利用 CAS 處理更多高中常見的問題。

回首頁