PDA

View Full Version : help tugas bikin perkalian matrix


omi
11-11-2006, 10:36 PM
help, ada yg tahu ga gimana bikin perkalian matrix? kl penjumlahan udah ada, disini gw menggunakan array
yg gw bingung gimana membuat proses perkalian matix-nya ini, kl cuma diatas kertas si gw tahu, ini harus di tuangkan menjadi prog.
Mana pengetahuan ttg array baru dapet ini juga >_<

nospacebar
11-11-2006, 11:12 PM
Kalo tau teorinya, harusnya gak terlalu susah diaplikasikan ke komputer.
C yah?

Gwa udah lama gak megang.
Teorinya apa? Mungkin gwa bisa bantu.

*lupa perkalian matrix*

0600661160
12-11-2006, 01:54 AM
help, ada yg tahu ga gimana bikin perkalian matrix? kl penjumlahan udah ada, disini gw menggunakan array
yg gw bingung gimana membuat proses perkalian matix-nya ini, kl cuma diatas kertas si gw tahu, ini harus di tuangkan menjadi prog.
Mana pengetahuan ttg array baru dapet ini juga >_<
Hm...
bukannya matrix itu pakenya array 2 dimensi?

omi
12-11-2006, 09:15 AM
teorinya kita musti mengkalikan dan menambahkan setiap baris di matrik A dengan kolom di matrix B, nah gw bingung masupin perintah x dan + secara bersamaan pada saat itu juga dia harus mengecek array-nya

@ 0600661160 : mmg pake 2 dimensi, nampilinnya doank bisa, tapi proses perkaliannya ga isa ::arg!::

nospacebar
12-11-2006, 03:02 PM
Hasil perkalian disimpan dulu di variabel temp yang dijumlahkan dengan hasil perkalian berikutnya, sampai satu baris itu selesai.

NT Saber
13-11-2006, 12:11 AM
Logika perkalian matriks tuh Baris kali kolom. Jadi hasil 1,1 tuh dari baris 1 kali kolom 1....

omi
13-11-2006, 12:03 PM
NT saber : iya itu dia, tiap kolom kan ada isinya nah satu2 musti dikali terus ditambah dst, susah jelasiinya. Gimana perintahnya ya? gw pake C++ apa pake for? tapi digimnain?

Shaka_RDR
13-11-2006, 12:30 PM
NT saber : iya itu dia, tiap kolom kan ada isinya nah satu2 musti dikali terus ditambah dst, susah jelasiinya. Gimana perintahnya ya? gw pake C++ apa pake for? tapi digimnain?


kasih contoh perkalian matrix 3x3 dulu donk.
ntar gw bikinin programnya pake C.
masalahnya tuh gw udah lupa gimana cara perkalian matrix :P

atau klo mau belajar : http://www.comp.nus.edu.sg/~stevenha/
cari bagian matrix chain multiplication., gw udah lama kaga maen ACM jadi udah lupa.

nospacebar1985
13-11-2006, 06:37 PM
Gwa ingat, tapi gwa lupa cara inisialisasi matrix 2D di C :P

omi
14-11-2006, 07:46 AM
@ shaka : hmm ini gw attach aja contohnya, kl di post takut posisinya ancur2an
@ nospacebar1985 : maksudnya ngebuat matrix-nya? udah tuh, tinggal.. ya itu chain proses utk memproses array-nya, kl nilai-nya cuma 1 doank (bukan array akan gw coba akalin)

Shaka_RDR
14-11-2006, 09:21 AM
ok deh, gw udah nyambung , btw, ini max dimensinya berapa yah ?
matrix kan dimensinya axb dan mxn , dimana matrix yang bisa dikalikan itu harus b=m.
itu harus gw validasiin atau nggak ?
trus apakah parameter yang gw kirim itu matrix1,matrix2, a,b,n ?

Shaka_RDR
14-11-2006, 10:23 AM
oii Omi...
matrix yang u kasih salah hitung tuh..
pantesan dari tadi gw trace coding gw sampe butek kaga ketemu salah dimana , koq bisa beda hasilnya dengan contoh yang u kasih >.<

hasil akhir matrix u seharusnya :
6 6 6
12 12 12
18 18 18

btw, ini codenya gw attach, tinggal u ubah jadi .c aja yah

nospacebar
14-11-2006, 04:28 PM
Kalo mau inisialisasi matrix 2D gimana yah di C?
Misalnya :
matrix A =
1 2 3
4 5 6
7 8 9

Lupa beneran ;D

omi
15-11-2006, 06:49 AM
@ shaka : err.. bentar gw pelajari dulu ^^ wah salah itu toh? grr ::arg!:: gw emang bolot soal matematika
@ nospacebar : maksudnya bikin matrix? tinggal di deklarasi aja mis variabel A[3][3] (baris 3, kolom 3).. err pake integer
entar terus di-loop masukkinnya pake for.

Sebenernya semester lalu pernah diajarin bikin pola spt
* * * *
* * * *
* * * *
* * * *

atau

1
1 2
1 2 3
1 2 3 4

