You are here: Home // Graphics, บันทึกช่วยจำ // วาด hyperbola ด้วย TikZ

วาด 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 สามารถอ่านได้จากคู่มือตามลิงค์ที่ให้ครับ

Tags: ,

3 Responses to " วาด hyperbola ด้วย TikZ "

  1. k_sukhum says:

    อาจารย์ครับ

    x\geq -2 \cup x\leq 2 ครับ

    ถ้า

    -2 \leq x \leq 2 จะได้จำนวนเชิงซ้อนครับ

  2. k_sukhum says:

    เอ้ย !!

     x \geq -2 ; x \leq 2 ครับ ถ้า -2< x< 2 จะได้จำนวนเชิงซ้อนครับ

  3. admin says:

    แก้แล้วนะครับ แก้เป็นต้องไม่มีค่าอยู่ ขอบคุณครับ

Leave a Reply

Copyright © 2009 Thai LaTeX user group. All rights reserved.
Designed by Theme Junkie. Powered by WordPress.