Ahmad Dahlan God does not play dice with the Cosmos.

Diferensial Numerik – Metode Finite Difference dengan Matlab

2 min read

Diferensial Numerik – Metode Finite Difference

Metode Finite Difference (Perbedaan Hingga) adalah teknik numerik yang digunakan untuk mendekati solusi persamaan diferensial. Metode ini menggantikan turunan kontinu dengan perbedaan terhingga (finite differences) yang dapat dihitung secara numerik. Berikut adalah penjelasan lebih mendalam mengenai metode ini:

Dasar Teori Finite Difference

Turunan pertama dan kedua dari suatu fungsi 𝑓(𝑥)f(x) dapat didekati menggunakan finite differences. Misalnya, untuk mendekati turunan pertama 𝑓′(𝑥), kita bisa menggunakan formula forward difference, backward difference, atau central difference.

1. Forward Difference :

f'(x)≈\frac{f(x+h)-f(x)}{h}

di mana h adalah langkah kecil (step size).

2. Backward Difference :

f'(x)≈\frac{f(x)-f(x-h)}{h}

3. Central Difference :

f'(x)≈\frac{f(x+h)-f(x-h)}{h}

Turunan kedua 𝑓′′(𝑥) dapat didekati dengan central difference:

f''(x)≈\frac{f(x+h)-2f+f(x-h)}{h^2}

Penerapan dalam Persamaan Diferensial Parsial

Dalam konteks persamaan diferensial parsial, finite difference digunakan untuk mendiskritisasi ruang dan waktu. Sebagai contoh, pertimbangkan persamaan panas satu dimensi:

\frac{∂u}{∂t}≈\alpha\frac{∂^2u}{∂x^2}

dengan kondisi batas dan kondisi awal yang diberikan.

Kita bisa mendiskritisasi ruang dan waktu menjadi grid, dengan 𝑥𝑖 = 𝑖Δ𝑥 dan tn=𝑛Δ𝑡. Kemudian, solusi 𝑢(𝑥,𝑡) didekati dengan u𝑖n​ yang berarti 𝑢(𝑥𝑖 ,tn).

Pendekatan finite difference untuk turunan ruang dan waktu dapat ditulis sebagai:

\frac{∂u}{∂t}≈\frac{u_i^{n+1}-u_i^n}{\Delta t}
\frac{∂^2u}{∂x^2}≈\frac{u_{i+1}^{n}-2u_i^n+u_{i-1}^{n}}{\Delta x^2}

Dengan menggantikan turunan dalam Persaman Difereinsal Parsial dengan finite differences, kita mendapatkan skema eksplisit atau implisit. Untuk skema eksplisit, substitusi ini menghasilkan:

\frac{u_i^{n+1}-u_i^n}{\Delta t}=α\frac{u_{i+1}^{n}-2u_i^n+u_{i-1}^{n}}{\Delta x^2}

yang bisa direorganisir untuk menghitung u𝑖n+1​​:

u_i^{n+1}=u_i^n+\frac{α Δ t}{(Δx)^2}(u_{i+1}^{n}-2u_i^n+u_{i-1}^{n})

Contoh Implementasi

Berikut adalah contoh sederhana implementasi metode finite difference untuk persamaan panas dalam bahasa pemrograman Matlab:

% Parameter
L = 1.0;           % Panjang batang
T = 0.5;           % Waktu total
alpha = 0.01;      % Konduktivitas termal
nx = 10;           % Jumlah grid ruang
nt = 100;          % Jumlah grid waktu
dx = L / (nx-1);   % Ukuran langkah ruang
dt = T / nt;       % Ukuran langkah waktu
k = alpha * dt / dx^2;

% Inisialisasi grid dan kondisi awal
u = zeros(1, nx);
u_new = zeros(1, nx);
u(floor(nx/2) + 1) = 1;  % Kondisi awal: puncak di tengah (MATLAB indexing starts from 1)

% Loop waktu
for n = 2:nt
    for i = 2:nx-1
        u_new(i) = u(i) + k * (u(i+1) - 2*u(i) + u(i-1));
    end
    u = u_new;
end

% Plot hasil
x = linspace(0, L, nx);
plot(x, u);
xlabel('Posisi');
ylabel('Suhu');
title('Distribusi Suhu pada Batang');
grid on;

Penjelasan Kode MATLAB

  1. Parameter dan Konstanta:
    • L, T, alpha, nx, nt, dx, dt, dan k diatur.
  2. Inisialisasi Grid:
    • u dan u_new diinisialisasi sebagai vektor baris dengan panjang nx yang diisi dengan nol.
    • Kondisi awal diatur dengan memberikan nilai 1 pada titik tengah batang (u(floor(nx/2) + 1) = 1). Perhatikan bahwa indeks MATLAB dimulai dari 1, sehingga floor(nx/2) + 1 digunakan untuk mengakses elemen tengah.
  3. Loop Waktu:
    • Loop luar berjalan dari 2 hingga nt, mensimulasikan perkembangan waktu (loop dimulai dari 2 karena MATLAB indeks dimulai dari 1).
    • Loop dalam berjalan dari 2 hingga nx-1, menghitung suhu baru berdasarkan formula finite difference eksplisit.
    • Setelah menghitung nilai u_new untuk setiap titik dalam grid, vektor u diperbarui dengan nilai u_new.
  4. Plotting:
    • Distribusi suhu pada akhir simulasi diplot menggunakan fungsi plot MATLAB.
    • Label sumbu dan judul grafik ditambahkan untuk memperjelas interpretasi hasil.

Dengan menjalankan kode MATLAB ini, Anda akan mendapatkan visualisasi distribusi suhu pada batang setelah waktu 𝑇=0.5T=0.5 detik.

Kesimpulan

Metode Finite Difference adalah alat yang kuat dan fleksibel untuk mendekati solusi dari persamaan diferensial. Dengan mengubah turunan menjadi perbedaan hingga, metode ini memungkinkan kita untuk memecahkan masalah yang sulit secara analitik melalui pendekatan numerik.

Ahmad Dahlan God does not play dice with the Cosmos.

Operasi Matematis Array Pada Bahasa C

Operasi matematis pada array dalam bahasa C melibatkan penambahan, pengurangan, perkalian, pembagian, dan berbagai manipulasi lainnya pada elemen-elemen array. Berikut adalah contoh-contoh bagaimana melakukan...
Ahmad Dahlan
1 min read

Operasi Array Dalam Bahasa C

Operasi Array Operasi pada array dalam bahasa C mencakup berbagai manipulasi data seperti mengakses, memperbarui, mengurutkan, menyalin, dan menghapus elemen. Berikut adalah beberapa operasi...
Ahmad Dahlan
1 min read

Struktur Data Aray Pada Bahasa C

Operasi Data Aray Pada Bahasa C Dalam bahasa C, array adalah struktur data yang terdiri dari sekumpulan elemen yang memiliki tipe data yang sama....
Ahmad Dahlan
1 min read

Tinggalkan Balasan