ineer Denklem Sistemlerinin Çözümü n bilinmeyenli n denklemden oluşan bir sistem; a 1n x n b 1 a 21 a 2n x n b 2 a n2 x n b n Matrisel ormda iade edilirse; a 1n b a 21 a 2n J M 2 b 2 J M J M a n2 x n b n Burada; : atsayılar matrisi, B : Sabitler matrisi, X : Bilinmeyenler matrisidir [] [X] =[B] Bu denklem sisteminde çözümün olabilmesi için det() 0 olmalıdır ineer denklem sistemlerinin çözüm yöntemleri iki alt başlıkta toplanabilir; 1 Doğrudan Yöntemler (Ters Matris, Cramer, Gauss Eleminasyon, Gauss-Jordan Yöntemleri), 2 Sayısal Yöntemler (Jakobi, Gauss Siedell Yöntemleri)
1 Doğrudan Yöntemler Ters Matris Yöntemi @ @ @ @ @ 1 X B Q @ @ X @ @ @ 1 R @ B Q @ X @ R @ @ 1 @ B Q @ X @ @ 1 @ B Örnek : 5 4 14 2 3 7 denklem sisteminin çözüm kümesini bulunuz
Cramer Yöntemi Yukarda verilen denklem sisteminin cramer yöntemi ile çözümü; a 1n a 21 a 2n M J a n2 b 1 a 1n b 2 a 2n 1 J M b n a n2 b 1 a 1n a 21 b 2 a 2n 2 J M b n b 1 a 21 b 2 n J M a n2 b n Not : Bu iki yöntem denklem sayısı 3 ve 3 ten az olan sistemlere uygundur Örnek : 5 4 14 2 3 7 denklem sisteminin çözüm kümesini bulunuz
Gauss Eleminasyon Yöntemi Çok eski bir yöntem olmasına rağmen bir çok popüler yazılım paketinde doğrusal denklemlerin çözüm yöntemi olarak kullanılmaktadır Yöntemin gerçekleştirilmesi iki aşamadan oluşur; 1 Bilinmeyenlerin elenmesi; na köşegen altındaki elemanlar, elementer satır işlemleri ile sıır yapılır a 13 b 1 a 1n b a 21 a 23 b J 2 M Q 1 0 a 23 b 2 M J a 31 a 32 a 33 b 3 0 0 a 33 b 3 2 Geriye doğru çözüm kümesinin bulunması; a 1n J 0 a 23 0 0 a 33 Örnek : M J x 3 b 1 M b 2 M J b 3 2 x 3 8 2 @ x 3 3 3 3 @ 2x 3 3 denklem sisteminin çözüm kümesini bulunuz
#include<stdioh> int main(void) void backsubs(loat [][10],loat [], int); loat a[10][10],b[10],tem=0,temp=0,temp1=0,temp2=0,temp4=0,temp5=0; int n=0,m=0,i=0,j=0,p=0,q=0; print("are Matrisin Boyutu :"); scan("%d",&n); or(i=0;i<n;i++) or(j=0;j<n;j++) print("[%d,%d] :",i,j); scan("%",&a[i][j]); print("\nensabitler Matrisi\n"); or(i=0;i<n;i++) print("b[%d] :",i,j); scan("%",&b[i]); or(i=0;i<n;i++) temp=a[i][i]; i(temp<0) temp=temp*(-1); p=i; or(j=i+1;j<n;j++) i(a[j][i]<0) tem=a[j][i]*(-1); else tem=a[j][i]; i(temp<0) temp=temp*(-1); i(tem>temp) p=j; temp=a[j][i]; //Satir degisimleri or(j=0;j<n;j++) temp1=a[i][j]; a[i][j]=a[p][j]; a[p][j]=temp1; temp2=b[i]; b[i]=b[p]; b[p]=temp2; //osegen haric elemanlarin siirlanmasi temp4=a[i][i]; or(q=i+1;q<n;q++) temp5=a[q][i]; or(j=0;j<n;j++) a[q][j]=a[q][j]-((temp5/temp4)*a[i][j]); b[q]=b[q]-(temp5/temp4*b[i]); backsubs(a,b,n); return 0; void backsubs(loat a[][10],loat b[], int n) int i=0,j=0; or(i=n-1;i>=0;i--) or(j=n-1;j>i;j--) b[i]=b[i]-a[i][j]*b[j]; b[i]=b[i]/a[i][i]; print("x%d = %\n",i+1,b[i]);
Gauss-Jordan Yöntemi Gauss yönteminin arklı bir durumudur na köşegen hariç diğer elemanlar, elementer satır işlemleri ile sıırlanır Dolayısıyla, çözümü bulmak için geriye doğru çözümün bulunması adımını içermez 0 0 b 1 0 0 M J Jx M 2 b 2 M J 0 0 a 33 x 3 b 3 yrıca, bütün satırlar pivot elemanlara bölünerek normalize edilebilir Örnek : 2 x 3 8 2 @ x 3 3 3 3 @ 2x 3 3 denklem sisteminin çözüm kümesini bulunuz
2 İterati Yöntemler Gauss-Jakobi Yöntemi n bilinmeyenli denklem sistemi, a 1n x n b 1 a 21 a 2n x n b 2 a n2 x n b n Şeklinde verilmiş olsun Bu sistemş Gauss-Jakobi yöntemi ile çözebilmek için aşağıdaki orma dönüştürülür 1 B C 1 a11 a 1n x n b1 1 B C 1 a21 a 2n x n b2 1 B C 1 an1 x a 1 a n2 x n bn nn Dönüştürülen sistemin çözüm kümesine yakınsayabilmesi için, yakınsama koşulunu sağlaması gerekir n a ii X a ij her satır için köşegen elemanı, diğer elemanların toplamından j 1 j i büyük olmalıdır Eşit olma durumunda yakınsama çok yavaş olur İterasyon için; b 1 b 2 x n b n a @ 12 x2k a 1n a @ 21 x1k a 2n a @ n1 xn k xn k x1k @ 1 g g k xn @ 1 g Genel iterasyon ormulu; Matrisel ormda yazılacak olursa; J M x n J a 0 12 a 1n k a 21 a 0 2n a @ 22 a 2 2 M J x n M J a n2 M 0 b 1 b 2 b n [X] k+1 = [B ] - [ ] [X] k
Örnek : 5 @ 2 x 3 4 4 @ 2x 3 3 2 4x 3 17 Denklem sisteminin çözüm kümesini (0,0,0) başlangıç değerlerini kullanarak bulunuz
Gauss-Seidel Yöntemi Bu yöntem Jakobi yönteminin geliştirilmiş halidir Yakınsaması çok daha hızlıdır Seidel yönteminde, k+1 iterasyonunda bulunan x i k+1 sonuçları, j=i+1,n olmak üzere x j k+1 sonuçlarının bulunmasında kullanılır b 1 b 2 x n b n @ @ a 21 @ x2k @ a 13 x1 @ a 23 x1 @ a n2 Genel iterasyon ormulu; x3k @@ a 1n k xn x3k @@ a 2n k xn x2 @@ @ 1 xn a @ 1 nn i @ 1 a ij x i b i a ii @ X j 1 a ii n x j @ X j i 1 a ij a ii x j k İterasyona başlanmadan yakınsama koşuluna dikkat edilmelidir #include<stdioh> int main(void) loat a[10][10],b[10],x[10],y[10]; int n=0,m=0,i=0,j=0; print("are Matrisin Boyutu : "); scan("%d",&n); or(i=0;i<n;i++) or(j=0;j<n;j++) print("[%d,%d] :",i,j); scan("%",&a[i][j]); print("\nsabitler Matrisi\n"); or(i=0;i<n;i++) print("b[%d] :",i,j); scan("%",&b[i]); print("baslangic Degerleri\n"); or(i=0;i<n;i++) print("x[%d]_0 :",i); scan("%",&x[i]); print("\nterasyon sayisi : " ); scan("%d",&m); while(m>0) or(i=0;i<n;i++) y[i]=(b[i]/a[i][i]); or(j=0;j<n;j++) i(j==i) continue; y[i]=y[i]-((a[i][j]/a[i][i])*x[j]); x[i]=y[i]; print("x%d = % ",i+1,y[i]); print("\n\n"); m--; return 0;
Örnek : 5 @ 2 x 3 4 4 @ 2x 3 3 2 4x 3 17 Denklem sisteminin çözüm kümesini (0,0,0) başlangıç değerlerini kullanarak bulunuz
Örnek : 5x 6y @ 4z 7 3x y @ z 3 @ 5x @ 3z @ 8 Denklem sisteminin çözüm kümesini (0,0,0) başlangıç değerlerini kullanarak bulunuz
Ödev : Yandaki devrede 1, 2 ve 3 akımlarını genelleştirilmiş matris ormatı ile, her iki iterasyon yöntemini kullanarak bulunuz