16  t’ye Bağlı Matrisler A(t) — Türev dA/dt

Tersin türevi, özdeğer türevi ve interlacing eşitsizlikleri

NotBölüm bilgisi

Video: MIT 18.065 — Matrices A(t) Depending on t, Derivative = dA/dt · OCW: Lecture 15 · Okuma süresi: ≈35 dk · Eğitmen: Gilbert Strang · Önkoşul: Ders 14 (tersin sonlu/düşük-rank değişimi).

16.1 Bu Derste Ne Var?

Geçen ders (Ders 14) A değişince tersinin nasıl değiştiğini sordu — sonlu, düşük-rank değişim. Bu ders aynı soruyu özdeğerler ve tekil değerler için sorar, ve bu kez kalkülüs devreye girer: matris sürekli (t’ye bağlı) değişirse türevler ne olur?

Üç sonuç:

  1. Tersin türevi: d(A⁻¹)/dt = −A⁻¹ (dA/dt) A⁻¹ — Ders 14’ün kalkülüs tamamlaması; 1×1 hali d(1/t)/dt = −1/t².
  2. Özdeğer türevi (günün yıldızı): dλ/dt = yᵀ (dA/dt) x — sağ ve sol özvektör arasına değişim hızını koy. Özvektörün türevini içermez — güzelliği bu.
  3. Sonlu rank-1 değişim: kesin formül YOK ama eşitsizlikler VAR. S + uuᵀ özdeğerleri yukarı iter; interlacing (içiçe geçme) yeni özdeğerlerin eskileri geçmemesini garanti eder.

“This time is about changes in eigenvalues and changes in singular values when A change.” — Strang, 1:01

Aşağıdaki kavram haritası dersin merkezini (A(t) türevleri) ana fikirlere bağlar: tersin türevi, 1×1 sağlama, günün yıldızı özdeğer türevi, üç gerçek ve sonlu rank-1 değişimden interlacing zincirine, Cauchy alt-matrisine ve büyük itme gizemine uzanan dallar (Şekil 16.1).

flowchart TD
    M["A(t) türevleri"] --> INV["tersin türevi: d(A^-1)/dt = -A^-1 (dA/dt) A^-1"]
    M --> CHK["1x1 sağlama: d(1/t)/dt = -1/t^2"]
    M --> EIG["özdeğer türevi (günün yıldızı): dlambda/dt = y^T (dA/dt) x"]
    M --> FACT["üç gerçek: Ax = lambda x; y^T A = lambda y^T; y^T x = 1"]
    M --> RANK1["sonlu rank-1: S + uu^T -> özdeğerler yukarı"]

    INTL["interlacing: lambda1 >= gamma1 >= lambda2 >= ... (dişli)"]
    CAUCHY["Cauchy alt-matris interlacing"]
    PUSH["büyük itme gizemi: u = özvektör"]

    style M fill:#1f4e79,color:#fff,stroke:#13243a,stroke-width:2px
    style INTL fill:#1f4e79,color:#fff,stroke:#13243a,stroke-width:2px
    style CAUCHY fill:#1f4e79,color:#fff,stroke:#13243a,stroke-width:2px
    style PUSH fill:#1f4e79,color:#fff,stroke:#13243a,stroke-width:2px
    style INV fill:#2e75b6,color:#fff,stroke:#13243a,stroke-width:2px
    style CHK fill:#2e75b6,color:#fff,stroke:#13243a,stroke-width:2px
    style EIG fill:#2e75b6,color:#fff,stroke:#13243a,stroke-width:2px
    style FACT fill:#6fa8dc,color:#13243a,stroke:#1f4e79,stroke-width:2px
    style RANK1 fill:#6fa8dc,color:#13243a,stroke:#1f4e79,stroke-width:2px
Şekil 16.1: Ders 15 kavram haritası: A(t) türevleri merkezinden ana fikirlere dallar — tersin türevi d(A⁻¹)/dt = −A⁻¹ (dA/dt) A⁻¹, bunun 1×1 sağlaması lise kalkülüsünden d(1/t)/dt = −1/t², günün yıldızı özdeğer türevi dλ/dt = yᵀ (dA/dt) x üç gerçeğe dayanır (Ax = λx; yᵀA = λyᵀ; yᵀx = 1) ve sonlu rank-1 değişim S + uuᵀ özdeğerleri yukarı iter; ayrı düğümler dişli gibi içiçe geçen interlacing zinciri λ₁ ≥ γ₁ ≥ λ₂ ≥ ⋯, alt-matrise inen Cauchy interlacing ve u tam özvektörse yalnız onun özdeğerinin fırladığı büyük itme gizemini gösterir.
İpucuBuilder Notu — Hareket Eden Matrisin Kalkülüsü
  • Perturbasyon teorisi: “A biraz değişirse λ ne kadar değişir?” sorusu ML’de her yerde — eğitim sırasında Hessian özdeğerleri, PCA’da veri güncellemesi, kararlılık analizi.
  • dλ/dt = yᵀ(dA/dt)x — backprop’un (Ders 27) özdeğer versiyonu: bir çıktının (λ) bir girdiye (A) duyarlılığı; çarpım kuralı + iptal.
  • Interlacing — rank-1 güncelleme özdeğerleri “kontrollü” oynatır; öneri sistemleri, online PCA, grafik Laplacian spektrumu (Ders 19, 35) buna dayanır.
  • Geriye köprü: Ders 14 (tersin değişimi), Ders 4 (özdeğer/özvektör), Calculus (türev = limit, çarpım kuralı).

Tek cümle: Matris t ile değişirken tersi, özdeğerleri ve tekil değerleri de değişir; sonsuz-küçük değişim için temiz türev formülleri (dλ/dt = yᵀ(dA/dt)x), sonlu değişim için ise interlacing eşitsizlikleri vardır.

16.2 Büyük Resim: Matrisler Hareket Eder

