# Nakafa Framework: LLM
URL: https://nakafa.com/id/subject/university/bachelor/ai-ds/linear-methods/real-axis-transformation
Source: https://raw.githubusercontent.com/nakafaai/nakafa.com/refs/heads/main/packages/contents/subject/university/bachelor/ai-ds/linear-methods/real-axis-transformation/id.mdx
Output docs content for large language models.
---
export const metadata = {
  title: "Transformasi Sumbu Nyata",
  description: "Pelajari bentuk kuadrat dengan matriks simetris, transformasi koordinat berbasis nilai eigen, dan klasifikasi irisan kerucut meliputi elips, hiperbola, dan parabola.",
  authors: [{ name: "Nabil Akbarazzima Fatih" }],
  date: "07/16/2025",
  subject: "Metode Linear AI",
};
import { LineEquation } from "@repo/design-system/components/contents/line-equation";
import { getColor } from "@repo/design-system/lib/color";
## Bentuk Kuadrat dengan Matriks Simetris
Ketika kamu menghadapi persamaan kuadrat umum, cara terbaik untuk memahaminya adalah dengan melihat strukturnya dalam bentuk matriks. Bayangkan kamu memiliki matriks simetris  dengan elemen-elemen:
Matriks ini memiliki nilai eigen  dan vektor eigen ortonormal yang sesuai . Hal yang menarik terjadi ketika kita menggunakan transformasi koordinat melalui matriks .
Untuk transformasi koordinat, kita menggunakan . Dalam koordinat baru , persamaan berubah menjadi:
## Proses Melengkapkan Kuadrat
Untuk kedua variabel dengan , proses melengkapkan kuadrat dilakukan secara terpisah:
Hasil dari proses ini memberikan bentuk yang lebih sederhana:
Dengan menentukan titik pusat  dan konstanta , kita memperoleh:
Untuk , berbagai bentuk kurva dapat muncul tergantung tanda nilai eigen.
## Klasifikasi Kurva
### Kedua Nilai Eigen Positif
Jika  dan , maka irisan kerucut yang terbentuk adalah **elips**:
Dengan panjang sumbu setengah  dalam arah  dan  dalam arah .
Visualisasi Elips dalam Koordinat >}
  description="Kurva elips dengan kedua nilai eigen positif dan sumbu utama sesuai arah vektor eigen."
  data={[
    {
      points: Array.from({ length: 100 }, (_, i) => {
        const t = (i / 99) * 2 * Math.PI;
        const lambda1 = 2; // λ₁ > 0
        const lambda2 = 1; // λ₂ > 0
        const gamma = 16; // γ > 0
        const m1 = 0; // δ/(2λ₁) = 0
        const m2 = 0; // ε/(2λ₂) = 0
        const r1 = Math.sqrt(gamma / lambda1);
        const r2 = Math.sqrt(gamma / lambda2);
        const x = Math.cos(t) * r1 + m1;
        const y = Math.sin(t) * r2 + m2;
        return { x, y, z: 0 };
      }),
      color: getColor("CYAN"),
      smooth: true,
      showPoints: false
    },
    {
      points: [
        { x: -4, y: 0, z: 0 },
        { x: 4, y: 0, z: 0 }
      ],
      color: getColor("EMERALD"),
      smooth: false,
      showPoints: false,
      labels: [
        {
          text: "ξ₁",
          at: 1,
          offset: [0.3, -0.3, 0]
        }
      ]
    },
    {
      points: [
        { x: 0, y: -3, z: 0 },
        { x: 0, y: 3, z: 0 }
      ],
      color: getColor("EMERALD"),
      smooth: false,
      showPoints: false,
      labels: [
        {
          text: "ξ₂",
          at: 1,
          offset: [0.3, 0.3, 0]
        }
      ]
    },
    {
      points: [
        { x: 0, y: 0, z: 0 }
      ],
      color: getColor("ROSE"),
      smooth: false,
      showPoints: true,
      labels: [
        {
          text: "Pusat (m₁, m₂)",
          at: 0,
          offset: [0.4, 0.4, 0]
        }
      ]
    }
  ]}
  cameraPosition={[0, 0, 12]}
  showZAxis={false}
