วาด hyperbola ด้วย TikZ


คุณสุขุมถามมาใน forum พอดีไม่เคยใช้เหมือนกันเลยตอบไม่ได้ ใช้ MATLAB ทดสอบแล้วตอบ ซึ่งคิดว่าเหมือน ๆ กัน วันนี้นั่งดูเว็บ TUG เล่น ๆ ก็พบว่ามีแพ็กเกจ pgfplots ซึ่งสามารถใช้งานในการพล็อตกราฟได้ดี เลยลองเล่นดูสักพัก แล้วลองทำโจทย์ที่คุณสุขุมให้มาดู ปรากฏว่าง่ายมาก ๆ เลยลองเขียนวิธีการไว้เป็นบันทึกช่วยจำสักหน่อย

โจทย์เป็นแบบนี้ครับ ให้พล็อตกราฟพาราโบลา
$$\frac{x^2}{4}-\frac{y^2}{40}=1$$

จะได้รหัสของ TikZ เป็นดังนี้

\documentclass{report}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
  \begin{axis}[xlabel=$x$, ylabel=$y$,
                        title={$\frac{x^2}{4}-\frac{y^2}{40}=1$}]
    \addplot[blue,mark=none] expression[domain=2:8]{sqrt(10*x^2-40)};
    \addplot[blue,mark=none] expression[domain=2:8]{-sqrt(10*x^2-40)};
    \addplot[blue,mark=none] expression[domain=-8:-2]{sqrt(10*x^2-40)};
    \addplot[blue,mark=none] expression[domain=-8:-2]{-sqrt(10*x^2-40)};
  \end{axis}
\end{tikzpicture}

\end{document}

วิธีการพล็อตก็ต้องเปลี่ยนสมการไฮเปอร์โบลาให้อยู่ในรูปสมการ $$y = f(x)$$ ก่อน ซึ่งจากสมการไฮเปอร์โบลาที่คุณสุขุมให้มาสามารถแปลงเป็นสมการได้ดังนี้
$$y = \sqrt{10x^2-40}$$
สมการนี้มีปัญหาเล็กน้อยนั่นคือค่า $$x$$ ซึ่งจะต้องไม่มีค่าอยู่ในช่วง $$-2\leq x \leq 2$$ ไม่เช่นนั้นค่า $$y$$ ที่ได้จะเป็นจำนวนเชิงซ้อน วิธีการพล็อตก็ต้องแบ่งการพล็อตออกเป็นสองช่วงคือช่วงที่ค่า $$x > 2$$ และช่วงที่ค่า $$x < -2$$ และเนื่องจากรากของสมการมีทั้งค่าบวกและลบ ดังนั้นเวลาพล็อตต้องพล็อตทั้งค่าบวกและลบ

สำหรับการวาดรูปโดยใช้ TikZ นั้นให้เริ่มต้นด้วยการเรียกใช้แพ็กเกจ pgfplot กำหนดสิ่งแวดล้อม axis และกำหนด xlabel, ylabel และ title ซึ่งจะมากำหนดทีหลังจากที่ได้พล็อตกราฟจนพอใจแล้วก็ได้ จากตัวอย่างข้างต้นคำสั่ง \addplot ก็ตรงตัว และได้กำหนดให้เส้นกราฟเป็นสีน้ำเงิน โดยไม่มีการวางจุดในกราฟ สำหรับคำสั่ง expression นั้นสำหรับสมการที่มีคำสั่งพิเศษ ซึ่งในกรณีคือ sqrt สำหรับกรณีที่มีเฉพาะค่า $$x$$ ไม่จำเป็นต้องมีคำสั่งนี้ ในตัวอย่างนี้สั่งให้พล็อตกราฟในช่วง $$-8 \leq x \leq -2$$ และ $$2 \leq x \leq 8$$ เมื่อรวมรหัสต้นต่าง ๆ เข้าด้วยกันก็จะได้ผลลัพธ์ดังนี้

hyperbola plot with TikZ
รายละเอียดการใช้งาน pgfplots สามารถอ่านได้จากคู่มือตามลิงค์ที่ให้ครับ

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s