Matrisler sabit durmaz — bir t parametresine (zaman, adım, ayar) bağlı olabilirler: A(t). Matris hareket edince tersi, özdeğerleri ve tekil değerleri de hareket eder. Bu dersin sorusu: nasıl?

“This time is about changes in eigenvalues and changes in singular values when A change.” — Strang, 1:01

İki paralel soru var. Biri sonsuz-küçük değişim (dA → türev, kalkülüs); diğeri sonlu değişim (gerçek bir vektör eklemek, rank-1).

“What is the derivative when the change is infinitesimal?” — Strang, 2:37

Türev tarafında kesin formüller elde edeceğiz. Sonlu tarafta özdeğerler için kesin formül yok — ama güçlü eşitsizlikler (interlacing) var.

İpucuBuilder Notu — İki Rejim Tek Soru

“Sonsuz-küçük (türev) vs sonlu (gerçek adım)” ayrımı optimizasyonun kalbi: gradient descent sonsuz-küçük yön (gradyan) hesaplar ama sonlu adım atar (learning rate). Bu dersin iki yarısı, tam bu iki rejimin lineer cebir karşılığıdır.

16.3 Tersin Türevi: d(A⁻¹)/dt

Ders 14 tersin sonlu değişimini verdi; şimdi sonsuz-küçük halini tamamlıyoruz. İşaret noktası bir özdeşlik:

“So here’s a handy identity.” — Strang, 5:43

\[B^{-1} - A^{-1} = B^{-1}(A - B)A^{-1}\]

Doğrula: B⁻¹(A − B)A⁻¹ = B⁻¹AA⁻¹ − B⁻¹BA⁻¹ = B⁻¹ − A⁻¹. ✓ Şimdi B = A + ΔA al, yani A − B = −ΔA. Her iki tarafı Δt’ye böl ve Δt → 0 limitini al (kalkülüs): ΔA/Δt → dA/dt, B → A. Sonuç:

\[\frac{d(A^{-1})}{dt} = -A^{-1}\,\frac{dA}{dt}\,A^{-1}\]

Eksi işaret kritik; iki tarafta da A⁻¹ var. Bu, herkesin bilmesi gereken temiz bir formül.

Aşağıdaki figür formülü sayısal olarak doğrular: kapalı-form sandviç −A⁻¹(dA/dt)A⁻¹ ile merkez-fark sayısal türevi birebir örtüşür; aradaki fark yalnızca yuvarlama gürültüsüdür (maxdiff ≈ 4×10⁻¹¹, Şekil 16.2).

Kod
t0 = 0.3
F = dinv_formula(nonsym_path(t0), nonsym_path_deriv(t0))
N = dinv_numeric(nonsym_path, t0)

fig, axs = plt.subplots(1, 3, figsize=(10, 3.2))
heatmap(axs[0], F, "formul: -A^-1 (dA/dt) A^-1")
heatmap(axs[1], N, "sayisal: merkez fark")
heatmap(axs[2], F - N, "fark ~ 1e-11", fmt="{:.0e}")
fig.suptitle("Tersin turevi: d(A^-1)/dt = -A^-1 (dA/dt) A^-1 — formul ile sayisal turev birebir (maxdiff ~ 4e-11)",
             color=COL_TEXT, fontsize=11, fontweight="bold")
fig.tight_layout(rect=[0, 0, 1, 0.94])

plt.show()
Şekil 16.2: Tersin türevi \(\frac{d(A^{-1})}{dt} = -A^{-1}\,\frac{dA}{dt}\,A^{-1}\): soldaki kapalı-form sandviç ile ortadaki merkez-fark sayısal türevi aynı matrisi verir; sağdaki fark paneli yalnızca yuvarlama gürültüsü taşır (maxdiff \(\approx 4 \times 10^{-11}\)). Burada \(A(t) = P\,\mathrm{diag}(5+\sin t,\, 2+t^{2},\, -1+0.5t)\,P^{-1}\) ailesi \(t_{0} = 0.3\) noktasında değerlendirilmiştir.
İpucuBuilder Notu — SMW’nin Türev Kardeşi

d(A⁻¹)/dt = −A⁻¹(dA/dt)A⁻¹ formülü Ders 14’ün SMW’sinin sonsuz-küçük kardeşidir: SMW sonlu rank-k değişimi, bu ise türev. ML’de Newton yöntemi ve ikinci-derece optimizasyonda Hessian’ın tersi sürekli güncellenir — bu türev o güncellemenin teorik temeli.

16.4 1×1 Sağlaması: Lise Kalkülüsü

Formülün doğru olduğunu görmenin en hızlı yolu: A’yı 1×1 al, yani sadece bir sayı t. O zaman A⁻¹ = 1/t ve formül d(1/t)/dt olmalı:

“If A is just t, then the derivative of 1 over t with respect to t is minus 1 over t squared.” — Strang, 12:00

\[\frac{d}{dt}\left(\frac{1}{t}\right) = -\frac{1}{t^{2}}\]

Matris formülüyle karşılaştır: −A⁻¹(dA/dt)A⁻¹ → 1×1’de −(1/t)(1)(1/t) = −1/t². Birebir aynı. Kalkülüsün 1×1 hâlini biliyorduk; ders bunu n×n’e taşıdı.

Aşağıdaki figür sağlamayı görselleştirir: 1×1 matris formülünün altı noktadaki değeri (teal), lise kalkülüsünün −1/t² eğrisinin (turuncu) tam üstüne oturur (Şekil 16.3).

Kod
fig, ax = plt.subplots(figsize=(7, 4.2))
ts = np.linspace(0.5, 3, 60)
ax.plot(ts, 1/ts, color=COL_PRIMARY, lw=2, label="A^-1 = 1/t")
ax.plot(ts, -1/ts**2, color=COL_VEC3, lw=2, label="d(1/t)/dt = -1/t^2")
tpts = np.linspace(0.6, 2.8, 6)
vals = [dinv_formula(np.array([[t]]), np.array([[1.0]]))[0, 0] for t in tpts]
ax.scatter(tpts, vals, color=COL_TEAL, s=55, zorder=5, label="matris formulu (1x1)")
apply_style(ax)
ax.legend()
ax.set_xlabel("t")
ax.set_title("1x1 saglama: matris formulu -A^-1(dA/dt)A^-1\nlise kalkulusu d(1/t)/dt = -1/t^2 ile birebir",
             color=COL_TEXT, fontsize=11, fontweight="bold")
