Friday, March 12, 2010

invers matrik reduksi baris dengan MATLAB

Contoh program sederhana invers matrik dengan metode reduksi baris ecelon menggunakan MATLAB,

Program ini akan melakukan reduksi baris yang meliputi: Pertukaran baris atau pertukaran vector bila anda lebih suka menyebut matrik barisnya sebagai vector. Ini berujuan untuk mendapatkan vector pertama leading 1 . operasi pengurangan atau penjumahan antar vector yang intinya untuk menghasilkan sebuah matrik Identitas dari matrik asal yang Anda inputkan.

sebuah matrik identitas dibangkitkan, sebagai ganti dari bentuk augmented dari matrik input. Dan dilakukan operasi yang sama persis dengan matrik inputan untuk vector-vektor yang bersesuaian. Pada ahir iterasi, yaitu saat matrik awal menjadi identitas, maka matrik hasil adalah invers dari matrik awal yang kita inputkan. Ini bias kita cek dengan code ‘inv(nama matrik)’ pada command window MATLAB.

Program ini masih sangat sederhana kemampuannya. Karena dia tidak bisa mengidentifikasi matrik yang berisi vector-vektor nonlinearly independent. Seperti kita tahu sebuah matrik agar mempunyai invers maka harus berisi vector-vektor yg tak bisa dinyatakan dengan vector lainnya dalam matrik tersebut dengan perbandingan bilangan bulat,’integer’, atau yang biasa disebut dengan vector linearly independent. Karena itu program ini akan terus nylonong saja kalo kita beri makanan vector-vector yang diantaranya bukan linearly independent.

Selain itu, skrip-nya juga bisa diperpendek jika Anda tahu lebih banyak bahasa pemrograman MATLAB. Setidaknya, sebagai bahan latihan untuk memahami algoritmanya.

berikut kodenya:

clear all;

clc;

disp('program invers matrik menggunakan reduksi baris')

disp('oleh Nadzor')

awal=input('masukkan matrik :"[....]" ');

s=size(awal);

hasil=eye(s);

disp('matrik yang Anda Masukkan adalah berikut:')

awal

for h=1:s

d=awal(1,:);

p=hasil(1,:);

if awal(1,1)==0

awal(1,:)=awal(h+1,:);

awal(h+1,:)=d;

hasil(1,:)=hasil(h+1,:);

hasil(h+1,:)=p;

disp('terjadi penukaran baris')

else

awal=awal;

end;

end;

for k=1:s

f=awal(k,k);

a=1/f*[awal(k,:)];

b=1/f*[hasil(k,:)];

for n=1:s

if n~=k

g=awal(n,k);

awal(n,:)=[awal(n,:)]-a.*awal(n,k);

hasil(n,:)=[hasil(n,:)]-[b.*g];

else

awal(n,:)=a;

hasil(n,:)=b;

end;

end;

awal

hasil

end;

3 comments:

Unknown said...

eh ada mas nadzor....mantap!!!! lg gogling ttg invers boss

nadzor said...

ati2... asal ojok mbacem ae koen.hehe

SuaRa Dewi Kehidupannn said...

treima kasihh...bloger anda membantu saia.....:)