///
/// Untuk mendapatkan matriks transpost dari suatu matriks
///
///
///
///
///
public double[,] getTranspost(double[,] data)
{
double[,] hasil = new double[data.GetLength(1), data.GetLength(0)];
for (int i = 0; i < data.GetLength(0); i++)
{
for (int j = 0; j < data.GetLength(1); j++)
hasil[j, i] = data[i, j];
}
return hasil;
} ///
/// Digunakan untuk mencari nilai determinan
/// Mnggunakan metode eliminasi Gauss
///
///
public void segitigaAtas(double[,] A)
{
determinan = 1;
int jumlah = A.GetLength(0);
/// Merubah matriks menjadi matriks segitiga atas
for (int x = 0; x < jumlah - 1; x++)
{
for (int y = (x + 1); y < jumlah; y++)
{
double tampung = A[x, y] / A[x, x];
for (int z = x; z < jumlah; z++)
A[z, y] = A[z, y] - (tampung * A[z, x]);
}
}
/// Menghitung nilai determinan
for (int i = 0; i < jumlah; i++)
{
determinan *= A[i, i];
}
}
///
/// Create sebuah matriks identitas dengan ordo n*n
///
///
private void Identitas(int n)
{
identitas = new double[n, n];
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
if (i == j)
identitas[i, j] = 1;
else
identitas[i, j] = 0;
}
}
}
///
/// Digunakan untuk menghitung invers matriks ordo n*n
/// Menggunakan metode Eliminasi
///
///
public void toIdentitas(double[,] A)
{
int jumlah = A.GetLength(0);
identitas = new double[jumlah, jumlah];
Identitas(jumlah);
for (int x = 0; x < jumlah; x++)
{
for (int y = 0; y < jumlah; y++)
{
if (x != y)
{
double tampung = A[x, y] / A[x, x];
for (int z = 0; z < jumlah; z++)
{
A[z, y] -= (tampung * A[z, x]);
identitas[z, y] -= (tampung * identitas[z, x]);
}
}
}
}
for (int x = 0; x < jumlah; x++)
{
double bagi = A[x, x];
for (int y = 0; y < jumlah; y++)
{
identitas[y, x] /= bagi;
}
}
}
///
/// Menghitung operasi penjumlahan/pengurangan pada matriks
///
///
Matriks A
///
Matriks B
///
Operasi +/-
public void plusMinus(double[,] A, double[,] B, string operasi)
{
hasil = new double[A.GetLength(0), A.GetLength(1)];
for (int i = 0; i < A.GetLength(0); i++)
{
for (int j = 0; j < A.GetLength(1); j++)
{
if (operasi == "+")
hasil[i, j] = A[i, j] + B[i, j];
else
hasil[i, j] = A[i, j] - B[i, j];
}
}
}
///
/// Manghitung operasi perkalian pada Matriks
///
///
Matriks A
///
Matriks B
public void kali(double[,] A, double[,] B)
{
hasil = new double[A.GetLength(0), B.GetLength(1)];
for (int x = 0; x < A.GetLength(0); x++)
{
for (int y = 0; y < B.GetLength(1); y++)
{
for (int z = 0; z < A.GetLength(1); z++)
hasil[x, y] += (A[x, z] * B[z, y]);
}
}
}
///
/// Menghitung operasi perkalian kronecker product
///
///
///
public void kronecker(double[,] A, double[,] B)
{
int baris = A.GetLength(0) * B.GetLength(0);
int kolom = A.GetLength(1) * B.GetLength(1);
hasil = new double[baris, kolom];
for (int a = 0; a < B.GetLength(0); a++)
{
for (int b = 0; b < B.GetLength(1); b++)
{
for (int c = 0; c < A.GetLength(0); c++)
{
for (int d = 0; d < A.GetLength(1); d++)
hasil[c + a * A.GetLength(0), d + b * A.GetLength(1)] = A[c, d] * B[a, b];
}
}
}
}
Sekian gan dari ane, klo ada yg kurang jelas silahkan lngsung tanya aja di komentar ny gan, klo emang udah ngerti ALhamdulillah gan. Dan kalo ada kesalahan/ ada yg bisa mmberi algoritma yg lebih mudah dan efektif, mari di share gan. Ane juga manusia yg ga lepas dari salah gan...
Tidak ada komentar:
Posting Komentar