plt.show()
Şekil 16.3: 1×1 sağlama: matris formülü −A⁻¹(dA/dt)A⁻¹ ile lise kalkülüsünün d(1/t)/dt = −1/t² türevi birebir örtüşür. Teal noktalar (matris formülü) turuncu eğrinin tam üstüne oturur.
İpucuBuilder Notu — Skalere İndir Hatayı Yakala

“Formülü 1×1’e indir, bildiğin lise sonucuyla karşılaştır” Strang’ın tekrar tekrar kullandığı sağlama tekniği (Ders 14’te de vᵀu skaleriyle yaptı). Bir matris formülünden emin değilsen, skaler hâline indirgemek en hızlı hata yakalama yöntemidir — kod testinde de aynı: en küçük boyutta doğrula.

16.5 Özdeğer Türevine Hazırlık: Üç Gerçek

Asıl yıldız: özdeğer A ile değişirken dλ/dt nedir? Önce üç bilineni topla. (1) Sağ özvektör denklemi, hepsi t’ye bağlı:

\[A(t)\,x(t) = \lambda(t)\,x(t)\]

  1. Aᵀ’nin özdeğerleri A ile aynıdır ama özvektörleri farklı. Aᵀ’nin özvektörünü y (satır vektör) yazıp denklemi sol-özvektör biçiminde tut:

\[y^{T}(t)\,A(t) = \lambda(t)\,y^{T}(t)\]

  1. Bir normalizasyon gerek — sağ ve sol özvektörü birbirine kenetle:

\[y^{T}(t)\,x(t) = 1\]

Simetrik durumda y = x = q (birim özvektör); o zaman yᵀx = 1, qᵀq = 1 demek. Bu üç gerçek tüm türetimin malzemesi.

İpucuBuilder Notu — Sağ ve Sol Kenetlenir

Sağ özvektör (x) ve sol özvektör (y) ayrımı simetrik-olmayan matrislerde kritik: A ≠ Aᵀ olduğunda iki ayrı özvektör ailesi vardır, ama özdeğerler ortaktır (Ders 4). yᵀx = 1 normalizasyonu, birazdan iki terimin “1’in türevi = 0” diye iptal olmasını sağlayacak — formülün zarafetinin tohumu burada.

16.6 Formül 1: λ = yᵀAx

Ax = λx denklemini soldan yᵀ ile çarp: yᵀAx = λ yᵀx. Ama yᵀx = 1 (normalizasyon), yani:

\[\lambda(t) = y^{T}(t)\,A(t)\,x(t)\]

Özdeğeri, üç t-bağımlı parçanın çarpımı olarak yazdık. Bu, Ders 4’ün λ = x⁻¹Ax köşegenleştirmesinin sol-sağ özvektör versiyonu. Artık türevini almaya hazırız.

İpucuBuilder Notu — Sandviç Yaz Türev Al

λ = yᵀAx bir “Rayleigh-tipi” ifadedir (Ders 19’da Rayleigh bölümü tam bunu genelleyecek). Bir skaleri (λ) vektör-matris-vektör sandviçi olarak yazmak, türevini almayı kolaylaştırır — çünkü çarpım kuralı uygulanabilir hâle gelir.

16.7 dλ/dt = yᵀ(dA/dt)x — İptalin Zarafeti

Şimdi λ = yᵀAx’in türevini al. Üç t-bağımlı çarpan var:

“…That’ll be the formula for the derivative of an eigenvalue.” — Strang, 21:38

“So I’m going to use the product rule.” — Strang, 22:56

\[\frac{d\lambda}{dt} = \frac{dy^{T}}{dt}Ax + y^{T}\frac{dA}{dt}x + y^{T}A\frac{dx}{dt}\]

Orta terim cevabımız. Diğer ikisi sıfıra gider: Ax = λx ve yᵀA = λyᵀ kullan, λ skalerini dışarı çek:

\[\frac{dy^{T}}{dt}Ax + y^{T}A\frac{dx}{dt} = \lambda\left(\frac{dy^{T}}{dt}x + y^{T}\frac{dx}{dt}\right) = \lambda\,\frac{d(y^{T}x)}{dt}\]

Parantez içi tam olarak yᵀx çarpımının türevi. Ama yᵀx = 1 (sabit), türevi 0:

“The derivative of the y transpose x.” — Strang, 28:34

Geriye sade ve güçlü formül kalır:

\[\frac{d\lambda}{dt} = y^{T}\,\frac{dA}{dt}\,x\]

“The derivative of the eigenvalue is this formula. It’s the rate at which the matrix is changing times the eigenvectors on right and left.” — Strang, 29:04

Dikkat: formül özvektörün türevini (dx/dt) içermez — sadece matrisin değişim hızını ve mevcut özvektörleri ister. İşte güzelliği bu.

Aşağıdaki flagship figür formülün görsel kanıtını verir: solda S(t) ailesinin üç özdeğer eğrisi, t₀=0.2’de formülün verdiği eğimle çizilen teğetlere birebir yapışır; sağda formül yᵀ(dA/dt)x ile sayısal merkez fark karşılaştırması y=x doğrusunda oturur (Şekil 16.4).

Kod
ts = np.linspace(-1, 1, 81)
curves = sym_eig_curves(ts)
t0 = 0.2
dl = dlam_formula(sym_path(t0), sym_path_deriv(t0))[1]
lam0 = np.sort(np.linalg.eigvalsh(sym_path(t0)))[::-1]

fig, axs = plt.subplots(1, 2, figsize=(10, 4))

