Go’da Bir Matris Nasıl Temsil Edilir?

Go'da Nesne Yönelimli Programlamaya Giriş

Tablo veya ızgara biçimindeki bir dizi öğeye denir. matris. Sayı düzeni satır ve sütun biçimindeyse buna denir. iki boyutlu matris. Tipik olarak, bir matris herhangi bir dilde bir dizide temsil edilir, ancak onu temsil etmenin başka yolları da vardır. Go programlama dilinde, iki boyutlu bir matrisi temsil etmenin en kolay yolu, bir dilim. Burada, bu Go programlama eğitiminde, çok boyutlu dilimler kullanarak bazı matris işlevlerinin nasıl uygulanacağını öğreneceğiz.

Go’da Diziler ve Dilimler Arasındaki Fark Nedir?

Go’da dizilerin ve dilimlerin temsili önemli ölçüde farklıdır. Bir dilim doğası gereği dinamiktir ve bir dizi daha statiktir, ancak her ikisi de bitişik bir bellek tahsisini temsil eder. Bir dilim bir referans bir dizinin bir kesimine başvuran yazın. Bir dilim ayrıca bir parçaya veya tam bir diziye başvurabilir ve diziler gibi benzer türdeki öğeleri depolayabilir. Bu nedenle bir dilim, aynı zamanda, temeldeki diziye bir dinamizm bağlamı akıtan bir dizidir, aksi takdirde statik bir bitişik bellek tahsisi olur. Bunun nasıl çalıştığını daha iyi anlamak için eğiticimizi okumanızı öneririz: Go’da Dizileri ve Dilimleri Yeniden Ziyaret Etme.

Not, matris gösterimi için bir dizi kullanılamaz. Aslında, bir dizinin boyutunu kullanmadan önce biliyorsak, dizi gayet iyi. Dilim sadece daha avantajlıdır ve dinamik yapısı nedeniyle bir matrisi temsil etmenin uygun bir yoludur. Bir dizinin yaptığı her şeyi bir dilimle yapabildiğimizde ve avantajlarından faydalandığımızda, geliştiricilerin kullanması için bariz bir seçim haline gelir.

Go’da Matrix nedir?

Go programlama dilindeki bir matrisin saf matematik dışında bilgisayarlarda, fizikte, mühendislikte ve sayılarla oynamak veya onları bir şekilde temsil etmek isteyen herhangi bir disiplinde sayısız kullanımı vardır. Bir meslekten olmayanların bakış açısından, bir matris, sayıları tablo biçiminde temsil etmenin bir yoludur. Bu tablo biçiminde bir dizi satır ve sütun vardır. Bu dikey ve yatay çakışma veya satırlar ve sütunlar, değerlerin yerleştirildiği bir hücre oluşturur.

Şimdi, bu matris fikrini alın ve bir bilgisayarın bunları kullanabileceği olası yolların neler olduğunu hayal edin. Bir matrisin kullanıldığını gördüğümüz bariz bir yer, aslında bir piksel matrisi olan monitör ekranıdır – çözünürlükte 800×600 veya 1024×768 veya başka bir kombinasyon. Bir geliştirici bazı verileri depolamak ve analiz etmek isterse, bu bilgiyi bir tür matrise yerleştirmek uygundur. matrisler ayrıca kriptografi, siber güvenlik, oyun, grafik, robotik, kinematik ve CBS – Liste uzayıp gidiyor.

Etrafınıza bakarsanız, bir takvimdeki tarihler aslında bir matristir; klavye bir tuş matrisidir; bir şehrin yol ağı bile bir matristir. Yani ızgara şeklinde yaydığınız her şey aslında bir matristir. Bu, matematiksel nüanslara uygun olmayan sağduyulu bir anlayıştır. Matematiksel tanımlar bazen oldukça yoğun ve anlaşılması zor olabilir. Bu aşırı basit açıklama, matematiğin nüanslarına girmekten çok sağduyulu bir yaklaşıma dayanır. Mesele şu ki, bir şeyi matris şeklinde temsil ettiğinizde, analiz etmek daha kolay hale geliyor. Aslında bu, hesaplamada veya başka herhangi bir disiplinde bir matrisin neden kullanıldığının özüdür.

Programlama ve yazılım geliştirmede, bir matris, bir dizi yardımıyla temsil edilir – her öğeye, ile başlayan bir dizin değeri aracılığıyla erişilen doğrusal bir bitişik bellek tahsisi. 0. Dizi ayrıca, uzunluğunu temsil eden kendisiyle ilişkilendirilmiş bir boyuta sahip olmalıdır. Bir matrisin hem satırları hem de sütunları olduğundan, boyutu her iki satır uzunluğunu da temsil etmelidir. ve sütun uzunluğu, örneğin – 3×4, 5×5veya 6×2 matrisler. Satır ve sütunların uzunlukları aynı ise buna denir. Kare matris. Farklı matris türleri vardır, ancak kare matrisler çalışmak için en uygun olanıdır ve hesaplamada yaygın olarak kullanılır. Aslında, herhangi bir matris, eklenerek bir kare matrise dönüştürülebilir. 0s herhangi bir değer içermeyen hücrelere.

Okumak: Geliştiriciler için Proje Yönetim Yazılımı

Go’da Matrix Kullanma Kuralları