sumpah gw sempet buntu pas "nested for" ini
sekarang diganti dengan matrix, pada dasarnya sama aja cuma tambah bingung

Shaka_RDR
15-11-2006, 09:49 AM
Kalo mau inisialisasi matrix 2D gimana yah di C?
Misalnya :
matrix A =
1 2 3
4 5 6
7 8 9

Lupa beneran ;D


int a[3][3] = {{1,2,3},{4,5,6},{7,8,9}};



;D busyet dah loe bar... kuliah sekian lama malah lupa pelajaran basic ;D

@omi :
codingnya udah bener kan ?
semoga ga ada kesalahan, gw buat berdasarkan apa yang gw inget utk perkalian matrix :D

nospacebar
15-11-2006, 02:06 PM
Nah, itu dia ;D
Gwa udah 2 tahun gak pernah ngoding lagi.
Banyakan ngemeng daripada ngoding ;D

omi
16-11-2006, 12:49 AM
ara.. sorry baru reply lagi, udah gw pelajari itu elu pake "fungsi" ya? berhubung gw blm begitu ngerti amat jadi gw masupin aja langsung dalam chain-nya..

bentar gw mo curhat dikit, sumpah deh ini mata kuliahnya mustinya dikasih pas semester 2 kemaren pas dapet algortima 2 yg kebetulan membahas array, fungsi, sort ampe search
dasar dodol negh yg nyusun kurikulum, shaka pindah ngajarin gw aja disni ::hihi:: .. ah udah curhat-nya ;D back to topic

tapi ada variable yg "nongol sendiri"
void main()
{
int A[3][3],B[3][3],c[3][3],i,j,k,a,n;

clrscr();

//masukkan matrix A
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
printf("input data matrix A[%i][%i] : ",i+1,j+1);
fflush(stdin);scanf("%i",&A[i][j]);
}
}

//cetak matrix A
printf("\n matrik A\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
printf("%6i",A[i][j]);
}
printf("\n");
}
printf ("\n");

//masukkan matriks B
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
printf("input data matrix B[%i][%i] : ",i+1,j+1);
fflush(stdin);scanf("%i",&B[i][j]);
}
}

//cetak matrix B
printf("\n matrik B\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
printf("%6i",B[i][j]);
}
printf("\n");
}
printf ("\n");

for (i=0;i<a;i++)
{
for (j=0;j<n;j++)
{
c[i][j]=0;
for (k=0;k<a;k++)
{
c[i][j]+= A[i][k]*B[k][j];
}
}
}

for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
printf("%6i",c[i][j]);
}
printf("\n");
}
printf ("\n");
getch();
}

}
pada for (i=0;i<a;i++) itu varibel a-nya utk yg mana? sebab ga ada yg mematok utk "a"
pas gw ganti dengan numerik, gw asumsikan aja 3 karena matrix 3x3, mau jalan dia tapi hasilnya

6 12 18
6 12 18
6 12 18

oh iya maksudnya += itu apa ya? gw cuma tahu ++ itu bisa ditulis +1, chain proses-nya itu lhoo..

@ nospacebar : belajar lagi gih biar kl pas ada yg nanya ga cuma garuk2 kepala ;D

nanya dikit, C++ ini entar bisa digabungnkan dengan apa ya database-nya? soalnya tugas akhir kuliah ini adalah membuat kamus sederhana
mohon bantuannya :D

nospacebar
16-11-2006, 12:58 AM
Fungsinya gak bisa langsung dimasukin ke chain [maksudnya void main() ?] gitu aza.
a += b sama aza dengan a = a + b


#include <stdio.h>
#include <conio.h>




void kaliMatrix(int A[3][3],int B[3][3],int a,int b,int n)
{
int c[3][3];
int i,j,k,l,temp;

for (i=0;i< a;i++)
{
for (j=0;j< n;j++)
{
c[i][j]=0;
for (k=0;k< a;k++)
{
c[i][j]+= A[i][k]*B[k][j];
}
}
}

for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
printf("%6i",c[i][j]);
}
printf("\n");
}
printf ("\n");
getch();
}

void main()
{
int A[3][3],B[3][3],X[3][3],i,j;
clrscr();

//masukkan matrix A
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
printf("input data matrix A[%i][%i] : ",i+1,j+1);
fflush(stdin);scanf("%i",&A[i][j]);
}
}

//cetak matrix A
printf("\n matrik A\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
printf("%6i",A[i][j]);
}
printf("\n");
}
printf ("\n");

//masukkan matriks B
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
printf("input data matrix B[%i][%i] : ",i+1,j+1);
fflush(stdin);scanf("%i",&B[i][j]);
}
}

//cetak matrix B
printf("\n matrik B\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
printf("%6i",B[i][j]);
}
printf("\n");
}
printf ("\n");

kaliMatrix(A,B,3,3,3);
}


Database kamus? Pake file text aza udah cukup kan?

