วาด hyperbola ด้วย TikZ

hyperbola plot with TikZ

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

โจทย์เป็นแบบนี้ครับ ให้พล็อตกราฟพาราโบลา

    \[\frac{x^2}{4}-\frac{y^2}{40}=1\]

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

วิธีการพล็อตก็ต้องเปลี่ยนสมการไฮเปอร์โบลาให้อยู่ในรูปสมการ

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

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

Your email address will not be published. Required fields are marked *