UAS Fisika Komputasi

 Nama : Aura Eka Hermila 

NIM : 1222070012 

Kelas : 6A 

UAS FISIKA KOMPUTASI  

1. Soal 1 (Regresi Linear) 

% Data Gaya (F) dan Percepatan (a) 

F = [10, 15, 20, 25, 30]; 

a = [2, 3, 4, 5, 6]; 

% Hitung koefisien regresi linear 

p = polyfit(F, a, 1); % p(1) = slope (b), p(2) = intercept (a0) 

% Tampilkan persamaan regresi 

fprintf('Persamaan regresi: a = %.2f*F + %.2f\n', p(1), p(2)); 

% Plot hasil 

figure; 

scatter(F, a, 'filled'); hold on; 

F_fit = linspace(min(F), max(F), 100); 

a_fit = polyval(p, F_fit); 

plot(F_fit, a_fit, 'r-', 'LineWidth', 2); 

xlabel('Gaya (N)'); 

ylabel('Percepatan (m/s^2)'); 

title('Regresi Linear Gaya vs Percepatan'); 

grid on;

2. Soal 2 (Interpolasi Newton) 

% Data waktu (t) dan suhu (f) 

t = [0 10 20 30]; 

f = [30 50 80 120]; 

% Panjang selang (h) diasumsikan konstan 

h = t(2) - t(1); 

% Titik yang ingin diinterpolasi 

x = 15; 

% Hitung nilai s 

s = (x - t(1)) / h; 

% Buat tabel selisih terbagi (Newton maju) 

n = length(f); 

delta = zeros(n,n); 

delta(:,1) = f'; 

for j = 2:n

 for i = 1:n-j+1 

 delta(i,j) = delta(i+1,j-1) - delta(i,j-1); 

 end 

end 

% Interpolasi Newton maju 

y_interp = delta(1,1); 

s_term = 1; 

for i = 1:n-1 

 s_term = s_term * (s - (i-1)); 

 y_interp = y_interp + (s_term * delta(1,i+1)) / factorial(i); 

end 

% Tampilkan hasil 

fprintf('Suhu pada t = %.2f detik adalah %.4f °C\n', x, y_interp); 

output 

Suhu pada t = 15.00 detik adalah 63.7500 °C 

3. Penjelasan setiap kode 

Soal 1

% Data Gaya (F) dan Percepatan (a) 

F = [10, 15, 20, 25, 30]; 

a = [2, 3, 4, 5, 6]; 

Penjelasan 

Baris ini memasukkan data hasil eksperimen. 

F adalah array yang berisi nilai gaya (N). 

a adalah array yang berisi nilai percepatan (m/s²). 

% Hitung koefisien regresi linear 

p = polyfit(F, a, 1); % p(1) = slope (b), p(2) = intercept (a0) 

Penjelasan 

Fungsi polyfit(x, y, n) digunakan untuk mencari polinomial derajat n yang paling cocok  dengan data x dan y. 

Di sini, 1 berarti kita cari regresi linear (derajat 1). 

Hasilnya adalah array p: 

p(1) = kemiringan/gradien (slope) 

p(2) = intersep (titik potong dengan sumbu-y) 

% Tampilkan persamaan regresi 

fprintf('Persamaan regresi: a = %.2f*F + %.2f\n', p(1), p(2)); 

Penjelasan 

Menampilkan hasil regresi dalam format persamaan linear a = bF + a0 menggunakan fungsi  fprintf. 

% Plot hasil 

figure; 

scatter(F, a, 'filled'); hold on; 

Penjelasa, 

figure: membuka jendela grafik baru.

scatter(F, a, 'filled'): membuat grafik sebar (scatter plot) untuk melihat distribusi data. hold on: agar grafik berikutnya digambar di figure yang sama. 

F_fit = linspace(min(F), max(F), 100); 

a_fit = polyval(p, F_fit); 

Penjelasan 

linspace(min, max, n) membuat 100 titik F dari nilai minimum ke maksimum. polyval(p, F_fit) menghitung nilai a berdasarkan persamaan regresi untuk setiap F_fit. 

plot(F_fit, a_fit, 'r-', 'LineWidth', 2); 

xlabel('Gaya (N)'); 

ylabel('Percepatan (m/s^2)'); 

title('Regresi Linear Gaya vs Percepatan'); 

grid on; 

Penjelasan  

plot(...): menggambar garis regresi dalam warna merah ('r-') dengan ketebalan garis 2. xlabel, ylabel, dan title: memberi label sumbu dan judul grafik. 

grid on: menampilkan garis kisi untuk mempermudah pembacaan grafik. 

Soal 2 

% Data waktu (t) dan suhu (f) 

t = [0 10 20 30]; 

f = [30 50 80 120]; 

Penjelasan 

Mendefinisikan vektor t sebagai waktu (dalam detik) dan f sebagai nilai suhu (dalam °C)  yang diukur pada waktu tersebut. 

% Panjang selang (h) diasumsikan konstan 

h = t(2) - t(1);

Penjelasan 

Menghitung selisih antara dua titik waktu berurutan sebagai nilai h (asumsi selang waktu  sama). 

% Titik yang ingin diinterpolasi 

x = 15; 

Penjelasan 

Menentukan nilai waktu (dalam detik) pada titik yang ingin dicari suhu-nya menggunakan  interpolasi. 

% Hitung nilai s 

s = (x - t(1)) / h; 

Penjelasan 

Menghitung nilai s dalam rumus Newton maju. s merupakan selisih relatif terhadap titik awal  (t₀), dibagi dengan panjang selang h. 

% Buat tabel selisih terbagi (Newton maju) 

n = length(f); 

delta = zeros(n,n); 

delta(:,1) = f'; 

Penjelasan 

n adalah jumlah data. 

delta adalah tabel selisih Newton, dengan kolom pertama diisi dengan nilai f (di-transpose  jadi kolom vektor). 

for j = 2:n 

 for i = 1:n-j+1 

 delta(i,j) = delta(i+1,j-1) - delta(i,j-1); 

 end 

end

Penjelasan 

Perulangan ini digunakan untuk menghitung selisih maju dari data f. 

Kolom ke-2 menyimpan selisih pertama. 

Kolom ke-3 menyimpan selisih kedua, dan seterusnya. 

% Interpolasi Newton maju 

y_interp = delta(1,1); 

s_term = 1; 

Penjelasan 

Inisialisasi hasil interpolasi y_interp dengan nilai f(t₀). s_term adalah komponen perkalian  dari s(s-1)(s-2)... dalam rumus Newton. 

for i = 1:n-1 

 s_term = s_term * (s - (i-1)); 

 y_interp = y_interp + (s_term * delta(1,i+1)) / factorial(i); 

end 

Penjelasan 

Perulangan untuk menghitung nilai polinom Newton secara bertahap. s_term menghitung bagian dari suku Newton: s(s-1)(s-2)... 

delta(1, i+1) mengambil selisih ke-i. 

factorial(i) adalah pembagi dari suku tersebut. 

% Tampilkan hasil 

fprintf('Suhu pada t = %.2f detik adalah %.4f °C\n', x, y_interp); 

Penjelasan 

Menampilkan hasil akhir suhu pada waktu yang diinterpolasi dalam format desimal 2 dan 4  angka. 

versi dengan input otomatis, tinggal bilang ya!


Comments

Popular posts from this blog

Flowchart Fluida Dinamis

Storyline App Inventor Fulida Dinamis

Contoh Matriks Determinan 4 x 4