cols = [COL_PRIMARY, COL_ACCENT, COL_VEC3]
labels = ["lambda_1(t)", "lambda_2(t)", "lambda_3(t)"]
for i in range(3):
    axs[0].plot(ts, curves[:, i], color=cols[i], linewidth=2.2, label=labels[i], zorder=2)
    axs[0].scatter([t0], [lam0[i]], color="black", s=45, zorder=4)
    tt = np.array([t0 - 0.35, t0 + 0.35])
    yy = lam0[i] + dl[i] * (tt - t0)
    axs[0].plot(tt, yy, "--", color=COL_TEXT, linewidth=1.6, zorder=3)
axs[0].axvline(t0, color=COL_STEEL_300, linewidth=0.9, linestyle=":", zorder=1)
axs[0].set_xlabel("t")
axs[0].set_ylabel("ozdegerler lambda(t)")
axs[0].set_title("ozdeger egrileri + formul tegetleri", color=COL_TEXT, fontsize=11, fontweight="bold")
axs[0].legend(loc="upper left", fontsize=8, framealpha=0.9)
apply_style(axs[0])

dn = dlam_numeric(sym_path, t0)
axs[1].scatter(dl, dn, color=COL_PRIMARY, s=70, zorder=3)
lo = min(dl.min(), dn.min()); hi = max(dl.max(), dn.max())
pad = 0.12 * (hi - lo + 1e-9)
ref = np.array([lo - pad, hi + pad])
axs[1].plot(ref, ref, "--", color=COL_STEEL_300, linewidth=1.4, label="y = x", zorder=1)
axs[1].set_xlabel("formul: y^T (dA/dt) x")
axs[1].set_ylabel("sayisal merkez fark")
axs[1].set_title("formul = sayisal turev", color=COL_TEXT, fontsize=11, fontweight="bold")
axs[1].legend(loc="upper left", fontsize=8, framealpha=0.9)
apply_style(axs[1])

fig.suptitle("Gunun yildizi dlambda/dt = y^T (dA/dt) x: tegetler ozdeger egrilerine yapisir; formul = sayisal turev",
             color=COL_TEXT, fontsize=11, fontweight="bold")
fig.tight_layout(rect=[0, 0, 1, 0.95])
plt.show()
Şekil 16.4: Günün yıldızı dλ/dt = yᵀ(dA/dt)x görsel kanıtı. Sol: S(t) simetrik ailesinin üç özdeğer eğrisi λᵢ(t); t₀=0.2’de formülün verdiği eğimle çizilen teğet doğru parçaları (kesik) eğrilere birebir yapışır. Sağ: aynı noktada formül yᵀ(dA/dt)x ile sayısal merkez fark karşılaştırması — noktalar y=x doğrusunda oturur (formül = sayısal türev).
İpucuBuilder Notu — Tasarımla Gelen İptal

İki terimin “1’in türevi = 0” diye yok olması, normalizasyon yᵀx = 1 seçiminin meyvesi — tasarım gereği iptal. ML köprüsü: bu formül perturbasyon teorisinin birinci-derece sonucu; bir özdeğerin (örn. Hessian’ın en büyük özdeğeri = en dik yön) parametre değişimine duyarlılığını dx/dt hesaplamadan verir. Tam da backprop’un (Ders 27) “çıktının girdiye duyarlılığı” mantığı.

16.8 Sonlu Rank-1 Değişim: Özdeğerler Yukarı

Şimdi türevi bırak, gerçek bir değişime geç: simetrik S’ye rank-1 simetrik bir parça ekle, S + uuᵀ. Bu kalkülüs değil (değişim sonsuz-küçük değil), kesin formül de yok — ama bilinen güzel gerçekler var. Önce uuᵀ ne tür bir matris? Rank-1, simetrik ve pozitif yarı-tanımlı (tek sıfırdan farklı özdeğeri uᵀu > 0, özvektörü u). Yani S’ye “pozitif bir şey” ekliyoruz. Sonuç:

“They’ll be more positive. They’ll go up. This is a positive thing.” — Strang, 36:05

S’nin özdeğerlerine γ (gamma), S + uuᵀ’nin özdeğerlerine λ diyelim (ikisi de azalan sırada). Her λ karşılık gelen γ’dan büyük:

“Lambdas are bigger than gammas.” — Strang, 37:51

\[\lambda_{j} \geq \gamma_{j} \quad \text{(all } j)\]

Aşağıdaki figür bu akışı izler: S + c·uuᵀ’deki dört özdeğer de monoton yukarı akar, ama λ₂(c) eğrisi γ₁ = 4.38 yatayını asla geçemez — interlacing her eğriyi bir komşu γ bandına kilitler (Şekil 16.5).

Kod
S = np.array([[4., 1., 0., .5], [1., 1., 1., 0.], [0., 1., -2., 1.], [.5, 0., 1., 0.]])
u = np.array([1., -.5, .5, 1.])
cs = np.linspace(0, 3, 61)
flow = eig_flow(S, u, cs)
gam = np.sort(np.linalg.eigvalsh(S))[::-1]

fig, ax = plt.subplots(figsize=(7.5, 4.5))
apply_style(ax)

flow_cols = [COL_PRIMARY, COL_ACCENT, COL_TEAL, COL_VEC3]
flow_labels = [r"$\lambda_1(c)$", r"$\lambda_2(c)$", r"$\lambda_3(c)$", r"$\lambda_4(c)$"]
for i in range(4):
    ax.plot(cs, flow[:, i], color=flow_cols[i], lw=2, label=flow_labels[i], zorder=3)

# gam yatay kesik çizgiler
for j, g in enumerate(gam):
    ax.axhline(g, color=COL_STEEL_300, ls="--", lw=1.0, zorder=1,
               label="γ (S özdeğerleri)" if j == 0 else None)

# gamma_1 = 4.381 vurgulu kesik çizgi
ax.axhline(gam[0], color=COL_VEC3, ls="--", lw=1.6, alpha=0.9, zorder=2,
           label="γ₁ = 4.38 (üst sınır)")

