Bu MATLAB kodu ile kullanıcı tarafından verilen bir vektörün (V
) Simpson yöntemi kullanılarak integralinin yaklaşık değerini hesaplanmaktadır. Simpson yöntemi, belirli bir fonksiyonun integralini hesaplamak için kullanılan bir yöntemdir ve genellikle nümerik integrasyon için tercih edilir. Bu programda, bu yöntemi kullanarak verilen vektörün belirli bir aralıktaki alanı hesaplanmaktadır. Aşağıda kodun adım adım açıklaması bulunmaktadır.
Simpson kuralı, belirli bir fonksiyonun integralini yaklaşık olarak hesaplamak için kullanılan bir yöntemdir. Eğer adet alt bölgeye böldüğümüz alanları hesaplıyorsak ve bu alt bölgelerin genişliği ise, Simpson kuralının formülü şu şekildedir:
Fonksyion simpsonOrnek
adında tanımlanmıştır ve iki girdi alır: V
(integrali alınacak vektör) ve h
(adım büyüklüğü). Kod, Simpson yöntemini kullanarak bu vektörün integralinin yaklaşık değerini hesaplamak için girdi vektörünü (V
) kullanır.
length()
fonksiyonu kullanılarak vektörün uzunluğu n bulunur.
function sonuc = simpsonOrnek(V, h)
% Fonksiyon giriş değişkenleri
% V: n elemanlı bir vektör
% h: (b-a)/n
% Fonksiyon çıkış değeri
% sonuc: vektörün kapladığı alanın yaklaşık değeri
% V = [ 0.1 0.2 0.3 0.4 0.3 0.3 0.2 0.1 0.05];
% h = 0.05;
% Vektörün uzunlugunu bulalım.
n = length(V);
Ardından, vektörün eleman sayısının çift olup olmadığı kontrol edilir rem(n, 2) == 0
. Eğer vektörün eleman sayısı çift ise hata verilir, çünkü Simpson yöntemi çift sayıdaki terimler için doğru sonuçlar üretmez.
% Eğer terim sayısı çiftse hata ver ve fonksiyondan çık
if rem(n, 2) == 0
error('vektör terim sayısı tek olmalıdır.');
end
İlk ve son terimler ayrı değişkenlere atanır. Bunlar V(1)
ve V(end)
değerleridir. Burada n
vektördeki terim sayısını verdiğinden, son terimi bulmak için V(n)
şeklinde bir atama da mümkündür.
% İlk ve son terimler
ilkTerim = V(1); %ilk terim
sonTerim = V(end); %son terim
Simpson yöntemi formülü kullanılarak integralin yaklaşık değeri hesaplanır. Bu formülde, Simpson yönteminde kullanılan katsayılar olan tekKatsayi
ve ciftKatsayi
tanımlanır.
% tek terimlerin katsayısı: Simpson kuralından gelen bir sabit
tekKatsayi = 2;
%çift terimlerin katsayısı: Simpson kuralından gelen bir sabit
ciftKatsayi = 4;
Ardından, tek indeksli terimlerin toplamı teklerToplami ve çift indeksli terimlerin toplamı ciftlerToplami
değişkenleri oluşturulur ve başlangıç değeri olarak 0
atanır.
% Tek indexli terimlerin toplamı
teklerToplami = 0; % başlangıçta sıfırlıyoruz
% Çift indexli terimlerin toplamı
ciftlerToplami = 0; % başlangıçta sıfırlıyoruz
5. Bunun için iki ayrı döngü kullanılır. Bir döngü tek indexli terimleri, diğeri ise çift indexli terimleri toplar.
%Tek indexli terimleri topla:
%1.,3.,5., ... terimler
for i = 1:2:n-1
teklerToplami = teklerToplami + V(i);
end
% Çift indeksli terimleri topla
% 2.,4.,6.,... terimler
for i = 2:2:n
ciftlerToplami = ciftlerToplami + V(i);
end
İlgili formül kullanılarak toplamlar (teklerToplami
) ve (ciftlerToplami
), ilk terim (ilkTerim
), son terim (sonTerim
) ve katsayılar kullanılarak toplam değişkeninde birleştirilir.
% alan hesabı
toplam = (ilkTerim + (tekKatsayi * teklerToplami) ...
+ (ciftKatsayi * ciftlerToplami) + sonTerim);
Son adım hesaplanır ve `sonuc` olarak fonksiyonun çağrıldığı yere döndürülür. Bu adımda, toplam değeri adım büyüklüğü ile çarpılır ve son olarak 3’e bölünür. Yani (h/3) ile çarpılır.
% Son adımın hesaplanması
sonuc = toplam * (h / 3);
Son olarak fonksiyon sonlandırılır.
end
Bu kod, Simpson yöntemi kullanarak verilen vektörün integralinin yaklaşık bir değerini hesaplar. Bu tür yaklaşımlar genellikle analitik çözümlerin mümkün olmadığı durumlarda ve sayısal hesaplama gerektiren problemlerde kullanılır.
Programın Test Edilmesi
Command Window içinde aşağıdaki komutları yazalım.
Bu komutlar sırasıyla şu işlemleri gerçekleştirir:
- Bir
y
vektörü oluşturulur. - Adım değeri için bir
delta_h
değeri belirlenir. - Fonksiyon sonucu integral isimli bir değişkene atanmak üzere fonksyion
y
vedelta_h
girdileriyle çalıştırılır. Aşağıdaki sonuç elde edilir.
>> y = [0.1 0.2 0.3 0.4 0.3 0.3 0.2 0.1 0.05];
>> delta_h = 0.05;
>> integral = simpsonOrnek(y, delta_h)
integral =
0.0958
Bir Dakika!
Şu an MATLAB ile program yazıyoruz. Neden onun eşsiz avantajlarından faydalanmayalım? Bu hesaplamayı tek bir satırda da pekala yazabiliriz.
function sonuc = simpsonOrnek(V, h)
if rem(numel(V), 2) == 0
error('vektör terim sayısı tek olmalıdır.');
end
sonuc = (h/3)*(V(1)+V(end)+ 2*sum(V(1:2:length(V)-1))+4*sum(V(2:2:length(V))));
end
Sonuç
Bu yazımızda anti-türevi alınması zor olan fonksiyonların Simpson kuralı yönteminden faydalanarak yaklaşık integral değerinin hesaplanmasını MATLAB ile gerçekleştirdik.
Öncelikle çok ayrıntılı bir şekilde yeni başlayan herkesin anlayabileceği şekilde yazdım. Ardından konu anlaşılmışsa daha kısa bir formül ile aynı işi yapan bir fonksiyon daha yazdım.