แก้สมการแบบง่ายๆด้วย Solve[ ] และ Reduce[ ]

เราสามารถใช้ Mathematica แก้สมการง่ายๆด้วย Solve[ ]  อย่าลืมว่าวิธีเขียนสมการนั้นให้ใช้เครื่องหมาย ==  (เครื่องหมาย"เท่ากับ"สองตัว ไม่ใช่ ตัวเดียว)

In[1]:=

Solve[x^2 + 2x - 1  0, x]

Out[1]=

{{x -1 - 2^(1/2)}, {x -1 + 2^(1/2)}}

คำคอบข้างบนหมายถึง คำตอบของ x^2 + 2x - 1 0 คือ x เท่ากับ - 1 - 2^(1/2) และ - 1 + 2^(1/2)
คำตอบของ Solve สามารถติดค่าตัวแปรอื่น

In[2]:=

Solve[a x^2 + b x + c 0, x]

Out[2]=

{{x (-b - (b^2 - 4 a c)^(1/2))/(2 a)}, {x (-b + (b^2 - 4 a c)^(1/2))/(2 a)}}

ทดลองให้ Solve[ ] หาคำตอบของสมการกำลังสามดู

In[3]:=

Solve[a x^3 + b x^2 + c x + d 0, x]

Out[3]=

