C Programlama Matris İçinde Matris Arama

Matris dikdörtgen bir sayılar tablosu veya daha genel bir açıklamayla, toplanabilir veya çarpılabilir soyut miktarlar tablosu olarak tanımlanabilir. Dizey olarak ta adlandırılır.
matris
Bir matristeki düz yatay sıraya satır dikey sıraya sütun adı verilir. Bir matris içinde dizilip gösterilen sayılar öğe veya eleman olarak adlandırılır. Matrisin büyüklüğü satır sayısı ile sütun sayısı birlikte verilmesi ile ifade edilir. Örnek olan verilen matris 4×3 (yani 4 satırlı 3 sütunlu) matristir. Matrisin boyutu satır sayısı ve sütun sayısının ayrı ayrı verilmesi ile ifade edilir. Örnek matrisin boyutu 4 ve 3 olur.

Örneğin m satırlı n sütunlu mxn türünden bir A matrisi
notasyon
olarak notasyonla(gösterimle) ifade edilir.
Matris türleri nelerdir?
1-Kare matris: Satır sayısı sütun sayısına eşit olan matrislerdir.

kare-matris
2-Birim matris: Kare matrisin yaygın bir örneğidir, köşegenin üzerindeki öğelerinin 1 geri kalan yerlerdeki öğelerin 0 olduğu birim matristir. Satır ve sütun sayısı n olan bir birim matrisi göstermek için (başka bir yerde kullanılmamışsa) genelde In kullanılır. Mesela, 3×3’lük bir birim matris:
birim-matris
Birim matrisin determinantı birdir. Determinant kare bir matris ile ilişkili özel bir sayıdır.Bir A matrisin determinant’ı det(A) ya da det A şeklinde gösterilir.
abcd-matris
matrisinin determinantı:
determinant şeklinde hesaplanır.
2×2’lik bir matrisin determinantının mutlak değeri, köşeleri (0,0), (a,b), (a + c, b + d), ve (c,d) noktalarında olan bir paralelkenarın alanına eşittir. (Detaylı anlatım için ilgili video: https://youtu.be/n-S63_goDFg izlenebilir. )
3×3’lük bir matrisin determinantının mutlak değeri, üç boyutlu paralelyüz cisminin hacmine eşittir.
3-Sıfır matris: Tüm elemanları sıfır olan matristir.

sifir-matris
4-Satır matris: Sadece bir satırdan oluşan matrislere denir.
satir-matris
5-Sütun matris: Sadece bir sütundan oluşan matrislere denir.
sutun-matris
Eğer bir matrisin boyutlarından biri 1 ise (yani ya satır sayısı 1 veya sütun sayısı 1 ise yani satır matrisi veya sütun matrisi ise) bu matris, bir yöney veya vektör veya Öklid-tipi vektör olarak da tanımlanır.
Matris işlemleri nelerdir?
Matris Toplama:
İki matrisin toplanabilmesi için satır ve sütun sayılarının eşit olması gerekir.
ikimatristoplama1
ikimatristoplama2
Matrislerin bileşenleri karşılıklı olarak toplanarak işlem yapılır.
Matrisi Sayıyla (Skalerle) Çarpma:
Bir matris, bir sayıyla çarpılırsa her bileşeni o sayıyla çarpılır.

matris-skaler-carpma
Matris Çarpımı:
Herhangi iki matris için matris çarpımı işlemi yapılamaz.Çarpımı istenen iki matris için ilk önce matrislerden hangisinin ön-çarpan matris, hangisinin art-çarpan matris olduğunun belirlenmesi gerekir. Çünkü çarpma işlemi, sayılarda değişmelidir, fakat matrislerde değildir. Yani genel olarak A ve B matrisi için A·B ≠ B·A
A·B matris çarpımı için A ön-çarpan ve B art-çarpan, B·A matris çarpımı için B ön-çarpan ve A art-çarpan olur. İki matris çarpımı notasyonla belirtilmekle beraber ya “A·B” ya “B·A” ya da hem “A·B” hem “B·A” geçerli olmayabilir.
Matris çarpımı ancak ön-çarpan sütun sayısı ile art-çarpan satır sayısı birbirine eşitse mümkündür. Yani (p * j) boyutlu A matrisi ile (k * l) boyutlu B matrisinin çarpımı ancak “j = k” ise mümkün olur; yoksa geçerli değildir. Eğer matris çarpımı geçerli ise, ortaya çıkartılacak çarpım matrisi, ön-çarpan satır sayısı ve art-çarpan matris sütun sayısı boyutludur Yani eğer “j = k” ise, matris çarpımı sonucu matrisi (p * l) boyutludur.
Sayısal bir örnek olarak, A matrisi (2 * 3) boyutlu ise ve B (3 * 4) boyutlu ise matris çarpımı (A·B), “j = k” (3 = 3) olduğu için geçerlidir ve matris çarpımı işlemi sonuç matrisi (2 * 4) boyutludur; ama B·A matris çarpımı işlemi geçerli değildir; çünkü “j ≠ k” (4 ≠ 2).
Aşağıdaki matris çarpımının nasıl yapıldığı görülmektedir:

matris-carpim
Matrislerde Doğrudan Toplam: Kronecker toplama olarak ta bilinir.
Matrislerin doğrudan toplamı, bir özel blok matris oluşturur.

dogrudan-toplam-1

Aşağıdaki örnekte doğrudan toplamın nasıl yapıldığı görülmektedir:
dogrudan-toplam-2
Matrislerde Doğrudan Çarpım: Kronecker çarpım olarak ta bilinir.
Bu çarpım ilk öğenin her bileşenini ikinci öğeyle doğrudan çarpmayla tanımlanır.
dogrudan-carpim
Doğrudan/Kronecker çarpım aşağıdaki şekilde yapılır:
kronecker-carpim-ornegi
Denklemler matris şeklinde ifade edilerek çözülebilir.
Bir Matrisin Toplamsal Tersi
Bir M matrisinin her girdisinin işareti değiştirilerek elde edilen matrise o matrisin toplamsal tersi denir ve M nin toplamsal tersi -M ile gösterilir.
matrisin-toplamsal-tersi
İki Matrisin Farkı
A ve B aynı büyüklükte iki matris ise, A ve B nin farkı A – B = A + (-B) olarak tanımlanır. Başka bir deyimle, aynı büyüklükte iki matrisin farkı, o iki matrisin karşılıklı girdilerinin farkı hesaplanarak bulunur.
matris-cikarma
Bir Matrisin Devriği(Transpozesi)
Bir m×n matris A verildiğinde, A nın devriği ( ya da transpozesi) denilen ve AT ile gösterilen n×m matris şöyle tanımlanır: her i ve j için ATnin i-j girdisi, A nın j-i girdisidir.
Bu tanımdan kolayca görülebileceği üzere, AT nin i-inci satırı A nın i-nci sütunu ve AT ninj-inci sütunu A nın j-inci satırıdır.
matris-transpoze
Bir Kare Matrisin Tersi
Bir matrisin çarpımsal tersi bulunmayabilir; ancak, varsa tektir.
Çarpımsal tersi bulunmayan matris örneği:
tersi-olmayan-matris
Çarpımsal tersi bulunan matris örneği:
tersi-olan-matris
C Programla kodunu anlamak için yukardaki notlara göz gezdirmeniz tavsiye olunur.



#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include <math.h>

int main()
{ elma:
 system("color 2a");
 int satir,sutun,j,i,satir2,sutun2,bsatir,bsutun,a,b,kontrol=0; 
 printf("Matrisin satirini giriniz...\n");
 scanf("%d",&satir);
 printf("Matrisin sutunu giriniz..\n");
 scanf("%d",&sutun);
 printf("\n...Ikinci matrisin  satir ve sutun kucuk olmak zorundadir..\n");
 printf("Ikinci matrisin satir degerini giriniz...\n");
 scanf("%d",&satir2);
 printf("Ikinci matrisin sutunr degerini giriniz...\n");
 scanf("%d",&sutun2);
 int dizi[satir][sutun];
 if(satir>satir2 && sutun>sutun2)
 {
  for(i=0;i<satir;i++)
  {
   for(j=0;j<sutun;j++)
   {
    printf("%d. satir %d. sutun Matrisin degerlerini giriniz...\n",i+1,j+1);
    scanf("%d",&dizi[i][j]);
    
   }
  }
  
  
  int dizi2[satir2][sutun2];
  for(i=0;i<satir2;i++)
  {
   for(j=0;j<sutun2;j++)
   {
     printf("%d. satir %d. sutun Matrisin degerlerini giriniz...\n",i+1,j+1);
     scanf("%d",&dizi2[i][j]);
    
   }
  }
 
   for(i=0;i<satir-satir2;i++)
   {
    for(j=0;j<sutun-sutun2;j++)
    {
     if(dizi2[0][0]==dizi[i][j])
     {
      bsatir=i;
      bsutun=j;
      for(a=0;a<satir2;a++)
      {
       for(b=0;b<sutun2;b++)
       {
        if(dizi2[a][b]==dizi[i+a][j+b])
        {
         kontrol=1;
        }
        else
        {
         kontrol=0;
        }
       }
      }
     }
     else
     {
      kontrol=0;
     }
    }
   }
  if(kontrol==1)
   {
    printf("Bulunan satir %d sutun %d\n",bsatir,bsutun);
   }
   else
   {
    printf("Bulunamamistir\n!");
   }
 }
 else
 {
  printf("Tekrar satir sutun giriniz...\n");
  goto elma;
 }
  
 system("pause");
 return 0;
}

Yorum Gönder

0 Yorumlar