daha önce sympson 1/3 kuralını vermiştim bu kez sympson 1/3 ile 3/8 in beraber kullanılmasını ekledim.çünkü hatırlarsanız 1/3 sadece aralık sayısı çift olanlar için kullanılıyordu,tek olanlar için ise aşağıdaki kod geçerli olur. %kodu eklerken f fonksiyon dosyasını da eklemeyi unutmayın!!!!!
a=input('alt sını değerini girinz:');
b=input('üst sınır degerini giriniz:');
n=input('segment sayısını ggirniz:');
h=(b-a)/n;
if rem(n,2)==0
k=0;%0a atamayınca hata veriyor
p=0;
x=a:h:b;
for i=2:n %verilen n değeri çift olduğu için sympson 1/3 kuralı uygulanır
if rem(i,2)==0 %indisi çift olanlar(xin indisi 1den başladığı için kitaba göre ters oluyor)
k=k+4*f(x(i));
else %indisi tek olanalr
p=p+2*f(x(i));
end
end
I=(f(a)+f(b)+k+p)*(h/3)
syms x;
trueval=int(sin(x),a,b)
Et=trueval-I
Ea=-((((b-a)^5)/(180*n^4))*(int(sin(x),a,b)/(b-a)))
else %aralık sayısı tek ise sympson 1/3 ile 3/8 beraber kullanılır
if(n==3)%aralık 3 ise sadece sympson 3/8 uygulanır
x=a:h:b;
sum=f(x(1))+3*f(x(2))+3*f(x(3))+f(b);
I=((b-a)/8)*sum
else%aralık tek fakat 3den düyükse ilk 4 nokta için sympson 3/8 geriye kalan noktalara da sympson 1/3 uygulanır
x=a:h:b;
sum1=f(a)+f(4);
sum1=sum1+3*(f(2)+f(3));
I=(b-a)*(sum1/8)%sympson 3/8in uygulandığı kısım
sum2=f(4)+f(b);%geriye kalan noktalara sympson 1/3 uygulanır
for i=6:n
if rem(i,2)==0 %indisi çift olanlar(xin indisi 1den başladığı için kitaba göre ters oluyor)
k=k+4*f(x(i));
else %indisi tek olanalr
p=p+2*f(x(i));
end
end
sum2=sum2+k+p;
T=((b-a)/(3*n))*sum2
integral=I+T%en sonda bulunan iki integral değeri toplanır
end
end
f foNKSİYONU f.m dosyası
function y=f(x);
y=sin(x);
Basit Oyunlar / Uygulamalar
7 yıl önce
Hiç yorum yok:
Yorum Gönder