ax.set_xlabel("c  (S + c uuᵀ)")
ax.set_ylabel("özdeğerler")
ax.set_title("Rank-1 pozitif ekleme: özdeğerler yukarı akar ama λ₂\n"
             "asla γ₁ = 4.38 i geçmez (interlacing)",
             fontsize=11, fontweight="bold")
ax.legend(loc="center right", fontsize=8, framealpha=0.9)
ax.set_xlim(0, 3)

plt.show()
Şekil 16.5: Rank-1 pozitif ekleme S + c·uuᵀ: dört özdeğer de monoton yukarı akar, ama λ₂(c) asla γ₁ = 4.38 yatayını geçemez. İnterlacing eşitsizliği λ₁ ≥ γ₁ ≥ λ₂ ≥ γ₂ ≥ ⋯ her c için her eğriyi bir komşu γ bandına kilitler (λ₂ maksimumu 2.36 < γ₁ = 4.38).
İpucuBuilder Notu — Pozitif Ekleme Yukarı İter

Pozitif yarı-tanımlı bir parça eklemek özdeğerleri asla düşürmez — “17 eklemek gibi, yukarı taşır” (Strang). ML köprüsü: ridge regülarizasyonu (Ders 10) tam bunu yapar — AᵀA + λI, yani I yönünde pozitif ekleme, tüm özdeğerleri λ kadar yukarı kaydırıp matrisi iyi-koşullu kılar.

16.9 Interlacing (İçiçe Geçme) Teoremi

Özdeğerler yukarı gider — ama ne kadar? Sürpriz: kontrollü. Yeni λ₂, eski γ₁’i geçemez. Tam ifade:

\[\lambda_{1} \geq \gamma_{1} \geq \lambda_{2} \geq \gamma_{2} \geq \lambda_{3} \geq \cdots\]

“And that’s called interlacing.” — Strang, 39:13

Yani rank-1 pozitif değişimde her özdeğer yukarı çıkar, ama yeni değerler eski değerlerin arasına “dişli gibi” geçer — λ₂ eski birinci özdeğeri (γ₁) aşamaz, λ₃ ikinciyi (γ₂) aşamaz. Kalbi mutlu eden teoremlerden.

Aşağıdaki figürün sol paneli bu dişli yerleşimi sayı doğrusu üzerinde gösterir: yeni özdeğerler λ = 5.66, 1.59, 0.87, −2.62 (üst sıra) eski γ = 4.38, 1.03, 0.27, −2.68 (alt sıra) değerlerinin tam aralarına oturur (Şekil 16.6).

Kod
S = np.array([[4., 1., 0., .5], [1., 1., 1., 0.], [0., 1., -2., 1.], [.5, 0., 1., 0.]])
u = np.array([1., -.5, .5, 1.])
lam, gam = rank1_eigs(S, u, c=1.0)
lc, mc = cauchy_eigs(S)

fig, axs = plt.subplots(1, 2, figsize=(10, 3.6))

# --- Sol: rank-1 ekleme (S + uuᵀ) dişli yerleşim ---
ax = axs[0]
apply_style(ax)
ax.scatter(gam, np.zeros_like(gam), s=90, marker="s", color=COL_ACCENT, zorder=3, label="γ (S)")
ax.scatter(lam, np.ones_like(lam), s=90, marker="o", color=COL_PRIMARY, zorder=3, label="λ (S+uuᵀ)")
for lv, gv in zip(lam, gam):
    ax.plot([lv, gv], [1, 0], color=COL_STEEL_300, linestyle="--", linewidth=0.8, zorder=1)
for v in gam:
    ax.annotate(f"{v:.2f}", (v, 0), textcoords="offset points", xytext=(0, -12),
                ha="center", fontsize=8, color=COL_TEXT)
for v in lam:
    ax.annotate(f"{v:.2f}", (v, 1), textcoords="offset points", xytext=(0, 9),
                ha="center", fontsize=8, color=COL_TEXT)
ax.set_ylim(-0.5, 1.5)
ax.set_yticks([0, 1])
ax.set_yticklabels(["γ (S)", "λ (S+uuᵀ)"])
ax.set_title("rank-1 ekleme: dişli gibi içiçe", color=COL_TEXT, fontsize=11, fontweight="bold")

# --- Sağ: Cauchy alt-matris (son satır + sütun at) ---
ax = axs[1]
apply_style(ax)
ax.scatter(lc, np.ones_like(lc), s=90, marker="o", color=COL_PRIMARY, zorder=3, label="λ (S)")
ax.scatter(mc, np.zeros_like(mc), s=90, marker="s", color=COL_ACCENT, zorder=3, label="μ (alt-matris)")
for j, mv in enumerate(mc):
    ax.plot([mv, lc[j]], [0, 1], color=COL_STEEL_300, linestyle="--", linewidth=0.8, zorder=1)
    ax.plot([mv, lc[j + 1]], [0, 1], color=COL_STEEL_300, linestyle="--", linewidth=0.8, zorder=1)
for v in mc:
    ax.annotate(f"{v:.2f}", (v, 0), textcoords="offset points", xytext=(0, -12),
                ha="center", fontsize=8, color=COL_TEXT)
for v in lc:
    ax.annotate(f"{v:.2f}", (v, 1), textcoords="offset points", xytext=(0, 9),
                ha="center", fontsize=8, color=COL_TEXT)
ax.set_ylim(-0.5, 1.5)
ax.set_yticks([0, 1])
ax.set_yticklabels(["μ (alt-matris)", "λ (S)"])
ax.set_title("alt-matris (son satır+sütun at): Cauchy", color=COL_TEXT, fontsize=11, fontweight="bold")

fig.suptitle("İnterlacing iki yüzü: rank-1 ekleme (sol) ve alt-matris (sağ) — dişli yerleşim",
             color=COL_TEXT, fontsize=12, fontweight="bold")
