Makalah Matriks Dan Pemrograman Berbasis Matlab
MAKALAH
Matriks Dan Pemrograman Berbasis Matlab
Disusun untuk memenuhi tugas Mata Kuliah Fisika
Komputasi
Dosen Pengampu:
Winda Setya M.Sc
Disusun oleh:
|
Alfan Raihan |
1222070004 |
|
Aura Eka Hermila |
1222070012 |
|
Dea Maharani |
1222070020 |
|
Diana Vijar Mutiara |
1222070023 |
|
Ilham Januar |
1222070031 |
PROGRAM STUDI PENDIDIKAN FISIKA JURUSAN PENDIDIKAN MIPA
FAKULTAS TARBIYAH DAN KEGURUAN
UIN SUNAN GUNUNG DJATI
BANDUNG
2025
KATA
PENGANTAR
Segala puji bagi Allah tempat kita memuji dan memohon
pertolongan kepada-Nya. Barangsiapa yang diberi petunjuk oleh Allah maka tidak
aka nada yang dapat menyesatkanya, dan barang siapa, dan barangsiapa
disesatkan-Nya maka tidak ada yang dapat memberi petunjuk kepada-Nya.
Rasa syukur juga tak lupa lita ucapkan kepada kehadirat Allah
SWt yang maha pengasih lagi maha penyayang yang senantiasa memberikan bimbingan
dalam memberikan petunjuk-Nya kepada kita. Sehingga kami dapat menyelesaikan
makalah ini dengan sebaik-baiknya. Alhamdulillah berkat karunia, nikmat dan
dengan izin-Nya kami dapat Menyusun, menulis dan menyelesaikan makalah ini yang
berjudul “Matriks Dan Pemrograman Berbasis Matlab”. Makalah ini disusun
sebagai tugas kelompok mata kuliah Fisika Komputasi. kami menyadari bahwa
makalah ini masih banyak memiliki kekurangan dari Teknik penulisan, segi
penyusunan maupun yang lainnya. Maka dari itu kami berharap atas masukan dan
kritik yang bersifat membangun akan kami terima dengan senang hati demi
perbaikan dan kesempurnaan makalah ini.
Semoga makalah ini bisa memberikan informasi mengenai konsep dan
teori belajar dan bermanfaat bagi para pembacanya. Atas perhatian dan
kesempatan yang diberikan untuk membuat makalah ini kami ucapkan terima kasih.
Bandung,
18 Maret 2025
Penulis
BAB
I
PENDAHULUAN
A. Latar Belakang
Dalam
berbagai bidang ilmu seperti matematika, teknik, fisika, dan ilmu komputer,
matriks menjadi salah satu konsep fundamental yang sering digunakan untuk
memodelkan dan menyelesaikan berbagai permasalahan. Matriks berperan penting
dalam analisis data, pemrosesan citra, sistem kontrol, optimasi, dan banyak
aplikasi lainnya. Oleh karena itu, pemahaman tentang konsep dasar matriks,
jenis-jenisnya, serta operasi-operasi yang dapat dilakukan terhadap matriks
menjadi hal yang sangat penting.
Selain
itu, dalam perhitungan numerik, terdapat konsep angka penting, akurasi,
presisi, serta galat yang dapat memengaruhi hasil perhitungan. Kesalahan kecil
dalam perhitungan dapat menyebabkan perbedaan signifikan dalam hasil akhir,
terutama dalam sistem persamaan linear dan pemodelan matematis lainnya. Oleh
sebab itu, memahami aturan angka penting, jenis-jenis galat, serta bagaimana
meningkatkan akurasi dan presisi dalam perhitungan menjadi bagian yang tidak
terpisahkan dalam analisis berbasis matriks.
MATLAB
(Matrix Laboratory) adalah salah satu perangkat lunak yang dirancang untuk
menangani perhitungan berbasis matriks secara efisien. Dengan berbagai fungsi
dan fitur yang tersedia, MATLAB memungkinkan pengguna untuk melakukan operasi
matriks, menyelesaikan sistem persamaan linear, serta menganalisis data secara
lebih cepat dan akurat dibandingkan dengan perhitungan manual. Penggunaan
MATLAB dalam komputasi numerik tidak hanya meningkatkan efisiensi tetapi juga
mengurangi potensi kesalahan yang terjadi akibat perhitungan manual.
Berdasarkan
latar belakang tersebut, pembahasan mengenai konsep dasar matriks, aturan angka
penting, jenis-jenis matriks, operasi matriks, serta penyelesaian sistem
persamaan linear dengan MATLAB menjadi hal yang sangat relevan dalam dunia
akademik dan industri.
B. Rumusan Masalah
1.
Bagaimana konsep dasar matriks,
aturan angka penting, serta penerapannya dalam perhitungan numerik?
2.
Bagaimana konsep akurasi,
presisi, dan galat dalam perhitungan numerik serta dampaknya terhadap operasi
matriks?
3.
Bagaimana MATLAB dapat
digunakan untuk mengimplementasikan operasi matriks dan menyelesaikan sistem
persamaan linear secara efisien?
C. Tujuan Masalah
1.
Menjelaskan konsep dasar
matriks, aturan angka penting, serta penerapannya dalam perhitungan numerik.
2.
Menganalisis konsep akurasi,
presisi, dan galat dalam perhitungan numerik serta dampaknya terhadap operasi
matriks.
3.
Mempelajari dan
mengimplementasikan penggunaan MATLAB dalam operasi matriks serta penyelesaian
sistem persamaan linear secara efisien.
BAB II
PEMBAHASAN
A.
Konsep
dasar membentuk Array dan matriks
Dalam
dunia pemrograman numerik, array dan matriks merupakan struktur data yang
sering digunakan untuk menyimpan dan memproses data dalam bentuk angka. MATLAB
(Matrix Laboratory) adalah salah satu bahasa pemrograman yang secara khusus
dirancang untuk bekerja dengan matriks dan array secara efisien. Oleh karena
itu, memahami cara membentuk array dan matriks merupakan keterampilan dasar
yang sangat penting dalam MATLAB.
1.
Membentuk
Array
Array
adalah kumpulan elemen dengan tipe data yang sama yang tersusun dalam satu
dimensi atau lebih. Array dapat berbentuk array satu dimensi (vektor), dua
dimensi (matriks), atau lebih dari dua dimensi (array multidimensi). Dalam MATLAB, array dapat dibentuk
menggunakan berbagai metode, dua di antaranya adalah dengan membentuk deret
sederhana dan menggunakan increment.
a.
Membentuk
Deret Sederhana
MATLAB
menyediakan cara yang sangat mudah untuk membentuk array dengan elemen-elemen
yang tersusun dalam suatu deret tertentu. Cara paling sederhana adalah dengan
menuliskan angka-angka secara langsung dalam tanda kurung siku ([]).
Contoh Array
Sederhana:
matlab
A = [1 2 3 4 5] % Array baris
B = [10, 20, 30,
40] % Cara lain dengan koma sebagai
pemisah
Dalam contoh di atas, A
adalah array baris dengan elemen 1 hingga 5, sementara B adalah array dengan
nilai yang lebih besar. Selain juga bisa membuat array dengan operator titik
dua (:), yang memungkinkan kita untuk membuat deret angka dengan aturan
tertentu.
Contoh Penggunaan
Operator : untuk Membuat Deret:
matlab
C = 1:5 % Array dengan elemen dari 1 sampai 5
D = 1:2:10 % Array dari 1 sampai 10 dengan selisih 2 (1,
3, 5, 7, 9)
Pada contoh di atas:
- C adalah array yang
berisi elemen 1, 2, 3, 4, dan 5.
- D adalah array yang
dimulai dari angka 1, dengan selisih antar elemen sebesar 2, hingga mencapai
angka 10.
b.
Menggunakan
Increment
Increment
dalam array digunakan untuk menentukan pola kenaikan atau penurunan elemen
dalam array. Selain menggunakan operator :, MATLAB juga menyediakan fungsi
linspace() yang berguna untuk membuat array dengan jumlah elemen tertentu dalam
rentang nilai tertentu.
Contoh Penggunaan
linspace() untuk Array dengan Increment Tertentu:
matlab
E = linspace(1, 10,
5) % Array dari 1 sampai 10 dengan 5
elemen
Pada contoh di atas, E
akan berisi nilai yang dibagi rata dari 1 sampai 10 dengan total 5 elemen.
Hasilnya adalah [1 3.25 5.5 7.75 10].
MATLAB
juga mendukung operasi element-wise, sehingga kita bisa menggunakan perhitungan
langsung pada array.
Contoh Operasi pada
Array:
matlab
F = 1:5;
G = F 2; %
Mengalikan semua elemen dalam array dengan 2
Hasilnya, G akan berisi
[2 4 6 8 10], yang merupakan hasil perkalian setiap elemen dalam F dengan 2.
2.
Membentuk
Matriks
Matriks
adalah array dua dimensi yang terdiri dari baris dan kolom. Dalam MATLAB,
matriks dapat dibentuk dengan berbagai cara. Ada tiga metode utama dalam
menulis matriks:
·
Metode
1: Menulis Matriks Secara Langsung
Cara paling sederhana
untuk membentuk matriks adalah dengan menuliskan elemen-elemen dalam tanda
kurung siku [], di mana:
- Elemen dalam satu
baris dipisahkan dengan spasi atau koma (,)
- Setiap baris baru
dipisahkan dengan titik koma (;)
Contoh Membentuk Matriks
Secara Langsung:
matlab
M = [1 2 3; 4 5 6; 7 8
9] % Matriks 3x3
Matriks M adalah matriks
dengan tiga baris dan tiga kolom, di mana setiap elemen di dalamnya dipisahkan
oleh spasi, dan setiap baris baru dipisahkan dengan titik koma.
·
Metode
2: Menggunakan Fungsi reshape()
Fungsi reshape()
digunakan untuk mengubah array satu dimensi menjadi matriks dengan ukuran
tertentu.
Contoh Penggunaan
reshape():
matlab
A = 1:9;
M = reshape(A,
[3,3]) % Mengubah array menjadi matriks
3x3
Matriks M akan berisi
nilai dari A yang diatur dalam bentuk 3x3.
·
Metode
3: Menggunakan Fungsi zeros(), ones(), dan rand()
MATLAB menyediakan
fungsi untuk membuat matriks dengan elemen tertentu secara otomatis:
- zeros(m,n): Membuat
matriks berukuran m x n dengan elemen 0
- ones(m,n): Membuat
matriks berukuran m x n dengan elemen 1
- rand(m,n): Membuat
matriks berukuran m x n dengan elemen acak antara 0 dan 1
Contoh Penggunaan:
matlab
Z = zeros(3,3) % Matriks 3x3 dengan elemen 0
O = ones(2,4) % Matriks 2x4 dengan elemen 1
R = rand(3,3) % Matriks 3x3 dengan elemen acak
3.
Membentuk
Matriks Khusus
MATLAB
juga menyediakan beberapa fungsi untuk membuat matriks khusus yang sering
digunakan dalam berbagai aplikasi:
·
Matriks
Identitas (eye())
Matriks identitas adalah
matriks persegi yang elemen diagonalnya bernilai 1 dan sisanya 0.
Contoh Matriks
Identitas:
matlab
I = eye(3) % Matriks identitas 3x3
·
Matriks
Diagonal (diag())
Matriks diagonal hanya
memiliki elemen di sepanjang diagonal utamanya, sedangkan elemen lainnya adalah
nol.
Contoh Matriks Diagonal:
matlab
D = diag([1 2 3 4]) % Matriks diagonal dengan elemen utama
[1,2,3,4]
·
Matriks
Segitiga (triu() dan tril())
- triu(A): Menghasilkan
matriks segitiga atas
- tril(A): Menghasilkan
matriks segitiga bawah
Contoh Matriks Segitiga:
matlab
U = triu(rand(4)) % Matriks segitiga atas dari matriks acak 4x4
L = tril(rand(4)) % Matriks segitiga bawah dari matriks acak
4x4
·
Matriks
Magic (magic())
Matriks magic adalah
matriks persegi yang jumlah elemen di setiap baris, kolom, dan diagonal
utamanya selalu sama.
Contoh Matriks Magic:
matlab
M = magic(3) % Matriks magic 3x3
B.
Oprasi
Aljabar dan matriks
|
Simbol |
Keterangan |
Contoh |
|
* |
Mengalikan dengan elemen, dengan ketentuan memiliki ukuran yang sama. |
C = A *B |
|
^ |
Memangkatkan matriks dengan skalar |
C = A^K |
|
.^ |
Memangkatkan elemen per elemen matriks dengan skalar |
C = A.^K |
|
‘ |
Tranpose matriks |
A’ |
|
./ |
Membagi elemen dengan ketentuan memiliki ukuran yang sama |
C =A ./B |
|
\ |
Menghasilkan AX=B |
C = A\B |
|
/ |
Menghasilkan XA=B |
C = A/B |
|
Inv |
Menghasilkan invers matriks dengan ketentuan matriks merupkan bujur
sangkar |
C = Inv(A) |
Nilai matriks 2x3
>> A = [2 3 4;4 5 6]
A =
2 3 4
4 5 6
>> B = [3 4 5;5 6 7]
B =
3 4 5
5 6 7
Perkalian matriks
C = A*B
ans =
6 15
10 20
Pangkat skalar
C = A^K
4 9 16
16 25 36
Mengubah matriks (transpose)
C = A ./B
2 4
3 5
4 6
Menghasilkan AX=B
C = A\B
0.5000 0.0000 -0.5000
0 0 0
0.5000 1.0000 1.5000
Menghasilkan XA=B
C = A/B
1.5000 -0.5000
0.5000 0.5000
C = Inv(A)
C.
Membuat
fungsi M-Fail
Fungsi M-File adalah
jenis file yang digunakan di MATLAB untuk menyimpan kode program dalam bentuk
fungsi terpisah yang dapat digunakan berulang kali. Fungsi ini sangat berguna
dalam pemrograman karena memungkinkan kita untuk membagi kode menjadi bagian yang
lebih kecil dan lebih terstruktur, sehingga lebih mudah dibaca, dipahami, dan
digunakan kembali.
Dalam MATLAB, ada dua
jenis utama file .m yang bisa dibuat:
1. Script M-File
• Berisi
sekumpulan perintah MATLAB yang dijalankan secara berurutan.
• Tidak
memiliki parameter input atau output.
• Semua
variabel yang dibuat dalam script akan langsung masuk ke dalam workspace
MATLAB.
2. Function M-File
• Memiliki
struktur khusus dengan parameter input dan output.
• Dapat
dipanggil dari script lain atau Command Window dengan memberikan nilai input
tertentu.
• Variabel
dalam function bersifat lokal, artinya tidak akan berpengaruh terhadap
workspace utama MATLAB.
Mengapa Menggunakan
Fungsi M-File?
Menggunakan fungsi
M-File dalam MATLAB memberikan banyak keuntungan, di antaranya:
1. Meningkatkan Efisiensi
•Kita tidak perlu menulis ulang kode berulang kali. Cukup
buat fungsi sekali, lalu gunakan berkali-kali.
2. Membantu Modularisasi
• Dengan
membagi program menjadi fungsi-fungsi kecil, kita bisa lebih mudah memahami
setiap bagian program.
3. Memudahkan Debugging
• Jika
terjadi kesalahan dalam program, kita bisa lebih mudah memperbaiki kode karena
setiap bagian memiliki fungsi yang jelas.
4. Menghemat Waktu
• Misalnya,
jika kita sering menghitung luas lingkaran di berbagai bagian program, kita
bisa cukup membuat satu fungsi hitungLingkaran.m dan memanggilnya kapan saja.
Struktur Dasar Fungsi
M-File di MATLAB
Setiap function M-File
memiliki struktur dasar seperti berikut:
function [output1,
output2, ...] = namaFungsi(input1, input2, ...)
% Komentar: Penjelasan tentang fungsi ini
% Kode program untuk melakukan perhitungan
atau operasi tertentu
end.
Penjelasan bagian-bagian
kode di atas:
• function
→ Kata kunci yang menandakan bahwa kita sedang membuat sebuah fungsi.
• [output1,
output2, ...] → Variabel yang digunakan untuk menyimpan hasil keluaran dari
fungsi. Bisa satu atau lebih.
• namaFungsi
→ Nama yang diberikan untuk fungsi ini. Harus sama dengan nama file .m yang
dibuat.
• (input1,
input2, ...) → Parameter masukan yang digunakan dalam perhitungan di dalam
fungsi. Bisa satu atau lebih.
• % →
Simbol untuk membuat komentar agar kode lebih mudah dipahami.
Contoh Fungsi M-File
Sederhana
Misalkan kita ingin
membuat fungsi untuk menghitung luas dan keliling lingkaran berdasarkan
jari-jari yang diberikan. Maka kita bisa menulis kode berikut:
function [luas,
keliling] = hitungLingkaran(r)
% Fungsi ini menghitung luas dan keliling
lingkaran berdasarkan jari-jari r
% Menghitung luas lingkaran
luas = pi
r^2;
% Menghitung keliling lingkaran
keliling = 2 pi r;
end.
Langkah-Langkah Membuat
dan Menjalankan Fungsi M-File
1. Membuka Editor MATLAB
• Buka
MATLAB.
• Ketik
edit di Command Window atau klik New Script di toolbar.
• Jendela
editor MATLAB akan terbuka.
2. Menulis Kode Fungsi
• Tulis
fungsi sesuai kebutuhan, misalnya fungsi hitungLingkaran di atas.
3. Menyimpan File
• Simpan
dengan nama hitungLingkaran.m.
• Nama
file harus sama dengan nama fungsi agar MATLAB dapat mengenali dan
menjalankannya.
4. Menjalankan Fungsi di
Command Window
Untuk menggunakan
fungsi, kita cukup mengetikkan perintah seperti berikut di Command Window:
[L, K] =
hitungLingkaran(7);
disp(['Luas: ',
num2str(L)]);
disp(['Keliling: ',
num2str(K)]);
Output yang akan muncul:
Luas: 153.9380
Keliling: 43.9823
Sifat-Sifat Fungsi
M-File
Fungsi dalam MATLAB
memiliki beberapa karakteristik utama:
1. Memiliki Ruang Kerja Sendiri (Local
Scope)
• Variabel
yang dibuat dalam fungsi tidak akan mempengaruhi variabel lain di MATLAB
kecuali jika dikembalikan sebagai output.
2. Dapat Menerima Input dan Menghasilkan
Output
• Fungsi
dapat menerima banyak parameter input dan memberikan lebih dari satu nilai
sebagai output.
3. Dapat Dipanggil Berulang Kali
• Setelah
dibuat, fungsi dapat digunakan kapan saja tanpa harus menulis ulang kodenya.
4. Memudahkan Pengorganisasian Kode
• Dengan
fungsi, kode menjadi lebih modular dan lebih mudah dikelola.
5. Dapat Digunakan dalam Skrip atau
Program Lain
• Fungsi
yang telah dibuat dapat dipanggil dari skrip MATLAB lainnya atau bahkan dari
fungsi lain.
Contoh Fungsi M-File
yang Lebih Kompleks
Misalkan kita ingin
membuat fungsi untuk menghitung luas permukaan dan volume bola, maka kita bisa
membuat M-File dengan kode berikut:
function [luasPermukaan,
volume] = hitungBola(r)
% Fungsi untuk menghitung luas permukaan
dan volume bola
% Menghitung luas permukaan bola
luasPermukaan = 4 pi
r^2;
% Menghitung volume bola
volume = (4/3) pi
r^3;
end.
Cara Menjalankan Fungsi
Di Command Window, kita
bisa mengetik:
[LuasBola, VolumeBola] =
hitungBola(5);
disp(['Luas Permukaan:
', num2str(LuasBola)]);
disp(['Volume: ',
num2str(VolumeBola)]);
Output yang akan muncul:
Luas Permukaan: 314.1593
Volume: 523.5988.
D.
Kontrol program Matlab
MATLAB adalah perangkat
lunak yang banyak digunakan dalam berbagai bidang ilmu, seperti teknik,
matematika, fisika, dan ilmu komputer. Salah satu keunggulan MATLAB adalah
kemampuannya dalam menangani komputasi numerik dengan efisien serta menyediakan
berbagai struktur kendali (control flow) yang memudahkan pengguna dalam menulis
kode yang modular, efisien, dan mudah dipahami. Pengaturan alur program
memungkinkan pengguna untuk mengulangi perhitungan secara berulang-ulang
ataupun memilih serta memutuskan kondisi-kondisi yang sesuai/diinginkan. MATLAB
menyediakan empat bentuk pengaturan alur program yang akan dibahas berikut ini
:
1. Perulangan For-End
Perulangan for-end digunakan untuk menjalankan
blok perintah dalam jumlah iterasi yang telah ditentukan.
for variabel = nilai_awal:step:nilai_akhir
% Perintah
yang akan diulang
end
Penjelasan :
·
nilai_awal → Nilai awal variabel
iterasi.
·
step → Langkah kenaikan atau
penurunan variabel (opsional, default = 1).
·
nilai_akhir → Batas akhir literasi.
Contoh :
Hasilnya :
2. Perulangan While-End
Perulangan while-end digunakan untuk menjalankan
perintah selama kondisi tertentu masih terpenuhi (true). Loop for
mengerjakan sekelompok perintah pengulangan yang diulang sebanyak suatu junk yang
kita tentukan, tetapi loop while mengerjakan sekelompok perintah yang diulang
secara tidak terbatas. Sintaks dasar
dalam MATLAB dari Loop While adalah:
while kondisi
%
Perintah yang akan diulang
end
contoh :
hasil :
Penjelasan :
·
Perulangan
berjalan dari 1 hingga 10 dengan langkah 2.
·
Program
mencetak teks dengan nomor literasi setiap kali perulangan dilakukan.
3. Percabangan
If-Elseif-Else-End
Percabangan if-elseif-else-end digunakan untuk
mengeksekusi perintah berdasarkan kondisi tertentu. Jika kondisi pertama
bernilai benar (true), maka blok kode di dalamnya dieksekusi. Jika tidak,
program akan mengecek kondisi berikutnya dalam elseif, dan jika tidak
ada kondisi yang terpenuhi, bagian else akan dieksekusi sebagai
alternatif terakhir.
if
kondisi1
% Perintah
yang dijalankan jika kondisi1 benar
elseif kondisi2
% Perintah
yang dijalankan jika kondisi2 benar
else
% Perintah
jika tidak ada kondisi yang benar
end
contoh :
hasil :
Penjelasan :
·
Jika
x lebih dari 0, program mencetak "Bilangan positif".
·
Jika
x kurang dari 0, program mencetak "Bilangan negatif".
·
Jika
x sama dengan 0, program mencetak "Bilangan nol".
4. Percabangan
Switch-Case-Otherwise-End
Struktur kendali switch-case-otherwise-end
digunakan untuk memilih satu dari beberapa blok perintah berdasarkan nilai
tetap suatu variabel. Berbeda dengan if-else, switch hanya mengevaluasi kesetaraan
nilai variabel tanpa menggunakan ekspresi logika kompleks.
switch variabel
case nilai1
%
Perintah jika variabel == nilai1
case nilai2
%
Perintah jika variabel == nilai2
case {nilai3, nilai4}
%
Perintah jika variabel == nilai3 atau nilai4
otherwise
%
Perintah jika tidak ada case yang cocok
end
contoh :
hasil :
Penjelasan :
·
Jika
hari bernilai 3, maka program mencetak "Rabu".
·
Jika
hari bernilai 6 atau 7, program mencetak "Akhir Pekan".
·
Jika
tidak ada yang cocok, program mencetak "Hari tidak valid".
E.
Contoh
Latihan dalam fisika
HUKUM GAUSS
Gambar di bawah ini memperlihatkan sebuah bola pejal yang bersifat
menginsulasi dengan jari-jari a membawa muatan positif 3Q yang
didistribusikan ke seluruh volumenya. Konsentris dengan bola ini adalah sebuah
konduktor dengan jari-jari dalam b dan jari-jari luar c, serta
memiliki muatan netto -Q
Sesuai dengan Hukum Gauss, medan listrik untuk setiap bagian bola tersebut
adalah sebagai berikut:
Untuk (di dalam bola padat)
(2.3)
Untuk (di antara bola padat dan bola
berongga)
(2.4)
Untuk (di dalam kulit bola berongga)
(2.5)
Untuk (di kulit terluar dan di luar bola
berongga)
(2.6)
Buatlah fungsi dari persamaan (2.3) sampai (2.6) menggunakan statement if
dengan input variasi posisi titik uji r. Output program untuk mengetahui medan
listrik pada titik uji r tersebut serta informasi karakter (titik uji ada di
dalam bola padat, di antara bola padat dan bola berongga, di kulit bola
berongga atau di luar bola berongga). Dari fungsi tersebut, buatlah grafik
medan listrik vs posisi r.
Jawab: ketik kode berikut di script yang baru sebagai berikut.
%% Hukum
Gauss - Medan Listrik
clc; clear; close all;
epsilon_0 = 8.85e-12; % Permitivitasi vakum
a = 1; % Jari-jari bola
padat
b = 2; % Jari-jari bola
berongga dalam
c = 3; % Jari-jari bola
berongga luar
Q = 1e-6; % Muatan total
r = input('Masukkan nilai r: ');
if r < a
rho = 3*Q / ((4/3)*pi*a^3);
E = (rho * r) / (3 * epsilon_0);
disp('Titik uji
ada di dalam bola padat');
elseif r < b
E = (3*Q) / (4*pi*epsilon_0*r^2);
disp('Titik uji
ada di antara bola padat dan bola berongga');
elseif r < c
E = 0;
disp('Titik uji
ada di dalam kulit bola berongga');
else
E = (2*Q) / (4*pi*epsilon_0*r^2);
disp('Titik uji
ada di luar bola berongga');
end
disp(['Medan
listrik di r = ', num2str(r), ' adalah ',
num2str(E), ' N/C']);
Setelah itu simpan dengan format file dan beri nama (contoh:
mainhukumgauss2.m)
Lalu di Command Windows ketik nama script yang telah dibuat (misalnya
mainhukumgauss2)
Bila muncul kode seperti ini
mainhukumgauss2
Execution of script mainhukumgauss2 as a function is not supported:
/MATLAB Drive/mainhukumgauss2.m
Error in mainhukumgauss2 (line 10)
r = input('Masukkan nilai r: ');
^^^^^^^^^^^^^^^^^^^^^^^^^^^
Masukkan nilai r:
Maka, kita hanya perlu masukkan nilai r di baris baru.
0.5-0.9 (untuk titik uji ada di dalam bola padat)
1.0-1.9 (untuk titik uji ada di antara bola padat dan bola berongga)
2.0-2.9 (untuk titik uji ada di dalam kulit bola berongga)
3- (untuk titik uji ada di luar bola
berongga)
Untuk grafik medan listrik E vs posisi r, buat script dengan kode berikut.
clc; clear; close all;
%
Menjalankan fungsi dalam satu script
r_values = linspace(0, 6, 100);
E_values = arrayfun(@(r)
medan_listrik(r, 1, 2, 3, 1e-6), r_values);
% Plot
grafik
figure;
plot(r_values, E_values); grid on;
xlabel('Posisi
r'); ylabel('Medan Listrik (N/C)');
title('Grafik
Medan Listrik vs Posisi r');
% Definisi
fungsi harus di akhir script
function E = medan_listrik(r, a, b, c, Q)
epsilon_0 = 8.85e-12;
if r
< a
rho = 3*Q / ((4/3)*pi*a^3);
E = (rho * r) / (3 * epsilon_0);
disp('Titik
uji ada di dalam bola padat');
elseif r
< b
E = (3*Q) / (4*pi*epsilon_0*r^2);
disp('Titik
uji ada di antara bola padat dan bola berongga');
elseif r
< c
E = 0;
disp('Titik
uji ada di dalam kulit bola berongga');
else
E = (2*Q) / (4*pi*epsilon_0*r^2);
disp('Titik
uji ada di luar bola berongga');
end
end
Setelah itu simpan dengan format file dan beri nama (contoh:
mainhukumgauss.m)
Lalu di Command Windows ketik nama script yang telah dibuat (misalnya
mainhukumgauss)
Maka akan muncul grafik seperti di bawah ini.
GAYA GRAVITASI BOLA PADAT
Sesuai konsep gravitasi, gaya gravitasi yang dialami benda bermassa akibat bola padat bermassa
akan berbeda kriteria ketika berada
dalam bola padat ataupun ketika berada di dalam bola padat. Sesuai konsep
mekanika diperoleh:
Untuk kondisi (di luar bola padat), maka berlaku
(2.7)
Untuk kondisi (di dalam bola padat), maka berlaku
(2.8)
Atau
(2.9)
Buatlah fungsi dari persamaan (2.7) dan (2.9) menggunakan statement if
dengan input variasi posisi Anda berada di dalam, di permukaan atau di luar
bumi. Output program adalah untuk mengetahui posisi Anda berada (Hint: gunakan
disp dengan karakter di dalam, di luar atau di permukaan bumi) dan besar gaya
gravitasi vs jarak terhadap pusat bola/bumi.
Jawab: ketik kode berikut di script yang baru sebagai berikut.
clc; clear; close all;
% Parameter
G = 6.674e-11; % Konstanta gravitasi (m^3/kg/s^2)
M = 5.972e24; % Massa bumi (kg)
R = 6371000; % Jari-jari bumi
(m)
m = 70; % Massa
benda (kg)
% Variasi
jarak r dari pusat bumi
r_values = linspace(0, 2*R,
100);
% Hitung
gaya gravitasi
F_values =
zeros(size(r_values));
for i = 1:length(r_values)
r = r_values(i);
if r
< R
% Jika r
lebih kecil dari R, berarti masih di dalam bola padat
F_values(i) = G * M * m * r / R^3;
disp(['r =
', num2str(r), ' m (Anda berada di dalam
bola padat)']);
elseif r
== R
% Jika r
sama dengan R, berarti di permukaan bola padat
F_values(i) = G * M * m / R^2;
disp(['r =
', num2str(r), ' m (Anda berada di permukaan
bola padat)']);
else
% Jika r
lebih besar dari R, berarti di luar bola padat
F_values(i) = G * M * m / r^2;
disp(['r =
', num2str(r), ' m (Anda berada di luar bola
padat)']);
end
end
%
Menampilkan gaya gravitasi di permukaan bumi
F_surface = G * M * m / R^2;
disp(['Gaya
gravitasi di permukaan bumi: ', num2str(F_surface), ' N']);
% Plot
grafik gaya gravitasi vs jarak
figure;
plot(r_values, F_values, 'b', 'LineWidth',
2);
grid on;
xlabel('Jarak
dari pusat bumi (m)');
ylabel('Gaya
Gravitasi (N)');
title('Grafik
Gaya Gravitasi vs Jarak');
legend('Gaya
Gravitasi');
Setelah itu simpan dengan format file dan beri nama (contoh:
maingayagravitasipadat.m)
Lalu di Command Windows ketik nama script yang telah dibuat (misalnya
maingayagravitasipadat)
Maka akan muncul grafik seperti di bawah ini.
Untuk mengetahui posisi kita di luar, permukaan atau di dalam bumi, ketik
script berikut:
>> r = input('Masukkan nilai r dalam meter: '); % Meminta input
dari pengguna
R = 6371000; % Jari-jari bumi dalam meter
if r < R
disp(['r = ',
num2str(r), ' m (Anda berada di dalam bola padat)']);
elseif r == R
disp(['r = ',
num2str(r), ' m (Anda berada di permukaan bola
padat)']);
else
disp(['r = ',
num2str(r), ' m (Anda berada di luar bola padat)']);
end
Masukkan nilai r dalam meter:
Kemudian
kita masukkan 5000000, maka outputnya
r = 5000000 m (Anda berada di
dalam bola padat)
Bila
kita masukkan 6371000, maka outputnya
r = 6371000 m (Anda berada di
permukaan bola padat)
Bila kita masukkan 7000000, maka
outputnya
r = 7000000 m (Anda berada di
luar bola padat)
HUKUM ARCHIMEDES
Sebuah balok bermassa 2 kg tercelup ke dalam fluida yang memiliki massa
jenis 100 . Jika diketahui konstanta gravitasi 9,8
, benda tersebut akan mengalami gaya ke atas yang besarnya:
(2.10)
Tentukan kondisi benda yang tercelup dengan ketentuan
benda tenggelam
benda melayang
benda terapung
Dalam kondisi benda tercelup sebagian maka bukanlah volume benda seluruhnya.
1.
Dengan memvariasikan volume benda, buatlah
algoritma untuk menggambarkan kondisi benda yang tercelup dengan menggunakan
statement if.
2.
Buatlah grafik hubungan gaya ke atas terhadap
volume.
Jawab: ketik kode berikut di script yang baru sebagai berikut.
clc; clear; close all;
% Parameter
rho_f = 1000; % Massa jenis fluida (kg/m^3) (contoh: air)
m = 2; % Massa
benda (kg)
g = 9.8; % Percepatan
gravitasi (m/s^2)
% Hitung
berat benda
W = m * g;
% Variasi
volume benda (dari kecil ke besar)
V_values = linspace(0.001, 0.01,
100); % Volume dalam m^3
Fb_values = rho_f * g *
V_values; % Hitung gaya ke atas
%
Menentukan kondisi benda berdasarkan gaya ke atas
kondisi =
strings(size(V_values));
for i = 1:length(V_values)
if Fb_values(i)
> W
kondisi(i) = "Terapung";
elseif Fb_values(i)
== W
kondisi(i) = "Melayang";
else
kondisi(i) = "Tenggelam";
end
end
%
Menampilkan hasil dalam tabel
T = table(V_values', Fb_values',
kondisi', ...
'VariableNames',
{'Volume (m^3)', 'Gaya
ke Atas (N)', 'Kondisi Benda'});
disp(T);
% Plot
Grafik dengan warna berbeda untuk setiap kondisi
figure;
hold on;
for i = 1:length(V_values)
if kondisi{i}
== "Terapung"
plot(V_values(i), Fb_values(i), 'bo', 'MarkerFaceColor',
'b'); % Biru
untuk Terapung
elseif kondisi{i}
== "Melayang"
plot(V_values(i), Fb_values(i), 'go', 'MarkerFaceColor',
'g'); % Hijau
untuk Melayang
else
plot(V_values(i), Fb_values(i), 'ro', 'MarkerFaceColor',
'r'); % Merah
untuk Tenggelam
end
end
xlabel('Volume
Benda (m^3)');
ylabel('Gaya
ke Atas (N)');
title('Grafik
Kondisi Benda terhadap Volume');
% Tambahkan
legenda secara eksplisit
legend({'Terapung
(Biru)', 'Melayang (Hijau)', 'Tenggelam (Merah)'}, 'Location',
'northwest');
hold off;
Setelah itu simpan dengan format file dan beri nama (contoh: mainhukumarchimedes2.m)
Lalu di Command Windows ketik nama script yang telah dibuat (misalnya
mainhukumarchimedes2)
Maka akan muncul grafik seperti di bawah ini.
Selain grafik, di Command Windows juga menampilkan data berikut.
Volume (m^3) Gaya ke Atas (N) Kondisi Benda
____________ ________________ _____________
0.001 9.8 "Tenggelam"
0.0010909 10.691 "Tenggelam"
0.0011818 11.582 "Tenggelam"
0.0012727 12.473 "Tenggelam"
0.0013636 13.364 "Tenggelam"
0.0014545 14.255 "Tenggelam"
0.0015455 15.145 "Tenggelam"
0.0016364 16.036 "Tenggelam"
0.0017273 16.927 "Tenggelam"
0.0018182 17.818 "Tenggelam"
0.0019091 18.709 "Tenggelam"
0.002 19.6 "Melayang"
0.0020909 20.491 "Terapung"
0.0021818 21.382 "Terapung"
0.0022727 22.273 "Terapung"
0.0023636 23.164 "Terapung"
0.0024545 24.055 "Terapung"
0.0025455 24.945 "Terapung"
0.0026364 25.836 "Terapung"
0.0027273 26.727 "Terapung"
0.0028182 27.618 "Terapung"
0.0029091 28.509 "Terapung"
0.003 29.4 "Terapung"
0.0030909 30.291 "Terapung"
0.0031818 31.182 "Terapung"
0.0032727 32.073 "Terapung"
0.0033636 32.964 "Terapung"
0.0034545 33.855 "Terapung"
0.0035455 34.745 "Terapung"
0.0036364 35.636 "Terapung"
0.0037273 36.527 "Terapung"
0.0038182 37.418 "Terapung"
0.0039091 38.309 "Terapung"
0.004 39.2 "Terapung"
0.0040909 40.091 "Terapung"
0.0041818 40.982 "Terapung"
0.0042727 41.873 "Terapung"
0.0043636 42.764 "Terapung"
0.0044545 43.655 "Terapung"
0.0045455 44.545 "Terapung"
0.0046364 45.436 "Terapung"
0.0047273 46.327 "Terapung"
0.0048182 47.218 "Terapung"
0.0049091 48.109 "Terapung"
0.005 49 "Terapung"
0.0050909 49.891 "Terapung"
0.0051818 50.782 "Terapung"
0.0052727 51.673 "Terapung"
0.0053636 52.564 "Terapung"
0.0054545 53.455 "Terapung"
0.0055455 54.345 "Terapung"
0.0056364 55.236 "Terapung"
0.0057273 56.127 "Terapung"
0.0058182 57.018 "Terapung"
0.0059091 57.909 "Terapung"
0.006 58.8 "Terapung"
0.0060909 59.691 "Terapung"
0.0061818 60.582 "Terapung"
0.0062727 61.473 "Terapung"
0.0063636 62.364 "Terapung"
0.0064545 63.255 "Terapung"
0.0065455 64.145 "Terapung"
0.0066364 65.036 "Terapung"
0.0067273 65.927 "Terapung"
0.0068182 66.818 "Terapung"
0.0069091 67.709 "Terapung"
0.007 68.6 "Terapung"
0.0070909 69.491 "Terapung"
0.0071818 70.382 "Terapung"
0.0072727 71.273 "Terapung"
0.0073636 72.164 "Terapung"
0.0074545 73.055 "Terapung"
0.0075455 73.945 "Terapung"
0.0076364 74.836 "Terapung"
0.0077273 75.727 "Terapung"
0.0078182 76.618 "Terapung"
0.0079091 77.509 "Terapung"
0.008 78.4 "Terapung"
0.0080909 79.291 "Terapung"
0.0081818 80.182 "Terapung"
0.0082727 81.073 "Terapung"
0.0083636 81.964 "Terapung"
0.0084545 82.855 "Terapung"
0.0085455 83.745 "Terapung"
0.0086364 84.636 "Terapung"
0.0087273 85.527 "Terapung"
0.0088182 86.418 "Terapung"
0.0089091 87.309 "Terapung"
0.009 88.2 "Terapung"
0.0090909 89.091 "Terapung"
0.0091818 89.982 "Terapung"
0.0092727 90.873 "Terapung"
0.0093636 91.764 "Terapung"
0.0094545 92.655 "Terapung"
0.0095455 93.545 "Terapung"
0.0096364 94.436 "Terapung"
0.0097273 95.327 "Terapung"
0.0098182 96.218 "Terapung"
0.0099091 97.109 "Terapung"
0.01 98 "Terapung"
Comments
Post a Comment