Determinantlar, Ters Matrisler ve Transpozlar
Matris determinantlarını np.linalg.det, ters matrisleri np.linalg.inv ve transpozları .T ile hesaplayın.
Determinantlar, Ters Matrisler ve Transpozlar, CoddyKit'te ücretsiz bir Pandas & NumPy Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Pandas & NumPy Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Pandas & NumPy Academy kursu toplamda 4 dersten oluşur.
Bir Matrisin Transpozu
Bir matrisin transpozu, matrisi köşegeni üzerinden çevirmek anlamına gelir: satırlar sütunlara, sütunlar satırlara dönüşür. A'nın şekli (m, n) ise A.T şekli (n, m) olur. Transpozlar doğrusal cebirin her yerinde görülür: kovaryans matrislerinin hesaplanmasında, gradyan geri yayılımının uygulanmasında ve satır vektörü ile sütun vektörü kuralları arasında dönüşümde kullanılır. NumPy transpoza .T özniteliğiyle erişir — kopya oluşturulmaz; yalnızca adım değerleri yeniden düzenlenmiş bir görünüm kullanılır.
import numpy as np
A = np.array([[1, 2, 3],
[4, 5, 6]])
print('A shape:', A.shape) # (2, 3)
print('A.T shape:', A.T.shape) # (3, 2)
print(A.T)Uygulamada Transpoz
Sık kullanılan bir örüntü, en küçük kareler regresyonunda, PCA'da ve normal denklemlerde görülen simetrik kare matris üreten A.T @ A işlemini hesaplamaktır. A'nın şekli (n, p) ise A.T @ A şekli (p, p) olur. (A.T @ A)[i,j] == (A.T @ A)[j,i] olduğundan sonuç her zaman simetriktir. Birçok sayısal çözücü, verimlilik sağlamak için bu özellikten yararlanır.
import numpy as np
A = np.array([[1.0, 2.0],
[3.0, 4.0],
[5.0, 6.0]]) # shape (3, 2)
ATA = A.T @ A # shape (2, 2), symmetric
print('A.T @ A:')
print(ATA)
print('Is symmetric:', np.allclose(ATA, ATA.T))Determinant: Ne Anlama Gelir
Bir kare matrisin determinantı, geometrik bilgiyi kodlayan skaler bir değerdir: matrisin alanları (2 boyutlu) veya hacimleri (daha yüksek boyutlu) hangi katsayıyla ölçeklendirdiğini ölçer. Determinantın sıfır olması, matrisin tekil olduğu anlamına gelir — uzayı daha düşük boyutlu bir alt uzaya çökertir ve tersi yoktur. Sıfırdan farklı bir determinant, matrisin terslenebilir olduğunu garanti eder. NumPy determinantı np.linalg.det() ile hesaplar.
import numpy as np
# Non-singular matrix
A = np.array([[3.0, 1.0],
[2.0, 4.0]])
print('det(A):', np.linalg.det(A)) # 3*4 - 1*2 = 10
# Singular matrix (row 2 = 2 * row 1)
B = np.array([[1.0, 2.0],
[2.0, 4.0]])
print('det(B):', np.linalg.det(B)) # ~0np.linalg.inv() ile Ters Matrisi Hesaplama
Bir matrisin tersi (A⁻¹ ile gösterilir), A @ A⁻¹ = I koşulunu sağlar; burada I birim matristir. Ters matris yalnızca kare ve tekil olmayan matrisler için vardır. np.linalg.inv(A) ters matrisi sayısal olarak hesaplar. Uygulamada ters matrisleri açıkça hesaplamaktan genellikle kaçınmalısınız; çünkü bu işlem sayısal olarak kararsızdır. Bunun yerine denklem sistemleri için np.linalg.solve() kullanmayı tercih edin. Ancak ters matrisleri kavramsal olarak anlamak çok önemlidir.
import numpy as np
A = np.array([[3.0, 1.0],
[2.0, 4.0]])
A_inv = np.linalg.inv(A)
print('Inverse:')
print(A_inv)
# Verify: A @ A_inv should be identity
I = A @ A_inv
print('A @ A_inv (should be I):')
print(np.round(I, 10))Doğrudan Ters Almanın Sayısal Kararsızlığı
Bir matrisin tersini hesaplayıp ardından çarpma yapmak, birikerek büyüyen kayan nokta hatalarına yol açar. Örneğin, A_inv @ b ile çözüm bulmak, doğrudan np.linalg.solve(A, b) çağırmaktan daha az doğrudur. İyi koşullu bir matris (determinantı sıfırdan uzakta olan matris), bu hatalara karşı daha az duyarlıdır. Koşul sayısı (np.linalg.cond(A)), bir matrisin tekil olmaya ne kadar yakın olduğunu nicel olarak ifade eder; yüksek koşul sayıları sayısal sorunlara işaret eder.
import numpy as np
A = np.array([[1.0, 2.0],
[1.0001, 2.0]])
print('Condition number:', np.linalg.cond(A))
# Very high condition number -> near-singular, unstable inversion
b = np.array([3.0, 3.0001])
# Prefer solve over inv @ b
print('Solution via solve:', np.linalg.solve(A, b))Dik Matrisler ve Transpozları
Özel bir matris sınıfı olan dik matrisler için A.T @ A = I geçerlidir. Bu, transpozun IS, yani ters matris olduğu anlamına gelir; dolayısıyla dik matrislerin tersini almak son derece düşük maliyetlidir. Dönüş matrisleri ve QR ayrıştırmasındaki Q çarpanı diktir. Dik bir matrisin sütunları ortonormal bir taban oluşturur; her sütunun uzunluğu birimdir ve diğer tüm sütunlara diktir.
import numpy as np
# 90-degree rotation matrix is orthogonal
theta = np.pi / 2
R = np.array([[np.cos(theta), -np.sin(theta)],
[np.sin(theta), np.cos(theta)]])
print('R.T @ R (should be identity):')
print(np.round(R.T @ R, 10))
print('Is orthogonal:', np.allclose(R.T @ R, np.eye(2)))Kare Olmayan Matrisler İçin Sözde Ters
Normal bir ters matris yalnızca kare matrisler için vardır; ancak Moore-Penrose sözde tersi, ters alma işlemini her matrise geneller. np.linalg.pinv(A) bunu SVD kullanarak hesaplar. Sözde ters, fazla belirlenmiş sistemlerin (bilinmeyenlerden daha fazla denklem içeren sistemlerin) en küçük kareler çözümünün temelidir; doğrusal regresyonun çözdüğü şey de tam olarak budur. A kare ve terslenebilirse pinv(A), inv(A) değerine eşittir.
import numpy as np
# Over-determined system: 3 equations, 2 unknowns
A = np.array([[1.0, 1.0],
[1.0, 2.0],
[1.0, 3.0]])
b = np.array([2.0, 3.0, 5.0])
# Least-squares solution using pseudo-inverse
x = np.linalg.pinv(A) @ b
print('Best-fit solution:', x)
# Or use lstsq directly
x2, _, _, _ = np.linalg.lstsq(A, b, rcond=None)
print('lstsq solution:', x2)Determinant İşareti ve Hacim Ölçekleme
Determinantın işareti, dönüşümün yönelimi koruyup korumadığını gösterir. Pozitif determinant, yönelimin korunduğu (dönüşte olduğu gibi); negatif determinant ise yönelimin tersine çevrildiği (yansımada olduğu gibi) anlamına gelir. Mutlak değer, hacim ölçekleme katsayısını verir. [[a,b],[c,d]] biçimindeki 2×2 bir matris için det = a*d - b*c olur. NumPy, isteğe bağlı kare matris boyutlarını verimli biçimde işler.
import numpy as np
# Identity: det = 1 (no scaling, no flip)
I = np.eye(3)
print('det(I):', np.linalg.det(I)) # 1.0
# Scaling by 2 in all directions: det = 8 = 2^3
S = 2 * np.eye(3)
print('det(2I):', np.linalg.det(S)) # 8.0
# Reflection: det = -1
F = np.array([[-1.0, 0.0],
[ 0.0, 1.0]])
print('det(reflection):', np.linalg.det(F))Kararlılık İçin np.linalg.slogdet() Kullanımı
Büyük matrislerde determinant, matris tekil olmasa bile taşarak sonsuza çıkabilir veya alt taşma sonucunda sıfıra dönüşebilir. np.linalg.slogdet(A), sayısal taşmayı önleyen (sign, log_abs_det) değerini, yani determinantın işaretini ve mutlak değerinin doğal logaritmasını döndürür. Bu yöntem, sayıları yönetilebilir aralıkta tutmak için logaritmik uzayda çalıştığınız olasılıksal modellerde (Gauss olabilirliklerinde) yaygın olarak kullanılır.
import numpy as np
A = np.random.rand(100, 100)
# Direct det might underflow for large matrices
sign, logdet = np.linalg.slogdet(A)
print('Sign:', sign)
print('Log|det|:', logdet)
print('Actual det (may be ~0 due to float):', np.linalg.det(A))
print('Reconstructed |det|:', np.exp(logdet))Uygulama: 2×2 Matrisi Elle Çözme ve NumPy ile Çözme
[[a, b], [c, d]] biçimindeki 2×2 bir matris için ters matris, det = ad - bc olmak üzere (1/det) * [[d, -b], [-c, a]] biçimindedir. Bu formülü bilmek, NumPy sonucunu hızlıca kontrol etmenize yardımcı olur. Daha büyük matrislerde ters matrisi analitik olarak hesaplamak pratik değildir; np.linalg.inv() kullanmamızın nedeni tam olarak budur. Sayısal sonuçları her zaman np.allclose(A @ A_inv, np.eye(n)) ile doğrulayın.
import numpy as np
a, b, c, d = 3.0, 1.0, 2.0, 4.0
A = np.array([[a, b], [c, d]])
det = a*d - b*c
# Manual inverse
A_inv_manual = (1/det) * np.array([[d, -b], [-c, a]])
print('Manual inv:')
print(A_inv_manual)
# NumPy inverse
print('np.linalg.inv:')
print(np.linalg.inv(A))
print('Match:', np.allclose(A_inv_manual, np.linalg.inv(A)))İşlem Hatlarında Transpoz ve Ters Alma İşlemlerini Birleştirme
Doğrusal cebirde yaygın bir örüntü, transpoz ve ters alma işlemlerini birleştirir: (A.T @ A)⁻¹ @ A.T hesaplandığında, sıradan en küçük karelerde kullanılan izdüşüm matrisi elde edilir. NumPy'de bu işlem np.linalg.inv(A.T @ A) @ A.T şeklinde yazılabilir; ancak yine de sayısal açıdan np.linalg.lstsq tercih edilir. Temel örüntüyü bilmek, çözücünün ne yaptığını anlamanıza ve matrisler tekile yakın olduğunda sorunları ayıklamanıza yardımcı olur.
import numpy as np
# Design matrix for simple linear regression (with bias)
X = np.column_stack([np.ones(5), np.array([1., 2., 3., 4., 5.])])
y = np.array([2.1, 3.9, 6.2, 8.1, 9.8])
# OLS via normal equations: beta = (X.T @ X)^-1 @ X.T @ y
beta = np.linalg.inv(X.T @ X) @ X.T @ y
print('Coefficients (intercept, slope):', np.round(beta, 3))
# Verify with lstsq
beta2, _, _, _ = np.linalg.lstsq(X, y, rcond=None)
print('lstsq result:', np.round(beta2, 3))Hızlı Kontrol
Bu dersteki Veri Analizi kavramlarını anlayıp anlamadığınızı test edin.
Ders Özeti
Bu derste şunları öğrendiniz: A.T, satırları ve sütunları yer değiştirten transpozdur; np.linalg.inv() matrisin tersini hesaplar, ancak doğrudan nadiren kullanılmalıdır (solve veya lstsq tercih edilmelidir); np.linalg.det() ise tekil matrisler için sıfır olan determinantı döndürür. Sırada, doğrusal sistemleri doğrudan np.linalg.solve ile çözmeyi ele alacağız.
Sıkça Sorulan Sorular
“Determinantlar, Ters Matrisler ve Transpozlar” dersi ücretsiz mi?
Evet — “Determinantlar, Ters Matrisler ve Transpozlar” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Pandas & NumPy Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Pandas & NumPy Academy kursu toplamda 4 dersten oluşur.
“Determinantlar, Ters Matrisler ve Transpozlar” dersinde ne öğreneceğim?
Matris determinantlarını np.linalg.det, ters matrisleri np.linalg.inv ve transpozları .T ile hesaplayın. Pandas & NumPy Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Pandas & NumPy Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Pandas & NumPy Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.
“Determinantlar, Ters Matrisler ve Transpozlar” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Pandas & NumPy Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Pandas & NumPy Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- np.matmul ve @ ile Matris Çarpımı
- Determinantlar, Ters Matrisler ve Transpozlar
- Doğrusal Sistemleri Çözme
- Özdeğerler ve SVD'ye Genel Bakış