fig.tight_layout(rect=(0, 0, 1, 0.95))
plt.show()
Şekil 16.6: İnterlacing’in iki yüzü. Sol: rank-1 ekleme S + uuᵀ — yeni özdeğerler λ = 5.66, 1.59, 0.87, −2.62 (üst sıra, navy yuvarlak) eski γ = 4.38, 1.03, 0.27, −2.68 (alt sıra, çelik kare) değerlerinin arasına dişli gibi oturur (λ₁ ≥ γ₁ ≥ λ₂ ≥ γ₂ ≥ ⋯). Sağ: son satır + sütun atılarak küçültülen 3×3 alt-matrisin Cauchy özdeğerleri μ = 4.32, 1.00, −2.32 (alt sıra) tam tam ardışık λ’ların arasında kalır (λ₁ ≥ μ₁ ≥ λ₂ ≥ μ₂ ≥ λ₃ ≥ μ₃ ≥ λ₄). İki teorem de aynı dişli yerleşimin örnekleri.
İpucuBuilder Notu — Dişli Gibi İçiçe

Interlacing, online/artımlı PCA’nın garantisidir: yeni bir veri noktası (rank-1 güncelleme) ana bileşenleri yukarı oynatır ama sıralamayı çığırından çıkarmaz — birinci bileşen yine birinci kalır, sadece komşu sınırlar içinde kayar. Bu, spektral kümeleme (Ders 35) ve graf Laplacian özdeğer analizinde de (Ders 19) temel araçtır.

16.10 Rank-2 ve Alt-matris: Aynı Tema

İki uzantı. (1) Rank-2 değişim S + uuᵀ + wwᵀ: özdeğerler (α diyelim) daha çok yukarı çıkabilir — α₂ artık λ₁’i geçebilir, ama α₃ eski γ₁’i hâlâ geçemez. Genel kural: rank-r değişim, interlacing’i r adım “gevşetir”.

“Let me give you another example of interlacing.” — Strang, 45:50

  1. Alt-matris interlacing (Cauchy): n×n simetrik S’den son satır+sütunu at, (n−1)×(n−1) matris S_{n−1} kalsın. Özdeğerleri interlace eder:

\[\lambda_{1} \geq \mu_{1} \geq \lambda_{2} \geq \mu_{2} \geq \cdots \geq \mu_{n-1} \geq \lambda_{n}\]

Sebep aynı: bir satır+sütun atmak xₙ = 0 kısıtı koymak demek — bir serbestlik derecesi azalır, özdeğerler düşer ama interlace ederek. Yukarıdaki figürün sağ paneli tam bunu gösterir: 3×3 alt-matrisin μ özdeğerleri ardışık λ değerlerinin arasında kalır (Şekil 16.6).

İpucuBuilder Notu — Kısıt Ekle Serbestlik Azalt

Alt-matris interlacing, özellik seçimi (feature selection) ve graf budamada (pruning) işe yarar: bir düğüm/özellik atıldığında spektrum nasıl değişir önceden sınırlanır. “Bir kısıt eklemek = bir serbestlik derecesi azaltmak” enerji görüşü (Ders 5’in xᵀSx kâsesi) buraya doğrudan bağlanır.

16.11 Son Gizem: Bir Özvektör Yönünde Büyük İtme

Strang dersi bir bilmeceyle bitirir. Diyelim u tam olarak S’nin ikinci özvektörü, yani Su = γ₂u. Şimdi büyük bir itme yap: S + 20uuᵀ.

“…suppose it’s actually the second eigenvector of S.” — Strang, 48:06

O zaman (S + 20uuᵀ)u = γ₂u + 20u = (γ₂ + 20)u. Yani bu özvektörün özdeğeri γ₂’den γ₂ + 20’ye fırladı — çok yukarı. Görünüşte interlacing’i bozuyor (λ₂, γ₁’i geçmiş gibi). Strang bunu bilerek açık bırakır: çelişki gerçek mi, yoksa özdeğerlerin yeniden etiketlenmesi (γ₂+20 artık yeni λ₁ olabilir) bunu kurtarır mı? Cevap sonraki derste.

Aşağıdaki flagship figür gizemi canlandırır: u tam ikinci özvektör olunca dört özdeğerden sadece biri (γ₂+c) doğrusal fırlar, diğer üçü (γ₁=4.381, γ₃=0.270, γ₄=−2.678) hiç kıpırdamadan sabit kalır; fırlayan değer c≈3.35’te γ₁’i kesip λ₁ etiketini kapar (Şekil 16.7).

Kod
# S = Ders 15 demo (4×4 simetrik)
S = np.array([[4.0, 1.0, 0.0, 0.5],
              [1.0, 1.0, 1.0, 0.0],
              [0.0, 1.0, -2.0, 1.0],
              [0.5, 0.0, 1.0, 0.0]])

gam, Q = np.linalg.eigh(S)
gam = gam[::-1]; Q = Q[:, ::-1]   # azalan sıra
u2 = Q[:, 1]                      # tam ikinci özvektör
cs = np.linspace(0, 25, 101)
flow = eig_flow(S, u2, cs)

gamma1 = gam[0]
gamma2 = gam[1]
soaring = gamma2 + cs             # tam özvektör → SADECE bu fırlar (γ₂+c)
others = [gam[0], gam[2], gam[3]] # diğer 3 özdeğer SABİT
const_cols = [COL_PRIMARY, COL_VEC2, COL_TEAL]

fig, ax = plt.subplots(figsize=(7.5, 4.5))

for val, col in zip(others, const_cols):
    ax.plot(cs, np.full_like(cs, val), color=col, lw=2.0,
            label="sabit: %.3f" % val)

ax.plot(cs, soaring, color=COL_VEC3, lw=2.5, label="firlayan: gamma_2 + c")

# γ₁ yatay kesik çizgi (referans)
ax.axhline(gamma1, color=COL_TEXT, ls="--", lw=1.0, alpha=0.55)

# fırlayan eğrinin γ₁'i kestiği c
c_cross = gamma1 - gamma2
ax.axvline(c_cross, color=COL_TEXT, ls=":", lw=0.9, alpha=0.6)