Shaka_RDR
16-11-2006, 09:52 AM
@omi :
oh iye gw lupa jelasin, berhubung gw waktu itu di panggil boss utk dikasih kerjaan baru ;D makanya gw akhirnya memutuskan utk coding kilat dalam 5 menit jadilah gw ga sempet validasi apakah array u itu valid or kaga.

yang pasti klo array yang u mau kaliin adalah axb serta mxn dimana b=m , maka perkalian matrix yang gw buat akan mengalikan sebanyak a baris , dan a kolom. jadi klo nilai a != n, bisa kacau :D

utk kamus, buat pake file.txt aja.
utk fungsinya gunakan fopen , fclose, fprintf, fscanf, fseek. itu doank, jangan pake yang lain lagi seperti fwrite, fread,dll klo misalnya blon ahli soal file dalam .C

Shaka_RDR
17-11-2006, 11:29 AM
eh, maaf... omi...
gw ada salah coding dalam program itu ;D
baru nyadar semalem saat lagi mandi (entah kenapa klo di WC otak lancar ;D)




for (i=0;i< a;i++)
{
for (j=0;j< n;j++)
{
c[i][j]=0;
for (k=0;k< b;k++)
{
c[i][j]+= A[i][k]*B[k][j];
}
}
}



seharusnya k limitnya itu sampe b , bukan sampe a seperti yang gw tulis.
jadi klo matrix u aXb dan mXn dengan b=m , ga ada masalah sama sekali dalam coding gw.
hanya itu doank.
utk matrix 3x3 u, hasil bakalan bener karena a=b=m=n.

ruboW
08-01-2007, 08:42 PM
weks.. gw mendadak mikir tentang inisialiasi (wah puyeng) matriks 4!! yg mana... kita harus jadiin 3 lalu hapus 1..

tapi wa tetep gagal mikir itu di waktu wa kuliah!?

lompat kemasalah berikutnya.. masih inget ama nih rumus

2x + 4Y = 56
3x + 5Y =100

keuntungan = 4x + 5Y
x,y berapa yang menghasilkan keuntungan terbesar

pertanyaannya.. ini pake rumus apa?? soalnya nanti ngak X,Y lagi.. bisa nambah jadi x,Y,Z

Shaka_RDR
26-01-2007, 03:42 PM
gw baru liat soal omi ngomongin matrix, jadi baru keliatan ;D
bisa pake Gauss Seidel, rumus dalam metode numerik, gw cariin dulu rangkuman gw yah

nospamy
27-01-2007, 05:15 PM
Coba pakai metoda simplex:

http://perso.orange.fr/jean-pierre.moreau/p_linear.html

ferrystitch
27-01-2007, 05:17 PM
bro kok pake gauss sidel?
bukan nya itu buat cari invers ato determinan (klo ga sala, gw jg lupa)::ngakak2::

kayanya klo perkalian matrik kan cuma baris kali kolom kan
seinget gw yg harus di perhatiin:
baris = kolom dan sebaliknya (harus)
2x3 * 3x2 bisa klo 3x2 * 4x3 ga bisa
trus pake perulangan bertingkat 2
yg pertama buat baris, yg kedua buat kolom
tersera lo mo ngitung baris dulu ato kolom dulu
mending bikin engine nya sendiri, biar bisa ukuran matrixnya tersera user

klo ada yang sala, mohon maap
maklum, masi cupu ::hihi::

nospamy
29-01-2007, 12:29 AM
Ini ada buku Online soal Gauss Seidel, Jacobi dll:

http://www.netlib.org/linalg/html_templates/node4.html

Ada juga perbandingan kode sumber:

http://www.leosingleton.com/projects/courses/math2601/lineq/

ruboW
03-02-2007, 02:14 PM
nospamy: thx.. simplex kayaknya tapi kl ada metode lain.. wa jg mau belajar donk.. ngak ada larangan khan!
gauss itu org apa ya?? maksudnya dari jurusan mana ya??

nospamy
04-02-2007, 09:44 AM
Ada lagi contoh program Solver Linear dengan kode sumber: CLP.

Juga ada modifikasi simplex yaitu dekomposisi Cholesky.

Lihat di bagian download:
http://www.coin-or.org

kocenkgaronk
10-09-2007, 12:40 PM
Aku pengen perkalian matriks 4x4 dan pseudokodenya ada ndak ya.. Aku keburu butuh neehh buat praktek C++

Shaka_RDR
10-09-2007, 02:41 PM
pake yg gw buatin didepan bisa koq.
tinggal arraynya diubah jadi 4x4 dan pemanggilan fungsinya kasih tau klo dimensinya 4.

7hun
11-09-2007, 04:17 PM
for (i=0;i< a;i++)
variable a di sini isinya berapa ?
hmm ............ sepertinya isinya ngga ada deh !

Shaka_RDR
12-09-2007, 02:44 PM
itu kan hasil passing parameter.
misalkan matrix A ukurannya jxk dan matrix B ukurannya pxq

maka variabel a = j
maka variabel b = q
dan variabel n = k = p. karena matrix yg bisa dikalikan haruslah memenuhi syarat jxk dan pxq dimana k = p.