Document

Report
SAYISAL İNTEGRAL
Matlab ile sayısal integrasyon
yöntemleri.
• Şekilde görüldüğü gibi
İntegral hesabında, fonksiyonun her
bir verilen noktasında
kümülatif alanı hesaplanır.
• Sayısal integrasyon ise, integralin
analitik değerine,
çeşitli yöntemlerle yaklaşmadır.
Sayısal İntegrasyon Yöntemleri
Sayısal integral yöntemleri, grafik üzerinde görüldüğü gibi yaklaşık değerler verir.
Sayısal İntegrasyon Yöntemleri
• Kare Yöntemi
Bu yöntemde Fonksiyonun her bir aralıkta sabit bir değeri olduğu varsayılır.
• Trapez Yöntemi
Bu yöntem verilen fonksiyonun belirli integrali hesaplanırken a ve b
aralığında x ekseni ile arasına uygun bir yamuk çizilerek bu yamuğun alanı
hesaplanır.
• Simpson Yöntemi
Bu yöntem trapez yönteminden daha iyi sonuç vermektedir. Burada
integralin alt ve üst sınırı büyükse bu aralığı n>=2 ve çift olacak şekilde n
tane alt aralığa bölerek ardışık çift aralıklar için bu yöntem kullanılır.
Sayısal İntegrasyon Yöntemleri
• İntegrali alınacak fonksiyonun grafik gösterimi
Sayısal İntegrasyon Yöntemleri
• İntegralin analitik çözümü (Gerçek Çözüm)
Sayısal İntegrasyon Yöntemleri
• Gerçek çözüme sayısal yöntemle yaklaşım
Kareler ile İntegral
• Fonksiyonun her bir aralıkta sabit bir değeri
olduğu varsayılır.
Trapez ile integral
• Kareler yerine yamuklar kullanır.
Simpson 1/3 kuralı
• En yaklaşık sonucu verir.
Kare Metodu Uygulama
function [F] = rectangle(a, b, n)
%Bu fonksiyon kare yöntemini uygulayarak integralin yakaşıkl değerini bulur.
%Giriş değerleri % a=ilk değer, b=son değer, n=iterasyon sayısı.
h = (b - a) / n;
% x = a + h * [0:n-1];
% sol köşe için: O(h)
x = a + h * ([0:n-1] + .5);
% merkezi için: O(h²)
% x = a + h * [1:n];
% sağ köşe için: O(h)
F = f(x) * h;
function [func] = f(x)
func = 3 * x.^2; % fonksiyon buraya yazılıre
end
Trapez Yöntemi Uygulama
function [F] = trap(f,a,b,n)
%% f=fonksiyon, a=başlangıç değeri, b=son değeri, n=number of intervals
h = (b - a) / n;
x = [a:h:b];
for ii = 1: length(x)
y(ii) = f(x(ii));
end
F = h*(y(1) + 2*sum(y(2:end-1)) + y(end))/2;
end
• The trapezoidal rule is one of a family of
formulas for numerical integration called
Newton–Cotes formulas, of which the
midpoint rule is similar to the trapezoid rule.
Simpson's rule is another member of the same
family, and in general has faster convergence
than the trapezoidal rule for functions which
are twice continuously differentiable,
TRAPZ –Integrasyon Fonksiyonu
• Tanım :
• Trapezoid Kuralı, İntegrale dikdörtgenler yerine
yamuklarla yaklaşma metodudur.
• Verilen x ve y noktalarının oluşturacağı
yamukların alanı yaklaşık integral değerini verir.
Kullanım :
• Z = trapz(Y)
Z = trapz(X,Y)
Z = trapz(...,dim)
TRAPZ – Trapezoidal Integrasyon
• Örnek 1:
>>x = 0:pi/100:pi;
>>y = sin(X);
z = trapz(X,Y)
veya
z = pi/100*trapz(Y)
TRAPZ – Trapezoidal Integrasyon
• Örnek 2:
• Aşağıdaki tabloda verilerin integralini trapez kuralıyla hesaplayın
x
0
0.1
0.2
0.3
0.4
0.5
f(x)
1
7
4
3
5
2
İntegral
[
]
= (0.5 - 0) 1 + 2(7 + 4 + 3 + 5) + 2
10
= 2.05
>> x = [0 0.1 0.2 0.3 0.4 0.5];
>> y = [1 7 4 3 5 2];
>> trapz(x,y)
TRAPZ – Trapezoidal Integrasyon
• Örnek 2 Çözüm :
• Trapez yöntemi ile kendimiz çözersek, aşağıdaki giib bir denklem
kurmamız gerekir.
İntegral
[
]
= (0.5 - 0) 1 + 2(7 + 4 + 3 + 5) + 2
10
= 2.05
Aynı problemi, matlabda trapz komutu ile çözeriz.
>> x = [0 0.1 0.2 0.3 0.4 0.5];
>> y = [1 7 4 3 5 2];
>> trapz(x,y)
Ans =
2.0500
QUAD- Sayısal İntegral
• Tanım :
• Bu komut yinelemeli Simpson 1/3 yöntemini
kullanarak [a − b] aralığında integrali hesaplar.
• Adapte Gauss kuadratörü ile integral alınır.
• Kullanım :
• q = quad(fun,a,b)
q = quad(fun,a,b,tol)
q = quad(fun,a,b,tol,trace)
[q,fcnt] = quad(...)
QUAD- Sayısal İntegral
• Örnek :
1
x3 – 2x5
Fonksiyonun 0-2 aralığında
integralini çözün.
Çözüm : Önce fonksiyon m-dosyasında tanımlanır
function y = myfun(x)
y = 1./(x.^3-2*x-5);
end
• 0-2 aralığında integralini almak için quad çağrılır
>>quad(@myfun,0,2)
QUAD- Sayısal İntegral
• Örnek :
Aynı fonksiyon, anymous şekilde de tanımlanabilir.
f = @(x)1./(x.^3-2*x-5);
Bu şekilde tanımlandığında, ismi verilmesi yeterlidir.
quad(F,0,2);
QUAD- Sayısal İntegral
Fonksiyon daha önce tanımlanarak gönderilebileceği gibi
y = 0.2 + 25*x-200*x.^2 + 675*x.^3-900*x.^4 + 400*x.^5;
quad(y)
karakter dizisi şeklinde direkt fonksiyona gönderilebilir.
quad('0.2 + 25*x-200*x.^2 + 675*x.^3-900*x.^4 + 400*x.^5', 0,.8)
y2 = x.^5 + 7*x.^4 + 4*x.^3 + 3 * x.^2 + 5 *x + 2
quad('y2 = x.^5 + 7*x.^4 + 4*x.^3 + 3 * x.^2 + 5 *x + 2', 0,.5)
DBLQUAD – Çift Değişkenli İntegral Çözücü
• Tanım :
• Dblquad komutu MATLAB’de iki değişkenli (bivariate)
fonksiyonların integrallerini almayı sağlar.
• Yani f (x, y) gibi iki değişkene bağlı fonksiyonların integrali
dblquad ile hesaplatılabilir.
Kullanım :
• q = dblquad(fun,xmin,xmax,ymin,ymax)
q = dblquad(fun,xmin,xmax,ymin,ymax,tol)
q = dblquad(fun,xmin,xmax,ymin,ymax,tol,method)
DBLQUAD – Çift Değişkenli İntegral Çözücü
Örnek :
f(x,y) = ySin(y)sin(x) + xcos(y)
Şeklinde tanımlı fonksiyonun integrali için Matlabda
Önce fonksiyon yazılır ve dblquad her bir değer için
aralık verilerek çağrılır.
f = @(x,y)y*sin(x)+x*cos(y);
q = dblquad(f,pi,2*pi,0,pi)
ans =
-9.8696
QUAD2D – 2 Alanda İntegral
• Tanım :
• Bir yüzey alanı boyunca sayısal integrali hesaplar.
• Kullanım :
• q = quad2d(fun,a,b,c,d)
[q,errbnd] = quad2d(...)
q = quad2d(fun,a,b,c,d,param1,val1,param2,val2,...)
QUAD2D – 2 Alanda İntegral
• Örnek 1:
• [(x+y)1/2 (1+x+y)2]-1 integralini 0 <y<1
aralığında hesaplayın.
%---------------------------%
fun = @(x,y) 1./(sqrt(x + y) .* (1 + x + y).^2 )
ymax = @(x) 1 - x;
%---------------------------%
Q = quad2d(fun,0,1,0,ymax)
QUAD2D – 2 Alanda İntegral
• Örnek 2 :
Y*sin(x) + x * cos(y) fonksiyonun
π ≤ x ≤ 2 π ve 0 ≤ y ≤ π aralıklarında integrali
Quad2d(x,y) = y. * sin(x) + x. *cos(y),pi,2 *pi,0,pi)
ans =
-9.8696
QUADL
• Tanım :
Adaptive Lobatto quadrature yöntemi ile,
yaklaşık integrali daha yüksek ayrıntı ile
hesaplar.
• Kullanım :
q = quadl(fun,a,b)
q = quadl(fun,a,b,tol)
quadl(fun,a,b,tol,trace)
[q,fcnt] = quadl(...)
QUADL
• Örnek :
1
x3 – 2x5
fonksiyonun integrali
Quadl(@fonksiyon,0,2)
şeklinde çözülebileceği gibi,
Aynı fonksiyon sabit parametresi ile de
çağrılabilir.
Quad = (@(x)fonksiyon(x,5),0,2);
QUADV - Vectörize quadrature
• Tanım :
• Compleks dizi şeklinde tanımlı fonksiyonların integralini
hesaplar.
• Kullanım :
Q = quadv(fun,a,b)
Q = quadv(fun,a,b,tol)
Q = quadv(fun,a,b,tol,trace)
[Q,fcnt] = quadv(...)
QUADV - Vectörize quadrature
• Örnek :
• Aşağıdaki şekilde array parametreli bir fonksiyon tanımlanmış
olsun
%---------------------------%
function Y = myarrayfun(x,n)
Y = 1./((1:n)+x);
%---------------------------%
0 ve 1 arasında, parametere 10 verilerek hesaplanmak istenirse
Qv = quadv(@(x)myarrayfun(x,10),0,1);
QUADV - Vectörize quadrature
• Not: Aynı fonksiyon, skalar olarak tanımlanıp, for döngüsü
üçünde quad ile çağrılsaydı, aynı sonuçlar alınmayacaktı.
for k = 1:10
Qs(k) = quad(@(x)myscalarfun(x,k),0,1);
end
% skalar fonksiyon :
%---------------------------%
function y = myscalarfun(x,k)
y = 1./(k+x);
%---------------------------%

similar documents