{{x -b/(3 a) - (2^(1/3) (-b^2 + 3 a c))/(3 a (-2 b^3 + 9 a b c - 27 a^2 d + (4 (-b^2 + ...  - 27 a^2 d + (4 (-b^2 + 3 a c)^3 + (-2 b^3 + 9 a b c - 27 a^2 d)^2)^(1/2))^(1/3))/(6 2^(1/3) a)}}

บางครั้ง Solve[ ] จะเตือนเมื่อไม่มั่นใจว่าคำตอบที่ได้สมบูรณ์หรือไม่
ตัวอย่างข้างล่างเตือนว่า Solve[ ] พยายามหาคำตอบแต่อาจได้ไม่ครบ แนะนำให้ใช้ Reduce[ ] ด้วย

In[4]:=

Solve[Sin[x/y]  1/2, x]

Solve :: ifun : Inverse functions are being used by Solve, so some solutions may not be found; use Reduce for complete solution information.  More…

Out[4]=

{{x (π y)/6}}

เมื่อใช้ Reduce[ ] ก็ได้คำตอบทั้งหมด คือ x เท่ากับ  y (π/6+ 2 n π) หรือ   y ((5π)/6+ 2 n π) เมื่อ  y≠0 และ n เป็นจำนวนเต็ม
(&& อ่านว่า "และ" ขณะที่ | | อ่านว่า "หรือ")
Reduce[ ] จะพยายามเขียนสมการหรืออสมการให้อยู่ในรูปที่ง่ายที่สุด (ที่ Mathematica คิด) ซึ่งทำให้เราได้คำตอบไปด้วย

In[5]:=

Reduce[Sin[x/y]  1/2, x]

Out[5]=

C[1] ∈Integers&&y≠0&& (xy (π/6 + 2 π C[1]) || xy ((5 π)/6 + 2 π C[1]))

Solve[ ] สามารถแก้สมการมากกว่าหนึ่งสมการได้ เพียงใส่สมการที่ต้องการเหล่านั้นเข้าไปในวงเล็บ{ }
ในตัวอย่างข้างล่าง Solve[ ] แสดงคำตอบที่ซ้ำกันออกมาด้วย ดังจะเห็นได้จาก ImplicitPlot[ ] ข้างล่าง

In[6]:=

Solve[{x^2 + y^2  1, x y  1/2}, {x, y}]

Out[6]=

{{x -1/2^(1/2), y -1/2^(1/2)}, {x -1/2^(1/2), y -1/2^(1/2)}, {x1/2^(1/2), y1/2^(1/2)}, {x1/2^(1/2), y1/2^(1/2)}}

In[7]:=

<<Graphics`ImplicitPlot` ImplicitPlot[{x^2 + y^21, x y  1/2}, {x, -2, 2}, PlotRange  {-2, 2}]

[Graphics:../HTMLFiles/chapter4_19.gif]

Out[8]=

⁃Graphics⁃

เมื่อทดลองใช้ Reduce ดูจะได้คำตอบว่า y = -2(x^3 - x) และ x = ±1/2^(1/2)  

In[9]:=

Reduce[{x^2 + y^2  1, x y  1/2}, {x, y}]

Out[9]=

(x -1/2^(1/2) || x1/2^(1/2)) &&y -2 (-x + x^3)

ถ้าเราต้องการคำตอบเป็นตัวเลขเราก็สามารถใช้ N[ ] หรือ //N ได้

In[10]:=

Solve[{x^2 + y^2  1, x y  1/2}, {x, y}] //N

Out[10]=

RowBox[{{, RowBox[{RowBox[{{, RowBox[{RowBox[{x, , RowBox[{-, 0.707107}]}], ,, RowBox[ ... wBox[{{, RowBox[{RowBox[{x, , 0.707107}], ,, RowBox[{y, , 0.707107}]}], }}]}], }}]

In[11]:=

N[Solve[{x^2 + y^2  1, x y  1/2}, {x, y}] ]

Out[11]=

RowBox[{{, RowBox[{RowBox[{{, RowBox[{RowBox[{x, , RowBox[{-, 0.707107}]}], ,, RowBox[ ... wBox[{{, RowBox[{RowBox[{x, , 0.707107}], ,, RowBox[{y, , 0.707107}]}], }}]}], }}]

In[12]:=

Reduce[{x^2 + y^2  1, x y  1/2}, {x, y}]//N

Out[12]=

RowBox[{RowBox[{(, RowBox[{RowBox[{x, , RowBox[{-, 0.707107}]}], ||, RowBox[{x, ᡫ ... owBox[{RowBox[{-, 2.}],  , RowBox[{(, RowBox[{RowBox[{RowBox[{-, 1.}],  , x}], +, x^3}], )}]}]}]}]

In[13]:=

N[Reduce[{x^2 + y^2  1, x y  1/2}, {x, y}]]

Out[13]=

RowBox[{RowBox[{(, RowBox[{RowBox[{x, , RowBox[{-, 0.707107}]}], ||, RowBox[{x, ᡫ ... owBox[{RowBox[{-, 2.}],  , RowBox[{(, RowBox[{RowBox[{RowBox[{-, 1.}],  , x}], +, x^3}], )}]}]}]}]

Reduce[ ] นั้นใช้กับอสมการได้ด้วย

In[14]:=

Reduce[x y^2>1, {x, y}]

Out[14]=

x>0&& (y< -1/x^(1/2) || y>1/x^(1/2))

เราสามารถจำกัดคำตอบของ Reduce[ ] ให้เป็นจำนวนเต็ม จำนวนจริง และจำนวนเชิงซ้อน
ตัวอย่างต่อไปไม่มีคำตอบถ้า x เป็นจำนวนจริง

In[15]:=

Reduce[x^2< -1, x]

Out[15]=

False

แต่มีคำตอบถ้า x เป็นจำนวนเชิงซ้อน

In[16]:=

Reduce[x^2< -1, x, Complexes]

Out[16]=

Re[x] 0&& (Im[x] < -1 || Im[x] >1)

ตัวอย่างต่อไปหาคำตอบที่เป็นจำนวนเต็มบวก

In[17]:=

Reduce[{2x + 2y + z200, 2x + 7y - 2z 100, x>0, y>0, z>0}, {x, y, z}, Integers]

Out[17]=

x10&&y40&&z100 || x21&&y34& ... &&y10&&z50 || x76&&y4&&z40

แต่บางครั้ง Reduce[ ] ก็จนปัญญาเหมือนกัน (Fermat's Last Theorem for n=3)
โดยตอบกลับมาแบบกำปั้นทุบดิน

In[18]:=

Reduce[{x^3 + y^3z^3, x>0, y>0, z>0}, {x, y, z}, Integers]

Out[18]=

(x | y | z) ∈Integers&&x≥1&&y≥1&&zRoot[-x^3 - y^3 + #1^3&, 1]


Created by Mathematica  (October 4, 2005)