Soru sorSVD ile matris tersi nasıl bulunur?
eebiohtc tarafından 5 yıl önce soruldu

Merhabalar ,
 
Elimde kare olmayan bir matris vardır. Bunun tersini SVD ile bulmaya çalıştığımda matrisimin elemenları 10^116 gibi değerlere ulaşıyor. Nerede hata yapıyor olabilirim?   Her bir sütunu 
0,955611594125348
0,950565200669780
0,939506571818451
0,900941681667482
0,875335081442748
0,883890419929453
0,898050194903731
0,894010655046379
0,879482180407571
0,855983459129834
0,831536667199898
0,805648999539139
0,774560247025476
0,737068094764411
0,726543790106827
0,726306498651898
Bu değerlerden oluşuyor yani matrisim 16*1166'lık bunun tersini aldığımda ise [U S D]=svd(X) gibi ayırıyorum. Sonrasında  X^-1= D*S^-1*U' değil mi?

3 Cevap
sayginer Yönetici tarafından 5 yıl önce cevaplandı

Merhaba,
Ondalık ayırmak için kullandığınız değerleri MATLAB'e girerken nokta kullanıyorsunuz değil mi? Yukarıdaki değerlerde virgül gördüğüm için ilk gözüme çarpan kısım o oldu.

eebiohtc tarafından 5 yıl önce cevaplandı

Merhabalar, Yok onlar başka bir matris işleminin çıktısı olduğu için öyle görünüyor direk kopyalamıştım. Şu an problemim biraz daha farklı bir durumdadır. undetermined olan bir matrisin tersini almaya çalışıyorum. SVD ile yapamyı denedim ama her matlabın kendi sitesinde biraz farklı geldi tam olarak anlayamadım. Bir matrisim var 16*1166'lık. Ben bunun tersini almak için SVD tekniğini kullanıyorum. Yani [U V D]=svd(A) olsun. Sonra ben bu matrisin tersini bulurken D*V^-1*U yapıyorum, ama benim V matrisim 16*1166 lık çıktığı için ve sadece 16 tane değeri nonzero olduğu için ben onun tersini diagonal elemanlarının çarpımsal olarak tersini alıp yazdım ve sonucum yanlış çıktı. Nerede yanlış yapıyorum?
 

hakkans Yönetici tarafından 5 yıl önce cevaplandı

Merhaba,
Matlab'ın pseudo-inverse fonksiyonu pinv()'i kullandınız mı? Yazdıklarınızdan kesinlikle svd kullanmanız gerekmediğini anlıyorum, isterseniz bunu deneyin:
https://www.mathworks.com/help/matlab/ref/pinv.html