ax.annotate("etiket takasi: gamma_2+c artik lambda_1",
            xy=(c_cross, gamma1), xytext=(c_cross + 3.5, gamma1 + 6.0),
            fontsize=8.5, color=COL_TEXT,
            arrowprops=dict(arrowstyle="->", color=COL_TEXT, lw=1.0))

apply_style(ax)
ax.set_xlabel("c (S + c uu^T, u = ikinci ozvektor)")
ax.set_ylabel("ozdegerler")
ax.set_title("Buyuk itme gizemi: u tam ozvektorse SADECE onun ozdegeri firlar,\n"
             "digerleri sabit — interlacing yeniden-etiketlemeyle kurtulur",
             color=COL_TEXT, fontsize=10.5, fontweight="bold")
ax.legend(loc="upper left", fontsize=8.5, framealpha=0.92)

plt.show()
Şekil 16.7: Büyük itme gizemi (son gizem). u = S’nin ikinci özvektörü alınıp \(S + c\,uu^{T}\) kurulduğunda, dört özdeğerden SADECE birinin değeri (\(\gamma_{2} + c\)) doğrusal fırlar; diğer üçü (\(\gamma_{1}=4.381\), \(\gamma_{3}=0.270\), \(\gamma_{4}=-2.678\)) hiç kıpırdamadan SABİT kalır. c = 20’de yeni spektrum \([21.028,\ 4.381,\ 0.270,\ -2.678]\) olur: fırlayan değer \(\gamma_{2}+20 = 21.028\) başa geçip \(\lambda_{1}\) etiketini kapar. Fırlayan eğri \(\gamma_{1}=4.381\) yatayını \(c \approx 3.35\)’te keser; tam o noktada etiket takası olur ama interlacing zinciri yeniden-etiketlemeyle korunur.
İpucuBuilder Notu — Sıra Korunur Kimlik Değil

Bu “paradoks” aslında interlacing’in inceliğini öğretir: özdeğerler büyük itmede yer değiştirir (rütbe atlar), ama sıralı eşitsizlik etiketleri buna göre kayar — kimlik değil, sıra korunur. Açık-uçlu bitirmek Strang’ın Sokratik yöntemi: cevabı vermeden önce kafanı karıştırıp düşündürür.

16.12 Bu Dersin Özeti

  • Tersin türevi: d(A⁻¹)/dt = −A⁻¹(dA/dt)A⁻¹; 1×1’de d(1/t)/dt = −1/t². Ders 14’ün sonsuz-küçük tamamlaması.
  • Üç gerçek: Ax = λx (sağ özvektör), yᵀA = λyᵀ (sol özvektör), yᵀx = 1 (normalizasyon).
  • Formül 1: λ = yᵀAx (Ax’i soldan yᵀ ile vur).
  • Özdeğer türevi (yıldız): dλ/dt = yᵀ(dA/dt)x. Çarpım kuralı + iki terim “1’in türevi = 0” diye iptal. Özvektör türevi içermez.
  • Sonlu rank-1 değişim: S + uuᵀ (pozitif yarı-tanımlı) özdeğerleri yukarı iter; λⱼ ≥ γⱼ.
  • Interlacing: λ₁ ≥ γ₁ ≥ λ₂ ≥ γ₂ ≥ ⋯; yeni özdeğerler eskilerin arasına geçer. Rank-r değişim r adım gevşetir; alt-matris (Cauchy) interlacing’i de aynı.
  • Açık gizem: u = ikinci özvektör + büyük itme → özdeğer fırlar; çelişki mi? (Sonraki ders.)
ÖnemliTek Bir Cümle

Matris t ile değişirken özdeğerin türevi dλ/dt = yᵀ(dA/dt)x’tir (sade, özvektör türevi gerektirmez); sonlu rank-1 değişimde ise kesin formül yerine interlacing eşitsizlikleri özdeğerlerin nasıl kayacağını sınırlar.

16.13 Kontrol Soruları

d(A⁻¹)/dt = −A⁻¹(dA/dt)A⁻¹ formülünü 1×1 durumda hangi lise sonucuna indirgersin?

Cevap: A’yı 1×1 al, yani bir sayı t. A⁻¹ = 1/t, dA/dt = 1. Formül −(1/t)(1)(1/t) = −1/t² verir — bu tam olarak d(1/t)/dt = −1/t², lise kalkülüsünden bilinen sonuç. Matris formülünü skalere indirip bilinenle karşılaştırmak en hızlı sağlamadır.

dλ/dt = yᵀ(dA/dt)x türetiminde çarpım kuralının iki terimi neden sıfır olur?

Cevap: λ = yᵀAx’in türevinde üç terim çıkar; baş ve son terim (dyᵀ/dt)Ax + yᵀA(dx/dt). Ax = λx ve yᵀA = λyᵀ kullanıp λ skalerini dışarı çekince λ·((dyᵀ/dt)x + yᵀ(dx/dt)) = λ·d(yᵀx)/dt olur. Ama yᵀx = 1 sabit, türevi 0. Dolayısıyla bu iki terim yok olur, geriye sadece orta terim yᵀ(dA/dt)x kalır.

S simetrik, u bir vektör. S + uuᵀ’nin özdeğerleri S’ninkilere göre nasıl konumlanır?

Cevap: uuᵀ pozitif yarı-tanımlı (tek özdeğeri uᵀu > 0) olduğundan tüm özdeğerler yukarı gider: λⱼ ≥ γⱼ. Ama keyfî değil — interlacing geçerli: λ₁ ≥ γ₁ ≥ λ₂ ≥ γ₂ ≥ ⋯. Yani her yeni özdeğer eski karşılığından büyüktür, fakat bir sonraki eski özdeğeri aşamaz.

Simetrik n×n matristen son satır+sütunu atınca özdeğerler nasıl davranır?

