İndis gösterimi
Matematik ve bilgisayar programlamada, "indis notasyonu" sayıların bir dizi öğelerini belirtmek için kullanılır.İndislerin nasıl kullanıldığını biçimciliği konuya göre değişir. Özellikle, bir yayın için resmi bir matematik kağıt yazıyor, ya da bir bilgisayar programı yazarken bağlı bir listenin elemanları, bir vektör veya matrise atıfta bulunulması için farklı yöntemler vardır.
Matematikte indis gösterimi
Bu alt simgeleri kullanarak bir dizinin elemanlarına başvurmak matematikte sıklıkla yararlıdır.Indisler tamsayı veya değişken olabilir. Bu çok-boyutlu diziler olarak kabul edilebildiğinden bu yana dizi, genel tensörlerin şeklini alır. Özel (ve daha tanıdık) durum vektörleri (1d diziler) vematrisleri (2d diziler) vardır.
Aşağıdaki kavram sadece bir giriştir: indis notasyonu (özellikle tensör işlemleri temsil ve manipülasyon) matematikte daha ayrıntılı olarak kullanılmaktadır. Daha ayrıntılı bilgi için ana makaleye bakın.
Tek-boyutlu diziler (vektörler)
Bir satır vektörü veya sütun vektörü olarak yazılan sayıların bir dizisi olarak işlenen bir vektör (bu kullanılan kolaylık veya koşullara bağlıdır):
İndis notasyonu i basitçe yazarak dizinin elemanlarının indisleme ile gösterilmesini sağlar burada indisin i1 den n e çalıştığı biliniyor.[1] Örneğin, verilen vektör:
ise bazı girişler
- .
dir Bu gösterim matematik ve fizik içindeki vektörlere uygulanabilir.vektör denklemi aşağıda
Ayrıca, vektör elemanları (aka bileşenler) cinsinden yazılabilir olmasıdır
indisler burada belirli bir değerler aralığı alır . Bu ifade,denklemin bir kümesini , her bir dizi için birini temsil etmektedir Eğer the her vektörün nögeleri varsa, anlamı i = 1,2...n, ise denklem açıktır
Hence, index notation serves as an efficient shorthand for
- representing the general structure to an equation,
- while applicable to individual components.
İki-boyutlu diziler
Birden fazla indisi bir matris elemanları olarak iki ya da daha çok boyutlar, içinde, sayı dizilerini tanımlamak için kullanılır.(sağda ayrıca resim);
The entry of a matrix A is written using two indices, say i and j with or without commas to separate the indices: aij or ai,j, where the first subscript is the row number and the second is the column number. The notation "ij" should not be confused with "i multiplied by j", it is read as "i - j". For example, if
ise bazı girişler
- .
Matris denklemi vektör denklemine benzer yazılıyor, böylece
matrisin ögelerinin terimleri içinde (aka bileşenleri)
i ve jnin tüm değerleri için. her bir indis için yine bu denklemin bir küme ifadesi göstermektedir. Eğer her matrisin m satır ve n sütunları varsa, anlamı i = 1,2...m ve j = 1,2...n, ise burada mn denklemidir.
Çoklu-boyutlu diziler
Tensörler: gösterim elemanlarının çok boyutlu dizileri için açık bir genelleme sağlar. örneğin
Birçok denklemlerin bir dizi gösterimidir.
Tensör analizinde,üstindis, karşıtdeğişken girişlerden eşdeğişkeni ayırtetmek için vektörlerin eşdeğişken ve karşıtdeğişken ve indisleri yükseltici ve düşürücü görmek yerine simgeler kullanılmıştır.
Hesaplama içinde indis gösterimi
Çeşitli programlama dillerinde, indis notasyonu bir dizinin elemanlarını adreslemenin bir yoludur. Ilk öğenin adresi bir üs olarak kullanılır ve eleman boyutunun katları (indis) dizi içinde adresleme kullanılmasını sağlayan bu assembly dili ile nasıl uygulandığına yakın olduğu için bu yöntem kullanılır. Tamsayılar bir dizinin bilgisayarın bellek adresi 3000 (taban adresi) ile bellek hücreden başlayarak ve her tamsayı dört hücre (bayt) kaplar bir bölgede depolanır Örneğin, daha sonra bu dizinin elemanları bellekte yer almaktadır yerleri 3000, 3004, 3008, ..., 0x3000 + 4 (n-1). Genel olarak, taban adresi b ve eleman boyutu s ile bir dizinin i'inci ögenin adresi b+isdir.
C gömme detayları
C programlama dilinde, biz *(taban + i)(işaretçi formu) yukarıdaki veya taban[i] (dizi indisleme formu) olarak yazabiliriz veya C standart işaretçi forma bir dönüşüm olarak indisleme formu dizisi tanımlamaya tam olarak eşdeğerdir Tesadüfi olarak işaretçi ekleme değişmeli olduğundan , bu tür belirsiz ifadeler için 3[base] gibi sağlayan taban[3].[2]'e eşittir
Çoklu boyutlu diziler
Biz birden fazla indisi ile diziler dikkate alındığında nesneler, örneğin, bir iki boyutlu bir tablo daha ilginç hale gelir:Bize burada üç ihtimal vardır:
- iki tek bir indisin hesaplanmasıyla tek boyutlu bir dizi iki boyutlu dizi yapılır ,
- Her elemanı bir tek-boyutlu bir dizi düşünüldüğünde diğeri tek boyutludur.yani bir dizilerin dizisi
- orijinal dizinin her satırının adreslerinin dizisini tutmak için ek depolama alanı kullanır ve ayrı tek boyutlu diziler gibi orijinal dizinin satırları depolanıyor
C olarak, tüm üç yöntem kullanılabilir.İlk yöntem kullanıldığında, programcı dizinin elemanlarını bilgisayarınızın belleğine nasıl yerleştirileceğine karar verir, ve her elemanın konumunu hesaplamak için formüller sağlar. Her satırda elemanların sayısı aynı ve programı yazıldığı anda bilinen iken ikinci bir yöntem kullanılır. Programcı örn yazarak, diyelim ki, üç sütun var dizisini yazacağını söylüyor.ögetipi tabloadı[][3];. Bir sonra tabloismi tabloadı[ilk indis][ikinci indis] yazarak dizinin belirli bir elemanı ifade eder.Derleyici, her satırda tarafından işgal bellek hücrelerinin toplam sayısı, istenen satırın adresini bulmak için ilk dizin kullanır, ve sonra arka arkaya istenen öğenin adresini bulmak için ikinci dizini kullanarak hesaplar. Üçüncü yöntem kullanıldığında, programcı tablo ögetipi *tabloadı[];. gibi işaretçiler bir dizi olmaya bildirir.Programcı sonradan belirli bir elemanı tabloadı[ilk indis][ikinci indis] belirtir, derleyici ilk dizin tarafından belirtilen satır adresini aramak için talimatları oluşturur, ve ikinci dizin tarafından belirtilen elemanın adresini hesaplanırken temel olarak bu adresi kullanabilirsiniz.
Örnek
Bu işlev iki 3x3 kayan nokta birlikte matrisleri çarpar.
void mult3x3f(float result[][3], const float A[][3], const float B[][3]) { int i, j, k; for (i = 0; i < 3; ++i) { for (j = 0; j < 3; ++j) { result[i][j] = 0; for (k = 0; k < 3; ++k) result[i][j] += A[i][k] * B[k][j]; } } }
Diğer diller içinde
In other programming languages such as Pascal, indices may start at 1, so indexing in a block of memory can be changed to fit a start-at-1 addressing scheme by a simple linear transformation - in this scheme, the memory location of the ith element with base address b and element size s is b+(i-1)s.
Kaynakça
- Programming with C++, J. Hubbard, Schaum’s Outlines, McGraw Hill (USA), 1996, ISBN 0-07-114328-9
- Tensor Calculus, D.C. Kay, Schaum’s Outlines, McGraw Hill (USA), 1988, ISBN 0-07-033484-6
- Mathematical methods for physics and engineering, K.F. Riley, M.P. Hobson, S.J. Bence, Cambridge University Press, 2010, ISBN 978-0-521-86153-3
Dış bağlantılar
- Basic tensor notation on www.continuummechanics.org
- Advanced tensor notation on www.continuummechanics.org