Matrislerle ilgili bazı temel hesaplamalar şunlardır: ilaveçıkarma ve çarpma işlemi. Başka işlemler olmasına rağmen, basit tutmak için sadece bu üç temel matematiksel işleme odaklanacağız. Bu işlemler ve işleçlerle ilgili kurallar aşağıdaki gibidir:

  • İki matrisin toplama ve çıkarma işlemlerinde sütun ve satır (boyut) sayısı her iki matris için de aynı olmalıdır.
  • Çarpma için, birinci matrisin sütun sayısı, ikinci matrisin satır sayısı ile aynı olmalıdır, aksi takdirde çarpma mümkün değildir.
  • Bir matrisi diğerine bölmek için iki şey yapmamız gerekir: bir matrisin tersini bulmamız (sadece kare matrislerin tersinin olabileceğini unutmayın) ve matrisi ters çevirdikten sonra çarpmanın aşağıdakine göre mümkün olması gerekir. kural 2.

Not: Matris bölümü çok daha karmaşıktır ve kendi başına eksiksiz bir yazıya ihtiyaç duyar – bunu ayrı bir Go eğitiminde ele almamız gerekecek. Burada, sadelik ve kısalık adına, sadece yukarıdaki üç temel işleme odaklanacağız.

Go’da Matrisler Nasıl Toplanır ve Çıkarılır

İki matrisi toplamak ve çıkarmak için bir Golang kodu yazalım. AddMatrix ve alt matris argümanları olarak iki 2B dilim alan, bir hesaplama yapan ve ardından başka bir 2B dilim olan sonuçtaki matrisi döndüren. Hesaplamayı yapmadan önce matrisleri bazı rastgele değerlerle dolduracağız. Ayrıca, tüm amaçlar için kare matrisleri kullanacağımızı unutmayın.

Go'da Matris Toplama ve Çıkarma

package main

import (
	"fmt"
	"math/rand"
	"time"
)

func AddMatrix(matrix1 [][]int, matrix2 [][]int) [][]int {
	result := make([][]int, len(matrix1))
	for i, a := range matrix1 {
		for j, _ := range a {
			result[i] = append(result[i], matrix1[i][j]+matrix2[i][j])
		}
	}
	return result
}

func SubMatrix(matrix1 [][]int, matrix2 [][]int) [][]int {
	result := make([][]int, len(matrix1))
	for i, a := range matrix1 {
		for j, _ := range a {
			result[i] = append(result[i], matrix1[i][j]-matrix2[i][j])
		}
	}
	return result
}

func populateRandomValues(size int) [][]int {

	m := make([][]int, size)
	for i := 0; i < size; i++ {
		for j := 0; j < size; j++ {
			m[i] = append(m[i], rand.Intn(10)-rand.Intn(9))
		}
	}
	return m
}

func main() {
	rand.Seed(time.Now().Unix())
	var size int
	fmt.Println("Enter size of the square matrix: ")
	fmt.Scanln(&size)
	x1 := populateRandomValues(size)
	x2 := populateRandomValues(size)

	fmt.Println("matrix1:", x1)
	fmt.Println("matrix2:", x2)

	fmt.Println("ADD: matrix1 + matrix2: ", AddMatrix(x1, x2))
	fmt.Println("SUB: matrix1 - matrix2: ", SubMatrix(x1, x2))	
}


Bu, entegre geliştirme ortamınızda (IDE) veya kod düzenleyicinizde çalıştırdığınızda aşağıdaki çıktıyla sonuçlanır:

Matrix Programlama eğitimine gidin

Okumak: Go’da Çöp Toplama Anlama

Go’da Matris Çarpımı

Go’da matris çarpımı biraz karmaşıktır. Yukarıdaki kurallarda belirtildiği gibi, matris çarpımı ancak iki matrisin sütun ve satır sayısı aynıysa mümkündür. Amacımız için kare matris kullandığımız için burada bir sorun yok; adında bir fonksiyon daha ekleyeceğiz MulMatrix yukarıdaki programa

Go'da Matris Çarpımı için Eğitim

func MulMatrix(matrix1 [][]int, matrix2 [][]int) [][]int {
	result := make([][]int, len(matrix1))
	for i := 0; i < len(matrix1); i++ {
		result[i] = make([]int, len(matrix1))
		for j := 0; j < len(matrix2); j++ {
			for k := 0; k < len(matrix2); k++ {
				result[i][j] += matrix1[i][k] * matrix2[k][j]
			}
		}
	}
	return result
}

func main() {
	//...
	fmt.Println("MUL: matrix1 * matrix2: ", MulMatrix(x1, x2))	
}

Bir kez daha, bu çıktıyla sonuçlanır:

Golang Matris Çarpımı

Go’da Bir Matrisin Nasıl Temsil Edileceğine İlişkin Son Düşünceler

Gördüğümüz gibi, Go’da dilimli bir matrisi temsil etmek oldukça basittir. Bir dilim, bir dizi kadar basit olarak ele alınabilir, değerine indeksler yardımıyla erişilir; ancak, statik dizilerin üzerinde sağladığı esneklik nedeniyle Go’da bir dilimin daha sık kullanıldığını anlayın. Matrisler, iki boyutlu diziler veya dilimlerle temsil edilir. Sayısız işlemle hesaplamada sayısız kullanımları vardır. Toplama, çıkarma ve çarpma sadece başlangıçtır.

Devamını oku Programlama eğitimlerine ve yazılım geliştirme kılavuzlarına gidin.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.