Cevap: Cauchy interlacing: (n−1)×(n−1) alt-matrisin özdeğerleri μ, orijinalin özdeğerleri λ ile içiçe geçer: λ₁ ≥ μ₁ ≥ λ₂ ≥ μ₂ ≥ ⋯ ≥ λₙ. Sebep: bir satır+sütun atmak xₙ = 0 kısıtı koymak, yani bir serbestlik derecesini kaldırmaktır; bu özdeğerleri düşürür ama interlace ederek (kontrollü).

16.14 Egzersizler

Cevapsız problemler. Çöz, sonra numpy ile kontrol et.

Egzersiz 1. Tersin türevi, somut. A(t) = [[t, 0], [0, t²]]. A⁻¹(t)’yi yaz, doğrudan türevini al. Sonra −A⁻¹(dA/dt)A⁻¹ formülüyle hesapla; aynı sonucu bulduğunu göster.

Egzersiz 2. Özdeğer türevi. A(t) = [[2, t], [t, 2]] simetrik. t = 0’da özdeğerler 2, 2. dA/dt = [[0,1],[1,0]]. t = 0’daki bir özvektör x = [1,1]ᵀ/√2 için dλ/dt = yᵀ(dA/dt)x’i hesapla (simetrik olduğundan y = x).

Egzersiz 3. İptali kanıtla. yᵀx = 1 yerine yᵀx = c (sabit) olsaydı, çarpım kuralının iki terimi yine sıfır olur muydu? Neden? (İpucu: d(c)/dt.)

Egzersiz 4. Interlacing testi. S = diag(3, 1) (özdeğerler γ = 3, 1). u = [1, 0]ᵀ. S + uuᵀ’nin özdeğerlerini bul (λ). λ₁ ≥ γ₁ ≥ λ₂ interlacing’ini doğrula.

Egzersiz 5. (Ders 16 habercisi) Bu derste özdeğer türevini bulduk: dλ/dt = yᵀ(dA/dt)x. Aynı fikri tekil değer için kurmaya çalış: σ değişirken dσ/dt ne olur? AᵀA ve tekil vektörler nasıl girer? Bir tahmin yaz — Ders 16 bunu (ve tersin/tekil değerlerin türevlerini) işliyor.

16.15 Sonraki Ders İçin Hazırlık

Ders 16: Ters ve Tekil Değerlerin Türevleri. Bu dersin özdeğer türevi formülünü (dλ/dt = yᵀ(dA/dt)x) tekil değerlere taşıyacağız: dσ/dt = uᵀ(dA/dt)v (sol/sağ tekil vektörler). Ayrıca interlacing’in tekil değer versiyonu ve perturbasyon sınırları gelir — PCA ve düşük-rank yaklaşımın kararlılığının teorik temeli.

UyarıDers 16 Öncesi Yapılacak
  • Bu dersin egzersizlerini çöz, özellikle Egzersiz 2’yi (özdeğer türevi) ve Egzersiz 4’ü (interlacing testi).
  • Python’da bir A(t) ailesi kur, dλ/dt = yᵀ(dA/dt)x formülünü sayısal merkez fark türeviyle karşılaştır.
  • Ana cümleyi tekrar oku: “Özdeğer türevi dλ/dt = yᵀ(dA/dt)x özvektör türevi gerektirmez; sonlu değişimde interlacing özdeğerleri sınırlar.”

16.16 Anahtar Kavramlar (Cheat Sheet)

Kavram Formül / Fikir Strang (dk)
Büyük resim A değişince ters, özdeğer, tekil değer değişir 1m01
Tersin türevi d(A⁻¹)/dt = −A⁻¹ (dA/dt) A⁻¹ 5m43
1×1 sağlama d(1/t)/dt = −1/t² 12m00
Üç gerçek Ax = λx; yᵀA = λyᵀ; yᵀx = 1 14m26
Formül 1 λ = yᵀAx 20m43
Özdeğer türevi dλ/dt = yᵀ (dA/dt) x 29m04
İptal iki terim = λ · d(yᵀx)/dt = λ · 0 28m34
Rank-1 değişim S + uuᵀ (psd) → özdeğerler ↑, λⱼ ≥ γⱼ 36m05
Interlacing λ₁ ≥ γ₁ ≥ λ₂ ≥ γ₂ ≥ ⋯ 39m13
Alt-matris (Cauchy) son satır+sütun at → özdeğerler interlace 45m50
Açık gizem u = 2. özvektör, S + 20uuᵀ → özdeğer fırlar 48m06

16.17 ML Bağlantıları Özeti

  1. Perturbasyon teorisi: dλ/dt = yᵀ(dA/dt)x — bir özdeğerin parametre değişimine birinci-derece duyarlılığı; Hessian’ın en büyük özdeğeri (en dik yön) eğitimde nasıl kayar sorusuna doğrudan cevap.
  2. İkinci-derece optimizasyon: d(A⁻¹)/dt = −A⁻¹(dA/dt)A⁻¹ — Newton yöntemi ve doğal gradyanın Hessian-tersi güncellemelerinin temeli.
  3. Online/artımlı PCA: rank-1 güncelleme + interlacing → ana bileşenler kontrollü kayar, sıralama bozulmaz.
  4. Regülarizasyon: S + λI (ridge) pozitif yarı-tanımlı ekleme → tüm özdeğerler yukarı, iyi-koşullu (Ders 10 bağı).
  5. Spektral yöntemler: graf Laplacian özdeğer analizi (Ders 19 maxmin, Ders 35 kümeleme) interlacing’e dayanır.
  6. Geriye köprü: Ders 14 (tersin sonlu değişimi → buradaki türev), Ders 4 (özdeğer/özvektör, sağ-sol ayrımı), Ders 5 (psd, enerji kâsesi), Calculus (türev = limit, çarpım kuralı).
ÖnemliTek Şey

“This time is about changes in eigenvalues and changes in singular values when A change.” — Strang, 1:01 — Matrisler hareket eder; bu ders onların özdeğerlerinin nasıl hareket ettiğini, hem sonsuz-küçük (türev) hem sonlu (interlacing) rejimde okumayı öğretir.