METODE KOMPUTASI DAN LISTING PROGRAM ALGORITME PROGRAM a. Perhitungan tegangan dengan Metode Perkalian Diagonal 1. Memulai program dengan memasukkan fungsi #include<stdio.h> dan fungsi #include<math.h>. 2. Menginput jc, pv, i, j, k, jbA. 3. Memasukkan data matriks A serta jumlah baris atau kolom. 4. Memasukkan matriks A untuk i = 0 dimana i < jbA dan untuk j = 0 dimana j < jbA. 5. Pengoperasian OBE untuk membuat matrik segitiga atas, dimana sebelum dioperasikan persamaan dipivot dahulu (pv = k). 6. Untuk jc = 0 dimana jc < jbA+1 makan proses pertukaran data. Syarat jika komponen diagonalnya = 0 maka det = 0. 7. Menghitung determinan matrik. 8. Mencetak isi matriks A dan mencetak matriks OBE. 9. Menampilkan hasil operasi. 10. Menampilkan hasil arus matriks. 11. Mengakhiri program. b. Metode matriks LU untuk 1 Kolom Matriks Hasil 1. Memulai program dengan memasukkan fungsi #include<math.h> dan fungsi #include<stdio.h>. 2. Menampilkan daftar veriabel matriks segi empat dari nilai koefisien persamaan loop A [], matriks dekomposisi L [] dan U [] dimana I adalah matriks hasil. 3. Menginput i, j, k, jbA, pv, tm, jc, tb. 4. Memasukkan data matriks A beserta jumlah baris c (< 5). 5. Membandingkan dengan yang lebih besar. 6. Proses pertukaran data (jc = 0 dimana jc < jbA+1. 7. Menampilkan dekomposisi matriks dan mencetak isi matriks A. 8. Menampilkan matriks L dan matriks U. 9. Mensubtitusikan ke depan. 10. Hasil akhir.
11. Mengakhiri program. c. Metode Gauss Seidel 1. Memulai program dengan memasukkan fungsi #include<stdio.h> dan fungsi #include<math.h>. 2. Menginput jc, pv, i, j, k, jbA. 3. Memasukkan data matriks A serta jumlah baris atau kolom. 4. Memasukkan matriks A untuk i = 0 dimana i < jbA dan untuk j = 0 dimana j < jbA. 5. Memasukkan tebakan awal perhitungan 6. Memasukkan nilai error yang diharapkan 7. Menampilkan hasil operasi. 8. Menampilkan hasil arus matriks 9. Mengakhiri program.
d. Metode Iterasi Jacobi 1. Memulai program dengan memasukkan fungsi #include<stdio.h> dan fungsi #include<math.h>. 2. Menginput jc, pv, i, j, k, jbA. 3. Memasukkan data matriks A serta jumlah baris atau kolom. 4. Memasukkan matriks A untuk i = 0 dimana i < jbA dan untuk j = 0 dimana j < jbA. 5. Memasukkan elemen matriks b 6. Menampilkan hasil operasi. 7. Mengakhiri program.
FLOWCHART 1. Perhitungan Tegangan dengan Metode Perkalian Diagonal START
Masukkan jumlah baris/kolom
Masukkan nilai setiap elemen-elemen matriks perbaris
Membuat matriks segitiga atas dengan Operasi Baris Elementer (OBE)
Menghitung determinan matriks
Menampilkan hasil operasi dan determinan matriks
END
2. Metode matriks LU untuk 1 Kolom Matriks Hasil START
Masukkan jumlah baris
Masukkan nilai setiap elemen-elemen matriks perbaris untuk matriks A
Masukkan nilai setiap elemen-elemen matriks B
Membuat matriks L dan matriks U
Membuat invers matriks A
Mencari nilai I dari perkalian invers matriks A dengan matriks B (I= A-1B)
- Menampilkan matriks L dan matriks U - Menampilkan nilai I
END
3. Metode Gauss Seidel START
++) Input elemen matriks i=1; i<= n; j++ i=1; i <=n; i++
Masukkan (j=1; j <= n*2; j++) (i=1; i <= n; i (j=1; j <= n*2; j++) (i=1; i <= n; i++) (j=n+1; j <= n*2; j++)
Memasukkan elemen matriks b
Masukkan nilai error yang diharapkan
Menampilkan hasil
END
4. Metode Iterasi Jacobi START
++) Input elemen matriks i=1; i<= n; j++ i=1; i <=n; i++
Masukkan (j=1; j <= n*2; j++) (i=1; i <= n; i (j=1; j <= n*2; j++) (i=1; i <= n; i++) (j=n+1; j <= n*2; j++)
Memasukkan elemen matriks b
Masukkan nilai error yang diharapkan
Menampilkan hasil
END
LISTING PROGRAM a. Perhitungan Determinan dengan Metode Perkalian Diagonal #include #include <stdio.h> #include <math.h> int main() { int jc, pv, i, j, k, jbA; float tm, det, mat, A[15][15], B[15][15]; printf(" \n Masukkan data matriks A"); printf(" \n jumlah baris / kolom (<15) : "); scanf(" %i", &jbA); for (i=0;i<jbA;i++)
{ for (j=0;j<jbA;j++) { printf(" input A[%i][%i]: ", i+1, j+1); fflush(stdin); scanf("%f", &A[i][j]); B[i][j]=A[i][j]; } printf(" \n"); } for (k=0;k<jbA;k++) { pv=k; for (j=k+1;j<jbA;j++) { if (sqrt(pow(B[pv][k],2))< sqrt(pow(B[j][k],2))) { pv=j; } } if (pv!=k) { for (jc=0;jc<jbA+1;jc++) { tm=B[k][jc]; B[k][jc] = B [pv][jc]; B[pv][jc] = tm; } } if (B[k][k]==0) { goto det0; } for
(i=k+1;i<jbA;i++)
{ mat=B[i][k]/ B[k][k]; for(j=k;j<jbA;j++) { B[i][j]=B[i][j] - B[k][j]*mat;
} } } det = 1; for (i=0;i<jbA;i++) { det=det*B[i][i]; } printf(" \n\n"); printf("matriks A = \n"); for (i=0;i<jbA;i++) { for (j=0;j<jbA;j++) { printf(" %f ", A[i][j]); printf(" "); } printf("\n"); } printf("\n hasil operasi \n"); for(i=0;i<jbA;i++) { for (j=0;j<jbA;j++) { printf("%f",B[i][j]); printf(" "); } printf("\n"); } printf("\n"); printf(" \n determinan matriks = %f ", det); if (det==0) { det0: printf("\n matriks singular "); } getch(); return 0; }
b. Metode matriks LU untuk 1 Kolom Matriks Hasil #include <math.h> #include <stdio.h> #include /*daftar variabel A[]
:
matriks
segi
empat
dari
nilai
persamaan Loop L[],U[]
: mtriks dekomposisi
i : matrik hasil*/ float A[5][5]; float B[5][5]; float L[5][5],U[5][5]; float b[5]; float x1[5]; int i,j,k,jbA,pv,tm,jc,tb; int main () { printf ("\nMasukkan Data matriks A:"); printf("\nJumlah Baris c(<5):"); scanf("%i",&jbA); for (i=0;i<jbA;i++) { for (j=0;j<jbA;j++) { printf("Input A[%i][%i]:",i+1,j+1); fflush (stdin); scanf("%f",&A[i][j]); } } for (i=0;i<jbA;i++) { printf("Input B[%i]:",i+1); fflush (stdin); scanf("%f",&b[i]); } for (i=0;i<jbA;i++) { for(j=0;j<jbA;j++) {
koefisien
B[i][j]=A[i][j]; } } //pivot pv=k; for (j=k+1;j<jbA;j++) { if(sqrt(pow(B[pv][k],2))<sqrt(pow(B[j][k],2))) //membandingkan yang lebih besar { pv=j; } } if (pv!=k) { for(jc=0;jc<jbA+1;jc++) //proses penukaran data { tm=B[k][jc]; B[k][jc]=B[pv][jc]; B[pv][jc]=tm; } tb=b[k]; b[k]=b[pv]; b[pv]=tb; } for (i=0;i<jbA;i++) { for (j=0;j<jbA;j++) { A[i][j]=B[i][j]; } } //dekomposisi matriks for
(i=0;i<jbA;i++)
U[i][j]=A[i][j]; for (i=0;i<jbA;i++) L[i][i]=1.0; for (k=0;k<jbA-1;k++) for (j=k+1;j<jbA;j++)
for
(j=0;j<jbA;j++)
{ L[j][k]=U[j][k]/U[k][k]; for(i=k;i<jbA;i++)
U[j][i]=U[j][i]-
L[j][k]*U[k][i]; } /**Cetak isi matriks A**/ printf("
\n\n");
printf("Matriks A
= \n\n");
for(i=0;i<jbA;i++) { for(j=0;j<jbA;j++) { printf("%f",A[i][j]); printf("
");
} printf("\n"); } printf("matriks [L]\n"); for (i=0;i<jbA;i++) { for(j=0;j<jbA;j++) printf("%10.4f",L[i][j]); printf("\n"); } printf("matriks [U]\n"); for (i=0;i<jbA;i++) { for(j=0;j<jbA;j++) printf("%10.4f",U[i][j]); printf("\n"); } //substirusi ke depan for (i=0;i<jbA;i++) for(j=0;j
b[i]=b[i]-L[i][j]*b[j];
//substitusi ke belakang b[jbA-1]=b[jbA-1]/U[jbA-1][jbA-1]; for(i=jbA-2;i>=0;i--) { for(j=i+1;j<jbA;j++)b[i]=b[i]-U[i][j]*b[j]; b[i]=b[i]/U[i][i]; }
printf ("Hasil akhir\n"); for(i=0;i<jbA;i++) printf("i[%2d] = %g\n",i,b[i]); getch();
HASIL DAN PEMBAHASAN 1. Menghitung nilai tegangan setiap resistor yang ada pada rangkaian. Persamaan dari rangkain pada tugas praktikum 1 adalah: Loop 1: 7I1 + 3I2 = 7 Loop 2: 3I1 + 20I2 -7I4 = -5 Loop 3: 10I3 = -4,3 Loop 4: 27I4 -7I2= 0 Sehingga matriksnya 7 3 [ 0 0
3 0 0 I1 7 20 0 −7 I2 5 ][ ] = [ ] 0 10 0 I3 4,3 0 −7 0 27 I4 1. Menggunakan metode gauss seidel Arus I1 = 0,9486
I3 =0,4300
I2 =0,1186
I4 =0,0307
Tegangan V1=I1xR1= 0,9486x4=3,7944
V4=(I2+I3)xR4= 0,4300x10=4,3
V2=I2xR2=0,1186x3=0,3558
V5=I4xR5=0,0307x20=0,614
V3=I2xR3=0,1186x7=0,8302 2. Menggunakan metode iterasi jacobi Hasil menggunakan iterasi jacobi nilai I1,I2,I3, dan I4 adalah error 3. Menggunakan metode invers Invers matriks 0,153726 −0,0253601 [ 0 −0,00657483 0,9492815 0,11834698 =[ ] 0,43 0,03068269
−0,0253601 0,0591735 0 0,0153413
0 −0,00657483 7 0 0,0153413 5 ]𝑥[ ] 0,1 0 4,3 0 0,0410144 0
Sehingga didapatkan Arus I1 = 0,9492815
I3 =0,43
I2 =0,11834698
I4 =0,03068269
Tegangan V1=I1xR1=0.9492815x4=3,797126 V2=I2xR2=0.1183468x3=0,3550404 V3=I2xR3=0.1183468 x7=0,8284276 V4=(I2+I3)xR4= 0,43x10=4,3 V5=I4xR5=0.03068269x20=0,613738 4. Menggunakan metode LU Arus I1 = 0,94928
I3 =0,43
I2 =0,118347
I4 =0,0306825
Tegangan V1=I1xR1= 0,94928x4=3,79712 V2=I2xR2=0,118347x3=0,355041 V3=I2xR3=0,118347x7=0,828429 V4=(I2+I3)xR4= 0,4300x10=4,3 V5=I4xR5=0,0306825x20=0,61365
2. Titik 1
: -F1 cos 450 – F2 = 0.....(1) 20 + F1 cos 45 = 0.....(2)
Titik II
: 5 – F3 = 0 F3=5
Titik III
: 15 – F3 – F1 cos 450=0.....(3) -F3-F1 cos 450 – F6 cos 450 -F4=0......(4)
Titik IV
: 5 – F7 – F6 cos 450=0.....(5)
Titik V
: 10 - F7 –F9 cos 450=0.....(6) -F7 – F9 cos 450 – F4=0.......(7)
Titik VI
: 20 + F9 cos 450=0......(8)
-F9 cos 450-F8=0......(9) Cos 450= 0,707 −0,707 −1 0 0 0 0,707 0 0 0 0 −0,707 0 −1 0 0 −0,707 0 −1 −1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 −1 0 0 0 0 0 0 [ 0 0 0 0 0
0 0 0 −0,707 −0,707 0 0 0 0
0 0 0 𝐹1 0 0 0 0 𝐹2 −20 0 0 0 𝐹3 −15 0 0 0 𝐹4 0 −1 0 0 𝐹5 = −5 −1 0 −0,707 𝐹6 −10 −1 0 −0,707 𝐹7 0 0 0 0,707 𝐹8 −20 0 −1 −0,707] [𝐹9] [ 0 ]
Menggunakan metode metode Iterasi jacobi didapatkan nilai F yaitu: F1 = nan F2 = -inf F3 = -inf F4 = nan F5 = -inf F6 = 14,1443 F7 = -0 F8 = -28,2885 F9 = nan
Pada tugas eksperimen 1, yaitu menghitung tegangan setiap resistor yang ada pada rangkaian pada Gambar 1 dan menyelesaikannya dengan metode gauss seidel, iterasi Jacobi, invers, dan LU. Pada gambar rangkaian, di lakukan analisis Loop yang kemudian akan di bagi menjadi tiga bagian Loop yaitu Loop I, Loop II, Loop III dan Loop IV. Dari masing-masing Loop tersebut akan dihasilkan empat bentuk
persamaan, yaitu persamaan (1), (2), (3), dan (4) yang kemudian akan dimasukkan ke dalam bentuk matriks. Bentuk matriks tersebut kemudian diselesaikan sehingga di peroleh nilai Arus (I). Nilai tegangan pada masing-masing resistor akan didapatkan dengan menggunakan rumus V = R I. Nilai pada V1 = 3,7944 volt, V2 = 0,3558 volt, V3 = 0,8302 volt, V4 = 4,3 volt, V5 = 0,614. Namun terjadi perbedaan hasil antara perhitungan manual dengan perhitungan program. Mungkin dikarenakan ada kesalahan dalam perhitungan manual yang dilakukan oleh praktikan. Pada tugas eksperimen 2 yaitu menuliskan persamaan matematis untuk 6 titik rangkaian baja 2D pada Gambar 2. Rangkaian baja 2D tersebut dirancang untuk dapat kuat menahan gaya-gaya yang mengenainya, setiap batang rangka mempunyai panjang 1 m untuk yang berposisi horizontal dan vertical, sedangkan untuk yang miring panjangnya adalah m. Analisis matematis untuk rangka yang ditunjukkan oleh Gambar 2 bertujuan untuk mengetahui besar nilai-nilai gaya yang terdapat pada setiap penopangnya dengan di tambah pengaruh gaya dari luar. Untuk menganalisis system ini hanya memerlukan hokum Newton 1, yaitu analisis matematis Gambar 2 hubungan antara F1 dan F2 pada titik yang ditunjukkan oleh panah.
KESIMPULAN Kesimpulan yang dapat di tarik dari praktikum penyelesaian persamaan linier ini adalah determinan matriks dapat diselesaikan dengan begitu banyak variasi cara dan metode. Seperti pada praktikum ini, persamaan linier diselesaikan dengan menggunakan metode matriks segitiga atas atau bawah. Selain itu, persamaan linier juga dapat diselesaiakan dengan menggunakan metode dekomposisi LU, Gauss, dan Gauss Jordan.