Transcript Document

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 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) v eya z = pi/100*trapz(Y)

TRAPZ – Trapezoidal Integrasyon

• •

Örnek 2 :

Aşağıdaki tabloda verilerin integralini trapez kuralıyla hesaplayın

x f(x)

0 1 0.1 7 0.2

4 0.3

3 0.4

5 0.5

2 İntegral = 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 = 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 :

Fonksiyonun 0-2 aralığında

x

3 1 – 2

x

5 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

%---------------------------% 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 :

x

3 1 – 2

x

5 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); %---------------------------%