/>
### Nilai Eigen Berlawanan Tanda
Ketika  dan , irisan kerucut yang terbentuk adalah **hiperbola**:
Dengan panjang sumbu setengah  dalam arah  dan  dalam arah .
Visualisasi Hiperbola dalam Koordinat >}
  description="Kurva hiperbola dengan sumbu utama sesuai arah vektor eigen dan pusat transformasi."
  data={[
    {
      points: Array.from({ length: 60 }, (_, i) => {
        const t = (i / 29 - 1) * 2.5;
        const lambda1 = 2; // λ₁ > 0
        const lambda2 = -1; // λ₂ < 0
        const gamma = 3; // γ > 0
        const r1 = Math.sqrt(gamma / lambda1);
        const r2 = Math.sqrt(gamma / (-lambda2));
        const x = Math.cosh(t) * r1;
        const y = Math.sinh(t) * r2;
        return { x, y, z: 0 };
      }),
      color: getColor("ORANGE"),
      smooth: true,
      showPoints: false
    },
    {
      points: Array.from({ length: 60 }, (_, i) => {
        const t = (i / 29 - 1) * 2.5;
        const lambda1 = 2;
        const lambda2 = -1;
        const gamma = 3;
        const r1 = Math.sqrt(gamma / lambda1);
        const r2 = Math.sqrt(gamma / (-lambda2));
        const x = -Math.cosh(t) * r1;
        const y = Math.sinh(t) * r2;
        return { x, y, z: 0 };
      }),
      color: getColor("ORANGE"),
      smooth: true,
      showPoints: false
    },
    {
      points: Array.from({ length: 2 }, (_, i) => {
        const lambda1 = 2;
        const lambda2 = -1;
        const gamma = 3;
        const r1 = Math.sqrt(gamma / lambda1);
        const r2 = Math.sqrt(gamma / (-lambda2));
        const slope = r2 / r1; // slope asimptot
        const x = (i - 0.5) * 6; // dari -3 ke 3
        const y = slope * x;
        return { x, y, z: 0 };
      }),
      color: getColor("SKY"),
      smooth: false,
      showPoints: false,
      labels: [
        {
          text: "r₁",
          at: 1,
          offset: [0.5, -0.5, 0]
        }
      ]
    },
    {
      points: Array.from({ length: 2 }, (_, i) => {
        const lambda1 = 2;
        const lambda2 = -1;
        const gamma = 3;
        const r1 = Math.sqrt(gamma / lambda1);
        const r2 = Math.sqrt(gamma / (-lambda2));
        const slope = -r2 / r1; // slope asimptot negatif
        const x = (i - 0.5) * 6; // dari -3 ke 3
        const y = slope * x;
        return { x, y, z: 0 };
      }),
      color: getColor("SKY"),
      smooth: false,
      showPoints: false,
      labels: [
        {
          text: "r₂",
          at: 0,
          offset: [-0.5, -0.5, 0]
        }
      ]
    },
    {
      points: [
        { x: -4, y: 0, z: 0 },
        { x: 4, y: 0, z: 0 }
      ],
      color: getColor("VIOLET"),
      smooth: false,
      showPoints: false,
      labels: [
        {
          text: "ξ₁",
          at: 1,
          offset: [0.3, -0.3, 0]
        }
      ]
    },
    {
      points: [
        { x: 0, y: -3, z: 0 },
        { x: 0, y: 3, z: 0 }
      ],
      color: getColor("VIOLET"),
      smooth: false,
      showPoints: false,
      labels: [
        {
          text: "ξ₂",
          at: 1,
          offset: [0.3, 0.3, 0]
        }
      ]
    }
  ]}
  cameraPosition={[0, 0, 12]}
  showZAxis={false}
/>
### Salah Satu Nilai Eigen Nol
Kondisi khusus terjadi ketika  dan . Melengkapkan kuadrat memberikan:
Irisan kerucut yang terbentuk adalah **parabola**:
Visualisasi Parabola dalam Koordinat >}
  description="Kurva parabola dengan satu nilai eigen nol dan transformasi sumbu koordinat sesuai vektor eigen."
  data={[
    {
      points: Array.from({ length: 50 }, (_, i) => {
        const t = (i / 49 - 0.5) * 6;
        const lambda1 = 1; // λ₁ ≠ 0
        const epsilon = -2; // ε ≠ 0
        const gamma = 2; // γ
        const m1 = 0; // δ/(2λ₁) = 0
        const x = t;
        const y = -(lambda1 / epsilon) * Math.pow(x - m1, 2) + (gamma / epsilon);
        return { x, y, z: 0 };
      }),
      color: getColor("PURPLE"),
      smooth: true,
      showPoints: false
    },
    {
      points: [
        { x: -3.5, y: 0, z: 0 },
        { x: 3.5, y: 0, z: 0 }
      ],
      color: getColor("CYAN"),
      smooth: false,
      showPoints: false,
      labels: [
        {
          text: "ξ₁",
          at: 1,
          offset: [0.3, -0.3, 0]
        }
      ]
    },
    {
      points: [
        { x: 0, y: -0.5, z: 0 },
        { x: 0, y: 4, z: 0 }
      ],
      color: getColor("CYAN"),
      smooth: false,
      showPoints: false,
      labels: [
        {
          text: "ξ₂",
          at: 1,
          offset: [0.3, 0.3, 0]
        }
      ]
    }
  ]}
  cameraPosition={[0, 0, 12]}
  showZAxis={false}
/>
## Contoh Dua Dimensi
Irisan kerucut dalam  memenuhi persamaan kuadrat umum:
Yang dapat ditulis dalam bentuk matriks sebagai:
## Permukaan Kuadrat dan Transformasi
Untuk matriks simetris , vektor , dan skalar , **permukaan kuadrat**  didefinisikan sebagai himpunan solusi persamaan kuadrat umum:
Yang dapat ditulis dalam bentuk eksplisit:
Jika  simetris dan  adalah basis ortonormal dari vektor eigen dengan , maka matriks ortonormal  memungkinkan diagonalisasi  atau .
Dalam basis koordinat baru  dan , permukaan kuadrat memiliki bentuk diagonal:
Dalam basis ortonormal vektor eigen, bentuk kuadrat memiliki struktur diagonal. Transformasi ini disebut **transformasi sumbu utama** karena sumbu koordinat baru sejajar dengan arah vektor eigen matriks.