# Nakafa Framework: LLM

URL: /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 <InlineMath math="A" /> dengan elemen-elemen:

<MathContainer>
<BlockMath math="A = \begin{pmatrix} a & b/2 \\ b/2 & c \end{pmatrix}" />
</MathContainer>

Matriks ini memiliki nilai eigen <InlineMath math="\lambda_1, \lambda_2 \in \mathbb{R}" /> dan vektor eigen ortonormal yang sesuai <InlineMath math="v_1, v_2 \in \mathbb{R}^2" />. Hal yang menarik terjadi ketika kita menggunakan transformasi koordinat melalui matriks <InlineMath math="S = (v_1 \quad v_2) \in \mathbb{R}^{2 \times 2}" />.

Untuk transformasi koordinat, kita menggunakan <InlineMath math="\begin{pmatrix} \delta \\ \epsilon \end{pmatrix} = S^T \begin{pmatrix} d \\ e \end{pmatrix}" />. Dalam koordinat baru <InlineMath math="\xi = S^T x" />, persamaan berubah menjadi:

<MathContainer>
<BlockMath math="\lambda_1 \xi_1^2 + \lambda_2 \xi_2^2 + \delta \xi_1 + \epsilon \xi_2 + f = 0" />
</MathContainer>

## Proses Melengkapkan Kuadrat

Untuk kedua variabel dengan <InlineMath math="\lambda_1, \lambda_2 \neq 0" />, proses melengkapkan kuadrat dilakukan secara terpisah:

<MathContainer>
<BlockMath math="\begin{aligned} 0 &= \lambda_1 \left( \xi_1^2 + 2 \frac{\delta}{2\lambda_1} \xi_1 + \frac{\delta^2}{4\lambda_1^2} \right) - \frac{\delta^2}{4\lambda_1} \\ &\quad + \lambda_2 \left( \xi_2^2 + 2 \frac{\epsilon}{2\lambda_2} \xi_2 + \frac{\epsilon^2}{4\lambda_2^2} \right) - \frac{\epsilon^2}{4\lambda_2} + f \end{aligned}" />
</MathContainer>

Hasil dari proses ini memberikan bentuk yang lebih sederhana:

<MathContainer>
<BlockMath math="\begin{aligned} &= \lambda_1 \left( \xi_1 + \frac{\delta}{2\lambda_1} \right)^2 + \lambda_2 \left( \xi_2 + \frac{\epsilon}{2\lambda_2} \right)^2 \\ &\quad + \left( f - \frac{\delta^2}{4\lambda_1} - \frac{\epsilon^2}{4\lambda_2} \right) \end{aligned}" />
</MathContainer>

Dengan menentukan titik pusat <InlineMath math="(m_1, m_2) = \left( -\frac{\delta}{2\lambda_1}, -\frac{\epsilon}{2\lambda_2} \right)" /> dan konstanta <InlineMath math="\gamma = \frac{\delta^2}{4\lambda_1} + \frac{\epsilon^2}{4\lambda_2} - f" />, kita memperoleh:

<MathContainer>
<BlockMath math="\lambda_1 (\xi_1 - m_1)^2 + \lambda_2 (\xi_2 - m_2)^2 - \gamma = 0" />
</MathContainer>

Untuk <InlineMath math="\gamma > 0" />, berbagai bentuk kurva dapat muncul tergantung tanda nilai eigen.

## Klasifikasi Kurva

### Kedua Nilai Eigen Positif

Jika <InlineMath math="\lambda_1 > 0" /> dan <InlineMath math="\lambda_2 > 0" />, maka irisan kerucut yang terbentuk adalah **elips**:

<MathContainer>
<BlockMath math="\frac{(\xi_1 - m_1)^2}{r_1^2} + \frac{(\xi_2 - m_2)^2}{r_2^2} = 1" />
</MathContainer>

Dengan panjang sumbu setengah <InlineMath math="r_1 = \sqrt{\frac{\gamma}{\lambda_1}}" /> dalam arah <InlineMath math="v_1" /> dan <InlineMath math="r_2 = \sqrt{\frac{\gamma}{\lambda_2}}" /> dalam arah <InlineMath math="v_2" />.

<LineEquation
  title={<>Visualisasi Elips dalam Koordinat <InlineMath math="\xi_1, \xi_2" /></>}
  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 <InlineMath math="\lambda_1 > 0" /> dan <InlineMath math="\lambda_2 < 0" />, irisan kerucut yang terbentuk adalah **hiperbola**:

<MathContainer>
<BlockMath math="\frac{(\xi_1 - m_1)^2}{r_1^2} - \frac{(\xi_2 - m_2)^2}{r_2^2} = 1" />
</MathContainer>

Dengan panjang sumbu setengah <InlineMath math="r_1 = \sqrt{\frac{\gamma}{\lambda_1}}" /> dalam arah <InlineMath math="v_1" /> dan <InlineMath math="r_2 = \sqrt{\frac{\gamma}{-\lambda_2}}" /> dalam arah <InlineMath math="v_2" />.

