Pengantar Matlab (P.alex)

download Pengantar Matlab (P.alex)

of 34

Transcript of Pengantar Matlab (P.alex)

  • PengantarMATLAB denganAplikasiFisikaOleh: ALEX HARIJANTO

    PRODI FISIKA JURUSAN PEND. MIPAFKIP UNIVERSITAS JEMBER2013

  • Alex Harijanto

    MODUL 1

    OPERASI-OPERASI ARRAY

    1. TUJUAN

    a. Membuat array sederhana

    b. Mengenal pengalamatan array (array addressing)

    c. Mengenal kontruksi array (array contruction)

    d. Mengenal operasi matematika skalar-array

    e. Mengenal operasi matematika array-array

    f. Mengenal orientasi array (array orientation)

    2. PELAKSANAAN KOMPUTASI

    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 mengekskusi perintah MATLAB dan memperoleh

    hasilnya pada layar monitor (jendela MATLAB)

    - bila tidak menginginkan hasil ekskusi pada layar monitor, tuliskan titik-

    koma (;) pada setiap akhir perintah yang akan diekskusi

    - manfaatkan fasilitas help jika ingin mengetahui perintah-perintah MATLAB,

    dan mengembangkan kemampuan dalam menggunakan perintah-perintah

    MATLAB lainnya

    a. Pembuatan array sederhana:

    Cobalah membuat array sederhana dari x memakai MATLAB, dengan cara

    sebagai berikut:

    >>x=[0 .1*pi .2*pi .3*pi .4*pi .5*pi .6*pi .7*pi .8*pi .9*pipi]

  • 2kemudian amati hasilnya, lanjutkan mencari nilai y=sin(x) dengan perintah

    berikut ini

    >>y = sin(x)

    amati hasilnya

    b. Pengalamatan 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 yang telah dihasilkan MATLAB diatas:

    c. Konstruksi array

    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)>>a=1:5, b=1:2:9

    >>c = [a b]>>d=[a(1:2:5) 1 0 1]

  • 3d. Operasi matematika skalar-array

    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 arraydengan sebuah skalar dilakukan dengan operasi terhadap semua anggota

    array.

    Kerjakan operasi berikut (lanjutan dari pekerjaan sebelumnya)

    >>a-2

    >>2*a-1

    e. Operasi matematika array-array

    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

  • 4Operasi perpangkatan

    >>a.^2

    >>2*a.^2

    >>b.^a

    >>b.^a

    >>b.^(a-3)

    f. Orientasi array

    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 kolom biasa disebut vektor kolom. Vektor

    kolom memiliki banyak baris dan sebuah kolom.

    Kerjakan operasi berikut untuk 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 operasi diatas.

    Jika sebuah array memiliki banyak baris dan banyak kolom, maka 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)

  • 5 g=[1 2 3 4;5 6 7 8] g=[1 2 3 45 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 berikut:

    >>whos

    amatilah apa yang dihasilkan oleh perintah whos

    g. Tugas di Lab

    1. Jarak dua buah titik dalam bidang x-y masing-masing adalah 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:

    22 )5.43()1.42( ABjarak

    >>jarak_AB = sqrt(sum(A-B).^2)

    2. Sebuah gelombang persegi yang simetrik di t = 0 dapat dijabarkan dengan

    deret Fourier berikut

  • 6

    ...7cos715cos

    513cos

    31

    cos4)( ttttAtx

    dimana A adalah amplitude gelombang dan adalah frekwensi sudut.Jika A = 1, = 2 maka periode nya T = 2/ = 1, maka komputasiterhadap tiga suku gelombang persegi dapat dilakukan sebagai berikut:

    >> t = -2 : 0.05 : 2;

    >> omega = 2*pi;

    >> x1 = cos(omega*t);>> x2 = -cos(3*omega*t)/3;>> x3 = 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 dan pusat gravitasi

    1000

    m1 m2 m3 m4

    800

    580

    400

    3565

    45

    75

  • 7Gambar 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 vektor-vektor:

    >>massa = [ 35 65 45 75 ];>>jarak = [ 400 580 800 1000 ];

    Vektor momen-momoen terhadap sumbu referensi ditunjukkandalam gambar

    diberikan dengan hasil kali array (array product)

    >> momen = massa .* jarak

    momen total (momen_t) dihasilkan dengan hasil kali skalar (scalar product)

    >> momen_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:

    >> cg = massa*jarak / sum(massa)

    atau

  • 8>> cg = jarak*massa / sum(massa)

    4. Peningkatan nilai resistansi listrik dengan temperatur.

    Resistansi R dari sebuah penghantar listrik berbanding lurus terhadap

    panjangnya L dan berbanding terbalik terhadap luas penampangnya A:

    ALR

    faktor pembanding disebut resistivitas. Bila resistivitas tembaga pada 200C adalah

    = 0,0170....0,0178 mm2/ m. Rsistivitas adalah sebuah fungsitemperatur dan perubahannya dapat di nyatakan dengan

    )1(

    dimana:

    = resistivitas pada 0C

    = koefisien temperatur, untuk tembaga = 0,0039 K-1 = beda temperatur diatas 20 0C

    Wisseman (1989) memberikan hubungan yang lebih lengkap sebagai :

    )1( 2202020 dimana:

    20 = 0,0170 mm2/ m20 = 4,3 10-3 K-120 = 0,6 10-6 K-2untuk membandingkan dua hubungan secara grafik, antara 200C dengan

    1000C, kita buat plot sebagai berikut:

    >> rho = 0.0178; alpha = 0.0039;

    >> theta = 20: 0.5 :100;

  • 9>> delta = theta 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, ohm*mm^2/m)

    5. Rangkaian diode

    Gambar diatas menunjukkan sebuah rangkaian DC berisi sumber tegangan,

    resistor dan sebuah diode semikonduktor . Jika tegangan ujung-ujung diode

    adalah v, maka arus yang melewati nya dinyatakan

    )1( 400 veIidimana I0 adalah arus jenuh balik. Untuk nilai v kecil dan negatif, berlaku i -I0. Persamaan diatas adalah nonlinear, untuk sebuah tegangan 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*(exp(40*v) 1);

    >> plot(v, i)

    >> title(Karakteristik diode semikonduktor)

    >> xlabel(Karakteristik Diode Semi Konduktor)

    i

    v

    2k

    Vs = 10 V i

  • 10

    6. Dalam rangkaian penyearah, sumber tegangan Vs berupa sumber

    tegangan AC dengan frekwensi 50 Hz, tegangan di hambatan R yaitu

    )502sin(4.0 tv untuk membuat plot grafik hasil penyearahan, dilakukansebagai berikut

    >> Io = 1.0e-6;

    >> t = 0: 0.0001 : 0.05;

    >> v = 0.4*sin(2*pi*50*t);

    >> i = Io*(exp(40*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 rangkaian tertutup DC terdiri dari dua sumber tegangan dan tiga

    resistansi. Tentukan besar arus I1 , I2 dan I3

    Rivsv

    8 412V 6V

    I2I1

    I3

    10

  • 11

    b. Dua vektor yaitu kjiA 24 dan kjiB 44 tegak lurus satu samalain. Carilah besar sudut antara vektor tersebut.

    c. Hitunglah skala temperatur dari 50,-25,...,200 0C ke dalam skala derajad

    Fahrenheit

    d. Hitunglah dan buatlah plot dari persamaan-persamaan berikut

    1. y = 1 3x + 5x2 x3 ; pada -5 x 52. y = 2)1( x

    x; pada -5 x 5

    3. y = cos x + 2 sin2 x ; pada - x

  • 12

    MODUL 2

    SCRIPT DAN FUCNTION M-FILE

    1. TUJUAN

    a. Membuat script M-file

    b. Membuat function file atau file fungsi

    c. Menggunakan For-Loops dalam permograman

    d. Menggunakan While-Loops dalam permograman

    e. Menggunakan kosntruksi IF-ELSE-END dalam permograman

    f. Mengenal operator-operator logika dan relasi

    2. PELAKSANAAN KOMPUTASI

    a. Function M-file

    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

  • 13

    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]

    >>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 berikut:

    >> alpha = linspace(0, 180, 18); % dalam derajad

    >> alpha = radian(alpha); % dalam satuan radian

    b. Script M-file.

    Ketikan statemen-statemen dan perintah-perintah berikut pada suatu

    MATLAB editor simpan dengan nama file coba_21.m:

  • 14

    % coba_21.m

    % Membandingkan plot resistivitas umum dengan

    % resistivitas oleh Wisseman

    rho = 0.0178; alpha = 0.0039;

    theta = 20: 5 :100;

    delta = theta - 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,'k^', theta, rho2,'k+')

    title('Resistivitas Tembaga')

    xlabel('Temperatur, (derajad Celcius)')

    ylabel('Resistivitas, (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 sebuah jendela (window) gambar dari 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

  • 15

    clear all

    g = 9.8; % percepatan gravitasi

    vo = input(' kecepatan awal [m/s], misal 20 = ');

    alpha = input(' sudut elevasi [derajad], misal 45 = ');

    alpha = radian(alpha); % konversi radian ke satuan derajad

    disp(' waktu tembak tulis dalam bentuk vektor, misal [0:.1:5]')

    t_tembak = input(' waktu tembak [atau tekan Enter saja] = ');

    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 datar')

    disp(' tekan Enter untuk melihat lintasan peluru')

    pause

    disp(' ------------------------------')

    disp(' Peluru sampai di bidang 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

  • 16

    xt = vo*cos(alpha)*t;

    % kedudukan vertikal peluru

    yt = (vo*sin(alpha)*t - 0.5*g*t.^2)+eps;

    % plot kedudukan peluru

    clf

    plot(xt,yt)

    title('Lintasan 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 dan tekan Enter.

    Tulislah file berikut dan simpan dalam coba_23.m, file ini dibuat untuk

    meggambarkan beberapa Hampiran Fourier dari gelombang persegi pada

    suku ke n (bandingkan hasilnya dengan komputasi pada Modul 1)

    % coba_23.m

    % clear all

    t = -2 : 0.05 : 2;

    omega = 2*pi;

    n = input('banyaknya suku : ');

    nt = length(t);

    k=0;

    x = zeros(n, nt);

    for i = 1:n

  • 17

    x(i,:) =(4*((-1)^(k))*cos(omega*(2*k+1)*t))/(2*k+1);

    k = k + 1;

    end

    xt = sum(x);

    plot(t, xt), grid % perintah plot dan tampilkan grid

    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

    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)])

  • 18

    3. TUGAS LABORATORIUM

    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 sebuah fungsi MATLAB untuk membuat konversi suhu dari derajad

    Celcius menjadi Fahrenheit.

    b. Buatlah sebuah script MATLAB untuk 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:

    0 12

    ))12cos(()1(4)(n

    k

    ktkk

    tu

    , Catatan: k adalah

    konstanta

    4. TUGAS MANDIRI

    Tuliskan program-program soal a sampai d dibawah ini pada kertas folio

    bergaris dan kumpulkan saat Praktikum Modul 3

    a. Tuliskan sebuah script M-file untuk menggambarkan lintasan gerak peluru

    pada bidang datar dan gerak peluru pada bidang miring. Gunakan

    pengendali aliran (control 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

  • 19

    puncak, dan waktu untuk sampai di 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 sebuah fungsi MATLAB untuk menghitung besar pergeseran sinar

    yang melewati kaca plan paralel.

    c. Tulislah sebuah fungsi untuk menghitung nilai masukan (x) yang

    menghasilkan keluaran y dari persamaan berikut

    2122 xcey x

    jika c = 2.

    d. Tulislah fungsi untuk suatu temperatur T pada titik (x,y) dengan persamaan

    berikut

    222),( yxyxT

  • 20

    MODUL 3

    KURVA FITTING DAN INTERPOLASI

    1. TUJUAN KOMPUTASI

    a. Mengenal perintah-perintah MATLAB untuk polinom

    b. Mengenal integrasi polinom

    c. Mempelajari interpolasi satu dan dua dimensi dengan MATLAB

    2. PELAKSANAAN KOMPUTASI

    a. Mencari akar polinom

    Perintah-perintah MATLAB untuk mencari akar suatu polinom adalah roots

    Contoh: mencari akar suatu polynom 542 223 xxxyLakukan komputasi berikut pada MATLAB prompt:

    >> p = [ 2 1 4 5 ] % p adalah koefisien polinom

    >> r = roots(p) % r adalah akar-akar 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 1273 234 xxxxy untuk y(2,5)

    Lakukan komputasi berikut pada MATLAB prompt:

    c = [3, -7, 2, 1, 1]; % kofisien-koefisien suatu polinom

    xi = 2.5; % nilai absis untuk menguji polinom y

    yi = polyval(c, xi) % mengevaluasi polinom yi pada xi=2.5

  • 21

    b. Penyesuaian polinom

    Untuk melakukan komputasi penyesuaian polinom atau polinomial 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)

    a =

    -0.2015 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:

    4370,57477,24385,12015,0 23 xxxy (1)

    untuk mengevaluasi polinom diatas pada sebuah vektor absis xi bisa

    dilakukan komputasi berikut:

    >> yi = polyval(a, xi)

    c. Mencari integral polinom dengan fungsi

    Untuk memperoleh integral dari polinom pada persamaan (1), buatlah

    sebuah file fungsi poly_itg.m berikut:

  • 22

    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.)

    Dari komputasi diatas akan diperoleh sebuah vektor yang merupakan

    koefisien dari polinom Y yang secara analitik dinyatakan:

    212211

    2...

    1 nnnnn ccxcxncxncydxY (2)

    sehingga berupa

    ],...,,1

    [ 121 ncnc

    n

    cd

    d. Mencari turunan polinom

    Selanjutnya untuk mencari turunan dari Y dapat digunakan perintah

    polyder dengan komputasi sebagai berikut:

    >> b = polyder(a)

    (dalam komputasi diatas a adalah variabel dari komputasi b.)

    Sehingga b akan berupa vektor

    ],...,)1(,[ 21 nccnncb untuk nccc ,...,, 21 koefisien-koefisien polinom

  • 23

    e. Integrasi menggunakan fungsi internal MATLAB

    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 batas-

    batas 0 sampai /4.:

    f='sin';

    Y = quad(f,0,pi/4)

    f. Mencari integral fungsi buatan sendiri

    Bila kita mempunyai suatu fungsi, misalnya 123 2 xxy untuk dicari nilaiintegral-nya pada batas bawah 0 x 5, maka perlu dibuatkan fungsinyadalam file fungsi (function) sebagai

    Selanjutnya lakukan komputasi berikut

    f = 'kwadrat_1'

    Y = quad(f,0,5)

    function y = kwadrat_1(x)

    y = 3*x^2 + 2*x + 1;

  • 24

    cobalah dengan perintah quad8

    f = 'kwadrat_1'

    Y = quad8(f,0,5)

    Integrasi menggunakan fungsi trapz, contoh: mencari nilai integral

    123 2 xxy pada 0 x 5 :

    Kerjakan komputasi berikut

    x = 0:.2:5;

    f = kwadrat_1(x);

    Y = trapz(x,f)

    g. Interpolasi satu dimensi

    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, tempra, [3.2 6.5 7.1 11.7])

  • 25

    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, 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)

    title('Temperatur Kota Springflied')

    xlabel('Jam')

    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. Interpolasi dua dimensi

    Dibawah ini adalah temperatur sebuah pan (alat masak pizza) dengan

    sebaran suhu terbagi dalam grid 3 kali 5, untuk mengetahui sebaran

    temperatur pada pan

  • 26

    Buatlah file berikut dan simpan dalam t_dalam.m untuk menganalisa

    temperatur pan pada setengah kedalaman di sepanjang lebar pan.

    Buatlah file berikut dan simpan dalam t_lebar.m untuk menganalisa

    temperatur pan pada setengah kedalaman di sepanjang lebar pan.

    % t_dalam.m% menganalisa data uji% irisan pan pada setengah kedalaman

    lebar = 1:5; % lebar pandalam = 1:3; % kedalaman pantempra = [82,81,80,82,84;79,63,61,65,81;84,84,82,85,86];

    li=1:0.2:5; % memilih resolusi lebard=2; % pusat pan;

    zl=interp2(lebar,dalam,tempra,li,d); % interpolasi linierzc=interp2(lebar,dalam,tempra,li,d,'cubic'); % interpolasi cubic

    plot(li, zl, '--',li,zc) % plot linier dan cubicxlabel('Lebar Pan')ylabel('Derajad Celcius')title('Temperatur Pan di Kedalaman = 2')

  • 27

    Buatlah file berikut dan simpan dalam s_pan.m untuk melihat temperatur

    pan keseluruhan

    3. TUGAS LABORATORIUM

    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 bahan dari gas karbon monoksida diberikan pada tabel berikut ini

    T Beta Alpha

    300

    400

    500

    600

    3.33e3

    2.50e3

    2.00e3

    1.67e3

    0.2128e4

    0.3605e4

    0.5324e4

    0.7190e4

    T temperatur dalam Kelvin, Beta adalah Koefisien ekspansi thermal dalam

    1/Kelvin dan Alpha adalah diffusifitas thermal dalam (m2/s). Tulislah sebuah

    script untuk mencari Beta dan Alpha pada T=321,440 dan 571.

    % t_lebar.m% Menganalisa data uji .% Irisan pan pada setengah lebar dan% melihat pada sepanjang kedalaman

    lebar = 1:5; % lebar pandalam = 1:3; % kedalaman pantempra = [82,81,80,82,84;79,63,61,65,81;84,84,82,85,86];

    di=1:0.2:3; % memilih resolusi kedalamanl=3; % pusat pan;

    zl=interp2(lebar,dalam,tempra,l,di); % interpolasi linierzc=interp2(lebar,dalam,tempra,l,di,'cubic'); % interpolasi cubic

    plot(di, zl, '--',di,zc) % plot linier dan cubicxlabel('Kedalaman Pan')ylabel('Derajad Celcius')title('Temperatur pada lebar = 3')

  • 28

    b. Sebuah relasi fungsi y=y(x) disajikan dalam tabel berikut

    x y

    0

    0.25

    0.50

    0.75

    1.00

    0.9162

    0.8109

    0.6931

    0.5596

    0.4055

    Tulis sebuah script file untuk mencari nilai x yang memenuhiy = 0.9, 0.7,

    0.6 dan 0.5.

    c. Satu set empat titik-titik data

    x = [1.1, 2.3, 3.9, 5.1]

    y = [3.887, 4.276, 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. Buatlah plot polinom yang diperoleh pada titik-titik data yang

    tersedia.

    d. Ubahlah polynom berikut deret pangkat menggunakan polyfit:

    )105)(2.75)(1.65)(45)(5.25)(15()10)(2.7)(1.6)(4)(5.2)(1()(

    xxxxxxxv

    e. Tulislah sebuah program untuk mengevaluasi interpolasi Lagrange untuk y

    = x cos(x) dalam 0 x 2 dengan 6 titik grid berjarak sama dengan h =0.4

  • 29

    4. TUGAS MANDIRI

    Tabel dibawah ini menyajikan data phase air laut pada muka bumi, X = garis

    lintang, Y = garis bujur, dan P =phase air semua dalam satuan derajad. 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

  • 30

    MODUL 4

    PLOT 2-DIMENSI DAN 3 DIMENSI

    1. PENGANTAR

    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. Mengenal plot dua dimensi

    b. Mengenal plot tiga dimensi

    3. KOMPUTASI

    a. Plot dua dimensi

    Tulis dan simpan statemen-statemen berikut pada MATLAB editor dengan

    nama file coba_31.m. Kemudian ekskusi pada MATLAB prompt untuk

    melihat hasilnya, jika penulias benar maka akan ditampilkan 4 buah grafik

    dalam sebuah jendela gambar:

  • 31

    % 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;

    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 -1 1]), title('cos(x)')

    subplot(2, 2, 3)

    plot(x,a), axis([0 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)')

    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

  • 32

    b. Plot tiga dimensi

    Pada perkenalakan perintah mesh, dimana MATLAB mendefinisikan sebuah

    permukaan jaring (mesh 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. Kemudian ekskusi pada MATLAB prompt untuk

    melihat hasilnya, jika penulias benar maka akan ditampilkan 4 buah grafik

    dalam sebuah jendela gambar:

    % coba_33.m%clfx = 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 -1 1]), title('cos(x)')subplot(2, 2, 3)plot(x,a), axis([0 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)')

    Tulislah dan simpan statemen-statemen pada kotak berikut dalam file

    coba_32.m kemudian ekskusi coba_32 untuk melihat hasilnya.

  • 33

    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