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.
6
% 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
Post a Comment