<LineEquation
  title={<>Visualisasi Hiperbola dalam Koordinat <InlineMath math="\xi_1, \xi_2" /></>}
  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 <InlineMath math="\lambda_1 \neq 0" /> dan <InlineMath math="\lambda_2 = 0" />. Melengkapkan kuadrat memberikan:

<MathContainer>
<BlockMath math="0 = \lambda_1 \left( \xi_1^2 + 2 \frac{\delta}{2\lambda_1} \xi_1 + \frac{\delta^2}{4\lambda_1^2} \right) - \frac{\delta^2}{4\lambda_1} + \epsilon \xi_2 + f" />
<BlockMath math="= \lambda_1 \left( \xi_1 + \frac{\delta}{2\lambda_1} \right)^2 + \epsilon \xi_2 + \left( f - \frac{\delta^2}{4\lambda_1} \right)" />
<BlockMath math="= \lambda_1 (\xi_1 - m_1)^2 + \epsilon \xi_2 - \gamma" />
</MathContainer>

Irisan kerucut yang terbentuk adalah **parabola**:

<MathContainer>
<BlockMath math="\xi_2 = -\frac{\lambda_1}{\epsilon} (\xi_1 - m_1)^2 + \frac{\gamma}{\epsilon}" />
</MathContainer>

<LineEquation
  title={<>Visualisasi Parabola dalam Koordinat <InlineMath math="\xi_1, \xi_2" /></>}
  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 <InlineMath math="\mathbb{R}^2" /> memenuhi persamaan kuadrat umum:

<MathContainer>
<BlockMath math="ax_1^2 + bx_1x_2 + cx_2^2 + dx_1 + ex_2 + f = 0" />
</MathContainer>

Yang dapat ditulis dalam bentuk matriks sebagai:

<MathContainer>
<BlockMath math="\begin{pmatrix} x_1 \\ x_2 \end{pmatrix}^T \begin{pmatrix} a & b/2 \\ b/2 & c \end{pmatrix} \begin{pmatrix} x_1 \\ x_2 \end{pmatrix} + \begin{pmatrix} d \\ e \end{pmatrix}^T \begin{pmatrix} x_1 \\ x_2 \end{pmatrix} + f = 0" />
</MathContainer>

## Permukaan Kuadrat dan Transformasi

Untuk matriks simetris <InlineMath math="A \in \mathbb{R}^{n \times n}" />, vektor <InlineMath math="b \in \mathbb{R}^n" />, dan skalar <InlineMath math="c \in \mathbb{R}" />, **permukaan kuadrat** <InlineMath math="Q" /> didefinisikan sebagai himpunan solusi persamaan kuadrat umum:

<MathContainer>
<BlockMath math="x^T A x + b^T x + c = 0" />
</MathContainer>

Yang dapat ditulis dalam bentuk eksplisit:

<MathContainer>
<BlockMath math="Q = \left\{ x \in \mathbb{R}^n : x^T A x + b^T x + c = 0 \right\}" />
<BlockMath math="= \left\{ x \in \mathbb{R}^n : \sum_{j=1}^n \sum_{k=1}^n x_j a_{jk} x_k + \sum_{j=1}^n b_j x_j + c = 0 \right\}" />
</MathContainer>

Jika <InlineMath math="A \in \mathbb{R}^{n \times n}" /> simetris dan <InlineMath math="v_1, \ldots, v_n \in \mathbb{R}^n" /> adalah basis ortonormal dari vektor eigen dengan <InlineMath math="A \cdot v_i = \lambda_i \cdot v_i" />, maka matriks ortonormal <InlineMath math="S = (v_1 \quad \ldots \quad v_n)" /> memungkinkan diagonalisasi <InlineMath math="A \cdot S = S \cdot \Lambda" /> atau <InlineMath math="\Lambda = S^{-1} \cdot A \cdot S = S^T \cdot A \cdot S" />.

Dalam basis koordinat baru <InlineMath math="\xi = S^T x" /> dan <InlineMath math="\mu = S^T b" />, permukaan kuadrat memiliki bentuk diagonal:

<MathContainer>
<BlockMath math="Q = \left\{ \xi \in \mathbb{R}^n : \xi^T S^T A S \xi + b^T S \xi + c = 0 \right\}" />
<BlockMath math="= \left\{ \xi \in \mathbb{R}^n : \xi^T \Lambda \xi + \mu^T \xi + c = 0 \right\}" />
<BlockMath math="= \left\{ \xi \in \mathbb{R}^n : \sum_{j=1}^n \lambda_j \xi_j^2 + \sum_{j=1}^n \mu_j \xi_j + c = 0 \right\}" />
<BlockMath math="= \left\{ \xi \in \mathbb{R}^n : \sum_{j=1}^n (\lambda_j \xi_j^2 + \mu_j \xi_j) = -c \right\}" />
</MathContainer>

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.