Professional Documents
Culture Documents
= + +
`
= + +
= + +
)
dengan V dan R adalah konstanta dan I adalah empat variabel yang akan dicari.
Kemudian representasi matriksnya adalah:
1 5 6 6 5 1 1
6 2 6 7 7 2 2
7 3 7 8 8 3 3
5 8 4 5 8 4 4
0
0
0
0
X B
A
R R R R R I V
R R R R R I V
R R R R R I V
R R R R R I V
+ + | || | | |
| | |
+ +
| | |
=
| | |
+ +
| | |
| | |
+ +
\ \ \
Dengan memberi nama A, X, dan B pada ketiga matriks tersebut, kita akan
mendapatkan persamaan yang sama dengan dasar teori. Metode penguraian
matriks kemudian dapat dilakukan secara analitik untuk menemukan persamaan
kanonik sehingga persamaan linear dapat diselesaikan secara numerik. Berikut ini
adalah persamaan kanonik yang ditemukan dari hasil analitik:
Untuk matriks L:
1 1 2 2
...
ij i j i j in nj
ij
jj jj jj jj
a l u l u l u
l
u u u u
= dengan n=j-1
dan jika i=jl
ij
=1
jika i<jl
ij
=0
Untuk matriks U:
1 1 2 2
...
ij i j i j in nj
ij
ii ii ii ii
a l u l u l u
u
l l l l
= dengan n=i-1
dan jika i>jl
ij
=0
Untuk matriks Y:
1 1 11 2 21 1
1
...
p p p pn n
p
pp pp pp pp
v l y l y l y
y
l l l l
= dengan n=p-1
Untuk matriks X (matriks yang berisi solusi dari persamaan linear):
( ) ( ) 1 1 1 1 1 1
1
...
q n n q qn n qm m
q
qq qq qq qq
u x
y u x u x
x
u u u u
=
dengan
m=q+1
n=jumlah baris matriks x, atau nilai maksimum dari q.
R
1
R
2
R
3
R
4
R
5
R
6
R
7
R
8
V
1
V
2
V
3
V
4
I
1
1 1 1 1 1 1 1 1 1 1 1 1 1
100 100 100 100 20 20 20 20 5 5 5 5 0,05
1000 12 14 15 32 42 12 12 1 23 14 51 0,05
10
4
1 1 1 1 1 1 1 1 1 1 1 0,00
4. Analisis
Metode penguraian matriks ini memerlukan proses analitik yang panjang. Untuk
matriks-matriks sederhana, metode ini tidaklah efisien. Untuk matriks dengan
orde tinggi, metode ini sangatlah berguna dan bila diaplikasikan ke pemrograman,
sangat praktis untuk digunakan. Pencarian rumus kanonik dapat dilakukan pada
matriks sederhana seperti 3x3 atau 4x4, kemudian diaplikasikan untuk matriks
yang lebih kompleks seperti 5x5 atau nxn. Semakin tinggi orde dari matriks,
semakin membutuhkan ketelitian dan ketekunan yang tinggi.
Pada rumus kanonik untuk matriks U dan L, kita dapat melihat bahwa penggunaan
komponen matriks U dan L dilakukan per komponen matriks. Artinya, kita tidak
bisa memperoleh seluruh komponen matriks L tanpa menghitung matriks U, dan
sebaliknya. Dapat kita katakan bahwa formulasi kanonik untuk matriks U dan L
saling bergantung satu sama lain, sehingga pencarian komponennya pun harus
secara simultan. Berbeda dengan pencarian matriks Y dan X yang tidak saling
bergantung sehingga kita dapat mencari matriks Y terlebih dahulu untuk
menemukan solusi yang terkandung pada matriks X.
Untuk nilai hambatan dan tegangan. Kita mendapatkan bahwa arus di hambatan
satu akan mendekati nol ketika hambatan diperbesar.
5. Kesimpulan
Metode numerik yang digunakan untuk menyelsaikan sistem persamaan linear
sangatlah bermanfaat untuk diaplikasikan ke matriks orde tinggi. Hal ini karena
persamaan kanonik berlaku umum untuk semua orde n matriks. Selama matriks
yang digunakan memenuhi sistem persamaan linear, maka metode penguraian
matriks dapat digunakan.
Secara fisis, hambatan yang besar akan menghambat arus.
6. Source Code
#include<iostream>
#include<conio.h>
#include<math.h>
#include<fstream>
using namespace std;
int main()
{
float i[4],r[8],v[4];
float a[4][4];
cout <<"Masukkan nilai variabel:" <<endl;
//Input resistor
for(int ii=0;ii<8;ii++)
{
cout <<"R" <<ii+1 <<": ";
cin >>r[ii];
}
cout <<endl;
//Input tegangan
for(int jj=0;jj<4;jj++)
{
cout <<"V" <<jj+1 <<": ";
cin >>v[jj];
}
cout <<endl;
//Tes keluaran resistor dan tegangan
/*
for(int k=0;k<8;k++)
{
printf("%.0f ",r[k]);
}
cout <<endl;
for(int l=0;l<4;l++)
{
printf("%.0f ",v[l]);
}
*/
//Matriks A
a[0][0]=r[0]+r[5]+r[4];
a[0][1]=-r[5];
a[0][2]=0;
a[0][3]=-r[4];
a[1][0]=-r[5];
a[1][1]=r[1]+r[5]+r[6];
a[1][2]=-r[6];
a[1][3]=0;
a[2][0]=0;
a[2][1]=-r[6];
a[2][2]=r[2]+r[6]+r[7];
a[2][3]=-r[7];
a[3][0]=-r[4];
a[3][1]=0;
a[3][2]=-r[7];
a[3][3]=r[3]+r[4]+r[7];
cout <<"Matriks A:" <<endl;
for(int x=0;x<4;x++)
printf("|%.2f\t%.2f\t%.2f\t%.2f|\n",a[x][0],a[x][1],a[x][2],a[x][3]);
cout <<endl <<endl;
//Matriks L dan U
float l[4][4],u[4][4];
l[0][0]=1;
l[1][1]=1;
l[2][2]=1;
l[3][3]=1;
for(int p=0;p<4;p++)
{
for(int q=0;q<4;q++)
{
//Syarat untuk matriks L
if(p==q)
{
l[p][q]=1;
}
else if(p<q)
{
l[p][q]=0;
}
else
{
l[p][q]=a[p][q]/u[q][q];
for(int r=0;r<q;r++)
{
l[p][q]=l[p][q]-(l[p][r]*u[r][q]/u[q][q]);
}
}
//Syarat untuk matriks U
if(p>q)
{
u[p][q]=0;
}
else
{
u[p][q]=a[p][q]/l[p][p];
for(int s=0;s<p;s++)
{
u[p][q]=u[p][q]-(l[p][s]*u[s][q]/l[p][p]);
}
}
}
}
//Output
cout <<"Matriks L:" <<endl;
for(int z=0;z<4;z++)
printf("|%.2f\t%.2f\t%.2f\t%.2f|\n",l[z][0],l[z][1],l[z][2],l[z][3]);
cout <<endl <<endl;
cout <<"Matriks U:" <<endl;
for(int w=0;w<4;w++)
printf("|%.2f\t%.2f\t%.2f\t%.2f|\n",u[w][0],u[w][1],u[w][2],u[w][3]);
cout <<endl <<endl;
//Menghitung matriks Y
float y[4];
for(int g=0;g<4;g++)
{
y[g]=v[g]/l[g][g];
for(int h=0;h<g;h++)
{
y[g]=y[g]-l[g][h]*y[h]/l[g][g];
}
}
//Tampilan matriks Y
cout <<"Matriks Y:" <<endl;
for(int gg=0;gg<4;gg++)
printf("|%.2f|\n",y[gg]);
cout <<endl <<endl;
//Menghitung matriks X
for(int t=0;t<4;t++)
{
i[3-t]=y[3-t]/u[3-t][3-t];
for(int f=0;f<t;f++)
{
i[3-t]=i[3-t]-u[3-t][3-f]*i[3-f]/u[3-t][3-t];
}
}
//Tampilan matriks X
cout <<"Matriks X:" <<endl;
for(int tt=0;tt<4;tt++)
printf("|%.2f|\n",i[tt]);
cout <<endl <<endl;
getch();
return 0;
}