Pengantar MATLAB Aplikasi Fisika dengan
Oleh:
ALEX HARIJANTO
PRODI FISIKA – JURUSAN PEND. MIPA FKIP – UNIVERSITAS JEMBER 2013
MODUL 1 OPERASI-OPERASI ARRAY
1. TUJUAN a. Membua Membuatt arr array ay sederh sederhana ana b. Mengenal Mengenal penga pengalama lamatan tan array array (array (array address addressing) ing) c. Mengenal Mengenal kontruksi kontruksi arra array y (array (array contructi contruction) on) d. Mengenal Mengenal operasi operasi matemati matematika ka skala skalar-array r-array e. Mengenal Mengenal operasi operasi matemati matematika ka arra array-arra y-array y f. Mengen Mengenal al orient orientasi asi arr array ay (array (array orient orientat ation ion))
2. PELAKS PELAKSAN ANAA AAN N KOMPUT KOMPUTAS ASII Hal-hal yang perlu diperhatikan dalam melakukan komputasi menggunakan MATLAB dalam praktikum ini, yaitu: tuliskan setiap pernyataan atau perintah MATLAB yang ditulis setelah tanda
-
‘ >> ‘ -
tekan kunci ENTER untuk ENTER untuk mengekskusi perintah MATLAB dan memperoleh hasilnya pada layar monitor (jendela MATLAB)
-
bila tidak menginginkan hasil ekskusi pada layar monitor, tuliskan titikkoma (;) pada setiap akhir perintah yang akan diekskusi
-
manfaatkan fasilitas help jika ingin mengetahui mengetahui perintah-perintah perintah-perintah MATLAB, dan mengembangkan kemampuan dalam menggunakan perintah-perintah MATLAB lainnya
a. Pembua Pembuatan tan arra array y sederh sederhana ana:: Cobalah membuat array sederhana dari x memakai MATLAB, dengan cara sebagai berikut: > > x= x= [ 0 pi]
Alex Harijanto
. 1 *p *p i
.2 . 2 * pi pi
. 3 *p *p i
.4 . 4 * pi pi
. 5* 5* p i
.6 . 6 * pi pi
. 7* 7* p i
. 8 *p *p i
.9 . 9 * pi pi
kemudian amati hasilnya, lanjutkan mencari nilai y=sin(x) dengan perintah berikut ini >>y = sin(x)
amati hasilnya
b. Pengal Pengalama amatan tan array array Lanjutkan pekerjaan a. diatas untuk mencari elemen-elemen x dengan mencoba perintah-perintah berikut ini: >>x(3) >>x(5) >>x(1:5) >>y(3:-1:1) >>x(2:2:7) >>y([8 2 9 1])
Amatilah apa apa yang telah dihasilkan dihasilkan MATLAB MATLAB diatas:
c. Kons Konstr truk uksi si arra array y Tuliskan
perintah-perintah
MATLAB
kemudian
lakukan
ekskusi
untuk
mendapatkan array dari variabel x >>x=(0:0.1:1)*pi >>x=linspace(0,pi,11)
lanjutkan dengan perintah-perintah berikut
>> logspace(0,2,11) logspace(0,2,11) >>a=1:5, b=1:2:9 >>c = [a b] >>d=[a(1:2:5) 1 0 1]
2
d. Operasi Operasi matemati matematika ka skala skalar-arr r-array ay Pada pekerjaan sebelumnya, telah dilakukan operasi perkalian antara array dari x dengan skalar , dimana masing-masing elemen array dikalikan dengan
. Dalam opersi penjumlahan, pengurangan, perkalian dan pembagian array dengan sebuah skalar
dilakukan dengan
operasi terhadap semua anggota
array. Kerjakan operasi berikut (lanjutan dari pekerjaan sebelumnya) sebelumnya)
>>a-2 >>2*a-1
e. Operasi Operasi matemati matematika ka array-ar array-array ray Untuk mendapatkan kembali variabel a dan b dari pekerjaan sebelumnya lakukan ekskusi berikut
>>a,b >>a+b >>ans-b >>2*a-b >>a.*b >>a*b >>a./b >>a.\b
Operasi berikut ini berbeda dengan operasi pembagian sebelumnya,
>>a/b
memanggil kembali (recall) variabel a dan b sebelumnya >>a, b
3
Operasi perpangkatan perpangkatan
>>a.^2 >>2*a.^2 >>b.^a >>b.^a >>b.^(a-3)
f. Orie Orient ntas asii arra array y Pada pekerjaan-pekerjaan sebelumnya, sebuah array memiliki sebuah baris dan banyak kolom, array semacam ini biasa disebut vektor baris , karena berorientasi pada baris. Dengan MATLAB, array yang berorientasi kolom dapat dibuat, array
yang berorientasi berorientas i kolom biasa disebut vektor kolom. Vektor
kolom memiliki banyak baris dan sebuah kolom. Kerjakan operasi berikut untuk mendapatkan mendapatkan vektor-vektor baris dan kolom: >>c=[1; 2; 3; 4; 5] >>a=1:5
>>b= a’ >>c= b’ >>c= a.’ >>d=a+i*a
>>e=d’ >>f=d.’
Amati hasil-hasil hasil-hasil operasi diatas. diatas.
Jika sebuah sebuah array array memiliki memiliki banyak banyak baris baris dan banyak banyak kolom, kolom, maka array array tersebut berupa daftar bilangan-bilangan berbentuk bidang persegi panjang dan lebih dikenal dengan matriks atau array 2 dimensi. Berikut adalah operasi pembuatan matriks (array dengan banyak baris dan banyak kolom)
4
» g=[1 2 3 4;5 6 7 8] » g=[1 2 3 4 5 6 7 8 9 10 11 12]
» h=[1,2,3; 4,5,6; 7,8,9]
Cobalah
» k=[1 2 3;4 5 6 7]
untuk mengetahui variabel apa saja yang telah digunakan dalam ruang kerja MATLAB saat ini lakukan operasi operasi berikut: berikut: >>whos
amatilah apa yang dihasilkan oleh perintah whos
g. Tuga Tugas s di di Lab Lab 1. Jarak Jarak dua dua buah titik titik dalam dalam bidan bidang g x-y masing masing-mas -masing ing adalah adalah A(2,3) A(2,3) dan B(4,1 , 4,5) dapat dihitung dengan MATLAB sebagai berikut: >>A = [ 2 3 ]; >>B = [ 4.1
4.5 ];
jarak antara A dan B dihitung dengan rumus: jarak AB
( 2 4.1)
2
(3 4.5) 2
>>jarak_AB = sqrt(sum(A-B).^2) sqrt(sum(A-B).^2)
2. Sebuah gelombang gelombang persegi yang yang simetrik simetrik di t = 0 dapat dapat dijabarkan dijabarkan dengan dengan deret Fourier berikut
5
x (t )
4 A 1 1 1 cos ωt cos 3ωt cos 5ωt cos 7ωt ... π 3 5 7
dimana A adalah amplitude gelombang dan adalah frekwensi sudut. Jika Jika A = 1, = 2 maka periode nya T = 2 / = 1, maka komputasi terhadap tiga suku suku gelombang persegi persegi dapat dilakukan dilakukan sebagai berikut: berikut: >> t = -2 : 0.0 0.05 5 : 2; >> omega = 2*pi; >> x1 =
cos(omega*t);
>> x2 x2 = -cos(3 -cos(3*om *omega ega*t) *t)/3; /3; >> x3 =
cos(5*omega*t)/5; cos(5*omega*t)/5;
>> xt = 4*(x1 + x2 + x3)/pi; >> plot(t, xt), grid
% perintah plot dan tampilkan grid
>> title(‘Pendekatan tiga suku gelombang persegi’) >> xlabel(‘t’) >> ylabel(‘x’)
3. Momen Momen dan pusat pusat gravit gravitasi asi 1000
800 580 400 m1
m2
35 65
m3
m4
45 75
6
Gambar diatas menunjukkan sebuah sistem massa kolinear. Massa bersatuan dalam kg dan jarak dalam satuan mm. Dalam kerja ini akan dihitung pusat gravitasi dari sistem. Untuk ini perlu didefinisikan didefinisikan vektor-vektor:
>>massa = [ 35 65 45 75 ]; >>jara >>jarak k = [ 400 400 580 580 800 800 1000 1000 ];
Vektor momen-momoen momen-momoen terhadap terhadap sumbu referensi ditunjukkandal ditunjukkandalam am gambar diberikan dengan hasil kali array (array product)
>> momen = massa .* jarak
momen total (momen_t) (momen_t) dihasilkan dihasilkan dengan hasil kali kali skalar (scalar product)
>> mom en_t = massa * jarak’
sedangkan massa total dihasilkan dari fungsi sum
>> M = sum(massa)
selanjutnya pusat massa (cg) dari sitem didefinisikan dengan titik yang mana massa total M terkonsentrasi, sehingga momen sistem sama dengan jumlah momen yang diberikan oleh seluruh massa:
>> cg = momen_t/M
juga dapat dihitung melalui: melalui:
>> cg = massa*jarak’ / sum(massa)
atau
7
>> cg = jarak*massa’ / sum(massa)
4. Peningkat Peningkatan an nilai resista resistansi nsi listrik listrik dengan dengan temperat temperatur. ur. Resistansi R dari sebuah penghantar listrik berbanding lurus terhadap panjangnya L dan berbanding terbalik terhadap luas penampangnya penampangnya A:
R ρ
L A
faktor pembanding disebut resistivitas. Bila resistivitas tembaga pada 20 0
C adalah
= 0,0170....0,0178 mm2 / m. Rsistivitas Rsistivitas adalah sebuah fungsi temperatur dan perubahannya dapat di nyatakan dengan ρθ
ρ (1 αθ )
dimana: ρθ = resistivitas pada θ 0C -1 α = koefisien temperatur, untuk tembaga = 0,0039 K
∆θ = beda temperatur diatas 20 0C
Wisseman (1989) memberikan hubungan hubungan yang lebih lengkap sebagai : ρθ
ρ 20 (1 α 20 θ β 20 θ 2 )
dimana: ρ20 = 0,0170
mm2 / m
α20 = 4,3 10-3 K -1 -6
β20 = 0,6 10
K -2
untuk membandingkan dua hubungan secara grafik, antara 20 0C dengan 1000C, kita buat plot sebagai s ebagai berikut: >> rho = 0.0178; alpha = 0.0039; >> theta = 20: 0.5 :100;
8
>> delt delta a = thet theta a – 20; 20; >> rho1 = rho*(1 + alpha*delta); >> rho_20 = 0.017; alpha_20 = 0.0043; beta_20 = 0.6*10^(-6); >> rho2 = rho_20*(1 + alpha_20*delta + beta_20*delta.^2); >> plot(theta, rho1, theta, rho2) >> xlabel(‘Temperatur, derajad Celcius’) >> ylabel(‘Resistivitas, ylabel(‘Resistivitas, ohm*mm^2/m’)
5. Rang Rangka kaia ian n diod diode e 2k
Vs = 10 V
v
i i
Gambar diatas menunjukkan sebuah rangkaian DC berisi sumber tegangan, resistor dan sebuah diode diode semikonduktor semikonduktor . Jika Jika tegangan ujung-ujung ujung-ujung diode adalah v, maka arus yang melewat melewatii nya dinyatakan dinyatakan
i I 0 (e
40v
1)
dimana I0 adalah arus jenuh balik. Untuk nilai v kecil dan negatif, berlaku i I0. Persamaan diatas adalah nonlinear, untuk untuk sebuah tegangan tegangan negatif negatif yang besar, akan diperoleh tegangan dadal. Karateristik i – v dari diode dapat dilukiskan sebagai berikut:
>> Io = 1.0e-6; >> v =-0.05: 0.005: 0.05; >> i = Io*(e Io*(exp( xp(40* 40*v) v) – 1); >> plot(v, i) >> title(‘Karakteristik diode semikonduktor’) semikonduktor’) >> xlabel(‘Karakteristik xlabel(‘Karakteristik Diode Diode Semi Konduktor’)
9
6. Da Dala lam m ran rangk gkai aian an peny penyea eara rah, h, sumb sumber er tega tegang ngan an Vs
berupa sumber
tegangan AC dengan frekwensi 50 Hz, tegangan di hambatan R yaitu v 0.4 sin( 2π 50t ) untuk membuat plot grafik hasil penyearahan, dilakukan
sebagai berikut
vs
v
R
i
>> Io = 1.0e-6; >> t = 0: 0.0001 : 0.05; >> v = 0.4*sin(2*pi*50*t); >> i = Io*(ex Io*(exp( p(40* 40*v) v) - 1); >> plot(t, i), grid >> title(‘Rangkaian Diode sebagai Penyearah Setengah Gelombang’) >> xlabel(‘Waktu, s’), ylabel(‘Arus, mA’)
TUGAS MANDIRI Kerjakan soal-soal berikut menggunakan perintah-perintah MATLAB a. Sebuah Sebuah rangkaia rangkaian n tertut tertutup up DC terdiri terdiri dari dua sumber sumber tegangan tegangan dan tiga resistansi. Tentukan besar arus I1 , I2 dan I3 I 1
12V
I 2
4
8
6V
10 I 3
10
b. Du Dua a vekt vektor or yait yaitu u
A 4i
ˆ
2 j k dan ˆ
ˆ
B
i 4 j 4k tegak lurus satu sama ˆ
ˆ
ˆ
lain. Carilah Carilah besar sudut antara vektor vektor tersebut. tersebut. c. Hitung Hitunglah lah skala skala temp tempera eratur tur dari dari –50,-2 –50,-25,. 5,..., ..,200 200 0C ke dalam skala derajad Fahrenheit d. Hitungla Hitunglah h dan buatlah buatlah plot dari dari persamaan-p persamaan-persam ersamaan aan berikut berikut 1. y = 1 – 3x + 5x2 – x3 ; pada 2. y =
x
( x 1) 2
;
-5 x 5
pada pa da -5 x 5
3. y = cos x + 2 sin 2 x ; pada - x
11
MODUL 2 SCRIPT DAN FUCNTION M-FILE
1. TUJUAN a. Memb Membua uatt scri script pt M-f M-fil ile e b. Membuat Membuat function function file atau atau file fungsi fungsi c. Mengguna Menggunakan kan For-Loops For-Loops dalam dalam permo permogram graman an d. Mengguna Menggunakan kan While-L While-Loop oopss dalam dalam permogram permograman an e. Mengguna Menggunakan kan kosntr kosntruksi uksi IF-ELSEIF-ELSE-END END dalam dalam permogra permograman man f. Mengen Mengenal al opera operato tor-o r-oper perat ator or logika logika dan dan relasi relasi
2. PELAKS PELAKSAN ANAA AAN N KOMPUT KOMPUTAS ASII a. Func Functi tion on M-f M-fiile Tulis dan simpanlah file berikut dengan nama rata2.m dengan MATLAB editor: Function y = rata2(x) % rata2.m % fungsi untuk menghitung rata-rata % data masukan x berbentuk vektor baris atau kolom
[m,n] = size(x); if m==1 & n>=1 y = sum(x)/n; elseif m>=1 & n==1 y = sum(x)/m; else error('masukan harus vektor baris atau kolom') end
12
Kerjakan contoh-contoh berikut ini: >>p = [65 78 98 76 54 49] >>nilai_rata2 = rata2(p)
Selanjutnya coba: >>q = [65; 78; 98; 76; 54; 49] 49 ] >>nilai_rata2 = rata2(q)
Evaluasi dengan statemen-statemen berikut >>h = rand(4,2) >>nilai_rata2 = rata2(h)
Tulislah dan simpanlah file fungsi berikut dengan nama radian.m dengan MATLAB editor Function y = radian(x)
% derajad.m % untuk mengubah satuan sudut dari derajad ke radian
y = x*(pi/180); Kerjakan dan ekskusi statemen-statemen statemen-statemen berikut: >> alpha = linspace(0, 180, 18); % dalam derajad >> alpha = radian(alpha); % dalam satuan radian
b. Scr Script M-f M-fiile. le. Ketikan statemen-statemen dan perintah-perintah berikut pada suatu MATLAB editor simpan dengan nama file coba_21. coba_21.m:
13
% coba_21.m % Membandingkan plot resistivitas umum dengan % resistivitas oleh Wisseman
rho = 0.0178; alpha = 0.0039; 0.0039; theta = 20: 5 :100; delt delta a = the theta ta - 20; 20; rho1 = rho*(1 + alpha*delta); rho_20 = 0.017; alpha_20 = 0.0043; beta_20 = 0.6*10^(-6); rho2 = rho_20*(1 + alpha_20*delta + beta_20*delta.^2); beta_20*delta.^2); plot(theta, rho1,'k^', theta, rho2,'k+') title('Resistivitas title('Resistivitas Tembaga') xlabel('Temperatur, xlabel('Temperatur, (derajad Celcius)') ylabel('Resistivitas, ylabel('Resistivitas, (ohm*mm^2/m)') (ohm*mm^2/m)') legend('\rho umum','\rho Wisseman')
Setelah file coba_21.m tersimpan dalam ruang kerja MATLAB, cobalah menjalankan program diatas pada MATLAB prompt, dengan mengetik nama program yaitu coba_21, bila hasil penulisan program diatas benar, maka akan ditampilkan ditampilkan sebuah jendela (window) (window) gambar dari MATLAB. MATLAB.
Kemudian kerjakan juga untuk file berikut ini, yaitu untuk menggambar lintasan peluru yang ditembakkan dari bidang datar dalam benntuk coba_22.m % coba_22.m % Program untuk membuat plot kedudukan peluru % dengan masukan: %
vo
= kecepatan awal (m/s), dalam bentuk skalar
%
alpha = sudut elevasi (derajad), dalam bentuk skalar
%
t
= lama waktu (sekon), dalam bentuk vektor
14
clear all g = 9.8; % percepatan gravitasi vo = input(' input(' kecepatan awal awal [m/s], misal misal 20 = '); alpha = input(' input(' sudut elevasi [derajad], [derajad], misal misal 45 = '); alpha = radian(alpha); % konversi radian ke satuan derajad
disp(' waktu tembak tulis dalam bentuk vektor, misal [0:.1:5]') t_tembak = input(' input(' waktu tembak tembak [atau [atau tekan Enter saja] saja] = '); disp(' disp(' --------------------------------------------------------------------------------') ---')
if isempty(t_tembak) == 1 t_datar = (2*vo*sin(alpha))/g; % t sampai di bidang datar t = [0:.1:t_datar]; disp(' Peluru akan jatuh dibidang dibidang datar') disp(' tekan Enter untuk melihat lintasan peluru') peluru') pause disp( disp('' --------------------------------------------------') ') disp(' Peluru sampai sampai di bidang datar') datar') else isempty(t_tembak) ~= 1; t = t_tembak; disp(' ==========================================') disp('
Belum diketahui lokasi peluru terakhir !!!')
disp('
peluru jatuh dibawah bidang datar')
disp('
tekan Enter untuk melihat lintasan peluru')
pause end
% kedudukan mendatar peluru
15
xt = vo*cos(alpha)*t; vo*cos(alpha)*t;
% kedudukan vertikal peluru yt = (vo*sin(a (vo*sin(alpha lpha)*t )*t - 0.5*g*t.^ 0.5*g*t.^2)+ep 2)+eps; s;
% plot kedudukan peluru clf plot(xt,yt) title('Lintasan title('Lintasan Peluru','Fontw','b','Fontsize',12) Peluru','Fontw','b','Fontsize',12) xlabel('xt (gerak mendatar), meter') ylabel('yt (gerak vertikal), meter')
Setelah file coba_22.m tersimpan, coba mengekskusi pada MATLAB prompt dengan cara mengetik coba_22 coba_22 dan tekan tekan Enter.
Tulislah file berikut dan simpan dalam coba_23.m, coba_23.m, file file ini ini dibu dibuat at untuk untuk meggambarkan beberapa Hampiran Fourier dari gelombang persegi pada suku ke n (bandingkan (bandingkan hasilnya dengan komputasi pada Modul 1)
% coba_23.m % clear all t = -2 : 0.05 0.05 : 2; 2; omega = 2*pi; n = input('banyaknya input('banyaknya suku : '); nt = length(t); k=0; x = zeros(n, nt); for i = 1:n
16
x(i,:) =(4*((-1)^(k))*cos(omega*(2*k+1) =(4*((-1)^(k))*cos(omega*(2*k+1)*t))/(2*k+1); *t))/(2*k+1); k = k + 1; end xt = sum(x); plot(t, xt), grid % perintah perintah plot dan tampilkan grid title(['Hampiran title(['Hampiran Fourier Gelombang Persegi, n='num2str(n)]) xlabel('t','Fontw','b','Fontsize',14) ylabel('x(t)','Fontw','b','Fontsize',14)
Setelah file coba_23.m terbentuk cobalah mengekskusi pada MATLAB prompt , gantilah n dengan 3 dan seterusnya (misal: n = 100).
Tulislah sebuah file dengan nama coba_24.m untuk statemen-statemen statemen-statemen dalam box berikut ini. File coba_24.m dipakai untuk menghitung nilai eps, yaitu bilangan positip terkecil pada Program MATLAB:
% coba_24.m % num=0; EPS=1; while (1+EPS)>1 EPS = EPS/2; num= num+1; end eps = 2*EPS; disp([' eps=' num2str(eps)])
17
3. TUGAS TUGAS LABOR LABORAT ATORIU ORIUM M Tuliskan program-program dari a sampai c dibawah ini pada kertas folio bergaris dan kumpulkan sebelum melakukan praktikum. Buatlah 1 copy untuk praktikum (melakukan komputasi di LAB):
a. Buatlah Buatlah sebuah sebuah fungsi MATLAB MATLAB untuk untuk membuat membuat konversi konversi suhu dari dari derajad derajad Celcius menjadi Fahrenheit. b. Buatlah sebuah script script MATLAB MATLAB untuk untuk menggambar menggambar lintasan peluru di bidang miring. Dalam program ini, besar kecepatan awal (m/s), sudut tembak alpha (derajad), dan sudut kemiringan bidang beta (derajad), dimasukkan melalui keyboard.
c. Buatlah sebuah script MATLAB untuk membuat plot sejumlah n-suku dari hampiran fourier sebuah pulsa persegi dengan persamaan deret Fourier:
u (t )
4k
π
n 0
(1) k cos((2k 1)ωt ) 2k 1
,
Catatan:
k
adalah
k onstanta
4. TUGA TUGAS S MAND MANDIR IRII Tuliskan program-program program-program soal a sampai d dibawah dibawah ini pada pada kertas kertas folio bergaris dan kumpulkan saat Praktikum Modul 3
a. Tuliskan Tuliskan sebuah sebuah scrip scriptt M-file M-file untuk menggamb menggambarka arkan n lintasan gerak peluru pada bidang datar dan gerak peluru pada bidang miring. Gunakan pengendali aliran (control ( control flow), flow), operator logika dan operator relasi untuk mengadakan pilihan-pilihan jenis gerak peluru, misalnya gerak peluru pada bidang datar atau gerak peluru pada bidang miring . Semua konstanta dan variabel harus dimasukkan melalui keyboard. Pada program ini, boleh ditambahkan penghitungan waktu-waktu khusus, misalnya waktu di
18
puncak , dan waktu untuk sampai di tanah, tanah , tinggi maksimum, jauh tembakan maksimum. Catatan: gunakan satuan SI untuk semua besaran dan manfaatkan fungsi MATLAB untuk mengubah satuan sudut dari derajad ke radian.
b. Tuliskan Tuliskan sebuah sebuah fungsi fungsi MATLAB untuk untuk menghitung menghitung besar besar pergeseran pergeseran sinar sinar yang melewati kaca plan paralel.
c. Tulislah Tulislah sebuah sebuah fungsi fungsi untuk untuk menghit menghitung ung nilai nilai masukan masukan (x) (x) yang menghasilkan keluaran y dari persamaan berikut
y
2
ce
2 x
x
1 2
jika c = 2.
d. Tulislah Tulislah fungsi fungsi untuk untuk suatu suatu temper temperatur atur T pada titik (x,y) dengan persamaan berikut
T ( x, y ) 2 x
2
y2
19
MODUL 3 KURVA FI TTI NG DAN INTERPOLASI
1. TUJU TUJUAN AN KOMP KOMPUT UTAS ASII a. Mengenal Mengenal perint perintah-pe ah-perint rintah ah MATLAB MATLAB untuk polinom polinom b. Mengen Mengenal al inte integr grasi asi polino polinom m c. Mempelaja Mempelajari ri interpo interpolasi lasi satu satu dan dua dua dimensi dimensi dengan dengan MATLA MATLAB B
2. PELAKS PELAKSAN ANAA AAN N KOMPUT KOMPUTAS ASII a. Menca Mencari ri akar akar polino polinom m Perintah-perintah Perintah-perintah MATLAB untuk mencari akar suatu polinom adalah roots Contoh: mencari akar suatu polynom y 2 x 3 x 2 4 x 2 5 Lakukan komputasi berikut pada MATLAB prompt: >> p = [ 2 1 4 5 ] % p adalah koefisien polinom >> r = roots(p) roots(p) % r adalah adalah akar-akar polinom polinom
Bila akar-akar polinom diketahui, untuk mencari koefisien polinom dapat digunakan perintah poly: Lakukan komputasi berikut pada MATLAB prompt:
>> poly(r) % mencari akar-akar polinom
Sebuah polinom dapat dievaluasi dengan perintah polyval, contoh untuk mengevaluasi y 3 x 4 7 x 3 2 x 2 x 1 untuk y(2,5) untuk y(2,5)
Lakukan komputasi berikut pada MATLAB prompt: » c = [3, -7, 2, 1, 1]; % kofisien-koefisien suatu suatu polinom polinom » xi = 2.5; % nilai absis untuk menguji polinom y » yi = polyval(c, xi) % mengevaluasi polinom polinom yi pada xi=2.5
20
b. Penyes Penyesuai uaian an polin polinom om Untuk melakukan komputasi penyesuaian polinom atau polinomial fitting, fitting , berikut ini ada contoh suatu set data:
x
1,1
2,3
3,9
5,1
y
3,887
4,276
4,651
2,117
Cobalah komputasi berikut pada MATLAB prompt: » x = [1.1 2.3 3.9 5.1]; » y = [3.887 4.276 4.651 2.117]; » a = polyfit(x,y,length(x)-1) polyfit(x,y,length(x)-1) a= -0.2015
1. 1.4385 -2.7477
5.4370
dari operasi diatas, diperoleh koefisien-koefisien polinom, argumen ke tiga dari perintah polyfit yaitu length(x)-1 menyatakan orde dari polinom. Karena orde polinom sama dengan jumlah data minus satu. Polinom ditulis sebagai:
y 0,2015 x 3 1,4385 x 2 2,7477 x 5,4370
(1)
untuk mengevaluasi mengevaluasi polinom diatas diatas pada sebuah vektor vektor absis xi bisa dilakukan komputasi berikut:
>> yi = polyval(a, xi)
c. Mencari Mencari integral integral polinom polinom denga dengan n fungsi fungsi Untuk memperoleh integral dari polinom pada persamaan (1), buatlah sebuah file fungsi poly_itg.m berikut:
21
function py = poly_itg(p) n=length(p); py = [p.*[n:-1:1].^(-1),0];
Kemudian lakukan komputasi sebagai berikut: >> d = poly_itg(a)
(dalam komputasi diatas a adalah variabel dari komputasi b.) b.)
Dari komputasi diatas akan diperoleh sebuah vektor yang merupakan koefisien koefisien dari polinom polinom Y Y yang yang secara analitik dinyatakan: dinyatakan:
Y ydx
c1
c x n1 2 x n n 1 n
...
cn
2
x 2 cn1 cn 2
(2)
sehingga berupa
d [
c1
,
c2
n 1 n
,..., cn 1 ]
d. Menca Mencari ri turu turunan nan poli polinom nom Selanjutnya untuk mencari turunan dari Y dapat Y dapat digunakan perintah polyder dengan komputasi sebagai berikut: >> b = polyder(a)
(dalam komputasi diatas a adalah variabel dari komputasi b.) Sehingga Sehingga b akan berupa berupa vektor vektor
b [nc1 , (n 1)c2 ,..., cn ] untuk
c1 , c2 ,..., cn
koefisien-koefisien koefisien-koefisien polinom
22
e. Integras Integrasii menggunaka menggunakan n fungsi fungsi internal internal MATLA MATLAB B Pada contoh diatas, telah dilkukan integrasi secara analitik menggunakan fungsi eksternal poly_itg.m.
Integrasi juga bisa dilakukan dengan
menggunakan fungsi internal (fungsi yang tersedia dalam MATLAB), yaitu dengan fungsi quad.m yang berfungsi mengevaluasi integral secara numerik.
Metode integrasi numerik akan dipelajari di kuliah Fisika
Komputasi. Dalam integrasi menggunakan perintah quad ini, identik dengan integral tertentu.
Lakukanlah komputasi untuk mengevaluasi fungsi sinus pada batasbatas 0 sampai π /4.: /4.: » f='sin'; » Y = quad(f,0,pi/4)
f. Menca Mencari ri integ integral ral fung fungsi si buata buatan n sendir sendirii Bila kita mempunyai suatu fungsi, misalnya y 3 x 2 2 x 1 untuk dicari nilai integral-nya pada batas bawah 0 x 5, maka perlu dibuatkan fungsinya dalam file fungsi fungsi (function) sebagai function
y = kwadrat_1(x)
y = 3*x^2 + 2*x + 1;
Selanjutnya Selanjutnya lakukan komputasi berikut » f = 'kwadrat_1' ' kwadrat_1' » Y = quad(f,0,5)
23
cobalah dengan perintah quad8 » f = 'kwadrat_1' ' kwadrat_1' » Y = quad8(f,0,5)
Integrasi menggunakan fungsi trapz, contoh: mencari nilai integral y 3 x 2 2 x 1 pada 0 x 5 :
Kerjakan komputasi berikut » x = 0:.2:5; » f = kwadrat_1(x); » Y = trapz(x,f)
g. Inter Interpol polasi asi satu satu dime dimensi nsi Untuk
melakukan
interpolasi
pada
suatu
titik-titik
data,
MATLAB
menyediakan perintah interp1, berikut ini terdapat data-data temperatur dan » tempra = [5 8 9 15 25 29 31 30 22 25 27 24]; % temperatur » jam = 1:12; % jam 1 sampai 12 » plot(jam, tempra, jam, tempra,'+')
Jika ingin mengetahui berapa temperatur pada jam 9,3? Maka dapat dilakukan komputasi sebagai berikut: » t=interp1(jam, tempra, 9.3)% perkiraan temperatur, jam 9.3
untuk mengetahui temperatur pada jam 4,7 » t=interp1(jam, tempra, 4.7)% perkiraan temperatur, jam 4.7
Temperatur pada jam-jam : 3,2; 6,5; 7,1; 11,7 diperoleh dengan Komputasi: >> t = interp1(jam, interp1(jam, tempra, tempra, [3.2 6.5 7.1 11.7])
24
Cara interpolasi diatas dekenal dengan nama interpolasi linier Untuk memperoleh kurva penghubung data-data yang lebih halus, dilakukan komputasi berikut >> t = interp1(jam, tempra, 9.3, 'spline') >> t = interp1(jam, tempra, 4.7, 'spline') >> t = interp1(jam, tempra, [3.2 6.5 7.1 11.7], 'spline')
Cara interpolasi diatas disebut cubic splines, splines, atau disebut splines saja
Pemakaian interpolasi spline yang paling umum adalah untuk memperhalus data. Berdasarkan data-data diatas dapat dilakukan interpolasi spline untuk mengevaluasi pada data pada interval yang lebih halus, contoh:
» h = 1:0.1:12; % estimasi temperatur tiap 1/10 jam » t = interp1(jam, tempra, h, 'spline') ; » plot(jam, tempra,'--',jam,tempra,'y+',h,t) tempra,'--',jam,tempra,'y+',h,t) » title('Temperatur Kota Springflied') » xlabel('Jam') » ylabel('Temperatur') ylabel('Temperatur')
Jika kita memakai waktu pada hari, contoh dari jam 7:00 pagi sampai jam 6:00 petang, maka dapat dibuat variabel waktu dengan cara: » jam = [7:12 1:6]
h. Inter Interpol polasi asi dua dua dimen dimensi si Dibawah ini adalah temperatur sebuah pan (alat masak pizza) dengan sebaran suhu terbagi dalam grid 3 kali 5, untuk mengetahui sebaran temperatur pada pan
25
Buatlah file berikut dan simpan dalam t_dalam.m untuk menganalisa temperatur pan pada setengah setengah kedalaman kedalaman di sepanjang sepanjang lebar pan. % t_dalam.m % menganalisa data uji % irisan pan pada setengah kedalaman lebar = 1:5; % lebar pan dalam = 1:3; % kedalaman pan tempra = [82,81,80,82,84;79,63,61,65,81;84,84,82,85,86]; li=1:0.2:5; % memilih resolusi lebar d=2; % pusat pan; zl=interp2(lebar,dalam,tempra,li,d); % interpolasi linier zc=interp2(lebar,dalam,tempra,li,d,'cubic'); % interpolasi cubic plot(li, zl, '--',li,zc) % plot linier dan cubic xlabel('Lebar Pan') ylabel('Derajad Celcius') title('Temperatur Pan di Kedalaman = 2')
Buatlah file berikut dan simpan dalam t_lebar.m untuk menganalisa temperatur pan pada setengah kedalaman di sepanjang lebar pan.
26
Buatlah file berikut dan simpan dalam s_pan.m untuk melihat temperatur pan keseluruhan % % % %
t_lebar.m Menganalisa data uji . Irisan pan pada setengah lebar dan melihat pada sepanjang kedalaman
lebar = 1:5; % lebar pan dalam = 1:3; % kedalaman pan tempra = [82,81,80,82,84;79,63,61,65,81;84,84,82,85,86]; di=1:0.2:3; % memilih resolusi kedalaman l=3; % pusat pan; zl=interp2(lebar,dalam,tempra,l,di); % interpolasi linier zc=interp2(lebar,dalam,tempra,l,di,'cubic'); % interpolasi cubic plot(di, zl, '--',di,zc) % plot linier dan cubic xlabel('Kedalaman Pan') ylabel('Derajad Celcius') title('Temperatur pada lebar = 3')
3. TUGAS TUGAS LABOR LABORAT ATORIU ORIUM M Tuliskan script file dari a sampai e dibawah ini pada kertas folio bergaris dan kumpulkan sebelum melakukan praktikum. Buatlah 1 copy untuk praktikum (melakukan komputasi di LAB):
a. Dua sifat sifat bahan dari dari gas karbon karbon monoksida monoksida diberika diberikan n pada tabel tabel berikut berikut ini
T
Beta
Alpha
300
3.33e3
0.2128e4
400
2.50e3
0.3605e4
500
2.00e3
0.5324e4
600
1.67e3
0.7190e4
T temperatur dalam Kelvin, Beta adalah Koefisien ekspansi thermal dalam 1/Kelvin dan Alpha adalah diffusifitas thermal dalam (m 2 /s). Tulislah sebuah sebuah script untuk mencari Beta dan Alpha pada T=321,440 dan 571.
27
b. Sebu Sebuah ah rel relas asii fung fungsi si y=y(x) disajikan dalam tabel berikut x
y
0
0.9162
0.25
0.8109
0.50
0.6931
0.75
0.5596
1.00
0.4055
Tulis sebuah script file untuk mencari nilai x yang memenuhiy memenuhiy = 0.9, 0.7, 0.6 dan 0.5.
c. Satu Satu set set empat empat titiktitik-tit titik ik data data x = [1.1,
2.3,
3.9,
y = [3.887, 4.276,
5.1] 4.651,
2.117]
Tulis sebuah script untuk mencari koefisien-koefisien polinom interpolasi yang cocok dengan data. Kemudian tentukan nilai y pada x=2.101 dan 4.234. Buatla Buatlah h
plot plot polin polinom om yang yang dip dipero eroleh leh pada pada titi titik-ti k-titik tik data data yang yang
tersedia.
d. Ubahlah Ubahlah polynom polynom berikut berikut deret pangkat pangkat menggun menggunakan akan polyfit polyfit:: v( x)
( x 1)( x 2.5)( x 4)( x 6.1)( x 7.2)( x 10) (5 1)(5 2.5)(5 4)(5 6.1)(5 7.2)(5 10)
e. Tulislah Tulislah sebuah sebuah program program untuk mengevalu mengevaluasi asi interpolas interpolasii Lagra Lagrange nge untuk y = x cos(x) dalam 0 x 2 dengan 6 titik grid berjarak sama dengan h = 0.4
28
4. TUGA TUGAS S MAND MANDIR IRII Tabel dibawah ini menyajikan data phase air laut pada muka bumi, X = garis lintang, Y = garis bujur, bujur, dan P =phase =phase air semua semua dalam satuan satuan derajad. Tulislah Tulislah sebuah file untuk membuat Plot 3 dimensi dan contour phase air data berikut dengan memanfaatkan perintah interpolasi 2 dimensi.
X
Y
P
26.0000
119.500
352.87463126322
26.0000
120.000
85.342163854390
26.0000
120.500
80.489212407950
26.0000
121.000
73.377370139292
26.0000
121.500
55.761503163701
26.0000
122.000
19.666336954414
26.0000
122.500
350.48685956113
26.0000
123.000
334.62278496753
26.0000
123.500
325.14340492545
26.0000
124.000
317.93898063464
26.0000
124.500
312.34154311331
26.0000
125.000
309.55553073664
26.0000
125.500
307.79123718835
29
MODUL 4 PLOT 2-DIMENSI DAN 3 DIMENSI
1. PEN PENGAN GANTAR Pada praktikum sebelumnya, telah digunakan perintah plot untuk membuat grafik dua dimensi, yaitu melukiskan dua buah array yang ukurannya sama. Untuk menggambar grafik tiga dimensi, MATLAB menyediakan beberapa perintah untuk membuat grafik dua dimensi. Untuk membuat grafik tiga dimensi, diperlukan tiga buah array dua dimensi atau matriks. Perintah-perintah tambahan dalam grafik 2 dan 3 dimensi, yaitu perintah untuk membuat beberapa gambar (sub-sub gambar) dalam satu jendela gambar, gambar seperti sering diperlukan jika kita ingin membandikan dua buah grafik, misalnya grafik fungsi sinus dengan grafik fungsi cosinus. Untuk mengetahui atau mengenali suatu plot fungsi dalam satu jendela gambar yang terdiri beberapa plot fungsi, maka diperlukan teks untuk memberi nama, untuk ini MATLAB menyediakan.
2. TUJUAN a. Mengen Mengenal al plot plot dua dua dimens dimensii b. Mengen Mengenal al plot plot tiga tiga d dime imensi nsi
3. KOM KOMPUT PUTASI a. Plot Plot dua dua dim dimen ensi si Tulis dan simpan statemen-statemen berikut pada MATLAB editor dengan nama file coba_31.m. K emudian emudian ekskusi pada MATLAB prompt untuk melihat hasilnya, jika penulias benar maka akan ditampilkan 4 buah grafik dalam sebuah jendela gambar:
30
% coba_31.m
clf x = linspace(0, 2*pi, 50); y = sin(x); z = cos(x); a = 2*sin(x).*cos(x); b = sin(x)./cos(x)+eps; sin(x)./cos(x)+eps; subplot(2, 2, 1) plot(x,y), axis([0 2*pi -1 1]), title('sin(x)') subplot(2, 2, 2) plot(x,z), axis([0 2*pi 2*pi -1 1]), title('cos(x)') subplot(2, 2, 3) plot(x,a), axis([0 2*pi 2*pi -1 1]), title('2sin(x)cos(x)') subplot(2, 2, 4) plot(x,b), axis([0 2*pi -30 30]), title('sin(x)/cos(x)') title('sin(x)/cos(x)')
Tulislah dan simpan statemen-statemen pada kotak berikut dalam file coba_32.m kemudian ekskusi coba_32 untuk melihat hasilnya. File berikut memanfaatkan operator relasi untuk mengubah nilai variabel. % coba_32.m x = linspace(0, 10, 100); % membuat data y = sin(x);
% menghitung sinus
z = (y>=0).*y; % mengatur nilai-nilai negatif sinus menjadi nol z = z + 0.5*(y<0); % negatif sin ditambah 0.5 z = (x<=8).*z; % mengatur nilai lama x=8 menjadi nol plot(x, z); xlabel('x'), ylabel('z=f(x)') title('Isyarat Tak-kontinyu')
31
b. Plot Plot tig tiga a dime dimens nsii Pada perkenalakan perintah mesh, dimana MATLAB mendefinisikan sebuah permukaan jaring (mesh ( mesh surface) surface) dengan koordinat z dari titik-titik diatas kisi atau grid persegi panjang dalam bidang x-y. Kerjakan perintah berikut pada MATLAB prompt: » x=-7.5:.5:7.5; » y=x; » [X,Y]=meshgrid(x,y); » R=sqrt(X.^2 + Y.^2)+eps; » Z=sin(R)./R; » mesh(X,Y,Z)
Tulis dan simpan statemen-statemen berikut pada MATLAB editor dengan nama file coba_33.m. K emudian emudian ekskusi pada MATLAB prompt untuk melihat hasilnya, jika penulias benar maka akan ditampilkan 4 buah grafik dalam sebuah jendela gambar: % coba_33.m % clf x = linspace(0, 2*pi, 50); y = sin(x); z = cos(x); a = 2*sin(x).*cos(x); b = sin(x)./cos(x)+eps; subplot(2, 2, 1) plot(x,y), axis([0 2*pi -1 1]), title('sin(x)') subplot(2, 2, 2) plot(x,z), axis([0 2*pi 2*pi -1 1]), title('cos(x)') subplot(2, 2, 3) plot(x,a), axis([0 2*pi 2*pi -1 1]), title('2sin(x)cos(x)') subplot(2, 2, 4) plot(x,b), axis([0 2*pi -30 30]), title('sin(x)/cos(x)') title('sin(x)/cos(x)')
Tulislah dan simpan statemen-statemen pada kotak berikut dalam file coba_32.m kemudian ekskusi coba_32 untuk melihat hasilnya.
32
File berikut memanfaatkan operator relasi untuk mengubah nilai variabel. % coba_32.m x = linspace(0, 10, 100); % membuat data y = sin(x);
% menghitung sinus
z = (y>=0).*y; % mengatur nilai-nilai negatif sinus menjadi nol z = z + 0.5*(y<0); % negatif sin ditambah 0.5 z = (x<=8).*z; % mengatur nilai lama x=8 menjadi nol plot(x, z); xlabel('x'), ylabel('z=f(x)') title('Isyarat Tak-kontinyu')
4. TUGAS TUGAS LABOR LABORAT ATORIU ORIUM M
5. TUGA TUGAS S MAND MANDIR IRII
33