1/28/2013
MATLAB Ek Ders 2:
Numeric Analiz Metotları
Kitabımız: MATLAB ile Uygulamaları (Ahmet Altıntaş)
Yrd. Doç. Dr. Sevgi Zübeyde GÜRBÜZ
Yrd. Doç. Dr. İsrafil BAHÇECİ
ELE 371 ve ELE 375
Bahar 2013
Bazi Ozel Fonksiyonlar
 Yuvarlama ve Isaret





round(): en yakin tamsayiya yuverlama
fix(): 0’a yakinlasacak sekilde yuvarlama
floor(): -sonsuz’a yakinlasak sekilde yuvarlama
ceil(): +sonusuz’a yakinlasacak sekilde yuvarlama
Sign(): isaret bulma
A= [-1.3 2.4 9.9 ; -2.5 -2.6 2]
>> round(A)
ans =
-1 2 10
-3 -3 2
>> floor(A)
>> fix(A)
ans =
ans =
-1
-2
2
-2
9
2
-2
-3
2
-3
9
2
>> ceil(A)
>> sign(A)
ans =
ans =
-1
-2
3
-2
10
2
-1
-1
1
-1
1
1
1
1/28/2013
Rasgele sayilar/matrisler
 help randfun
 rand(): (0,1) araliginda duzgun dagilimli matris
 randi(): duzgun dagilimli rasgle tamsayi matrisler
 randn(): Gauss dagilimina sahip, birim varyans elemanlari olan
matrisler
 randperm(N): 1 den N’e kadar olan tamsayilari rasgele siralar
 Kullanim ornekleri:
 rand(n): n x n boyutunda (0,1) aralginda duzugn dagilimli matris
 rand(n,m): n x m boyutunda yukardaki gibi bir matris
 rand(n), randn(n,m)
 randi(n), randi(n,m)
 Yuvarlama fonkisyonlari ve rand() komutu ile istenlin aralikta
tamsayilar uretilebilir
 floor(5*rand(3,5))+4: [4,8] araliginda duzgun dagilimli tamsayi iceren
3 x 5 ebatinda matris
Matrislerin Analizi
 Lineer cebirde gerekli pek cok fonksiyon matlab’ta
hazir fonksiyonlar olarak bulunmakta
 inv(A) ve pinv(A): matrisin tersi ve pseudo tersi
 det(A): determinant
 [eigen_vektor,eigen_deger] = eig(A):
 A matrisinin eigen vektorleri ve degerleri
 rank(): matrisin rank’I
 size(): matirsin ebati, size([1 2;3 4;5 6]) = [3 2]
 trace(): ana kosegen elemanlarinin toplami
 diag(A,k): k. kosegen elemanlari
 blkdiag(A,B,…): A, B,… matrislerini kosegenlere
koyarak yeni matris olusturur, diger girdiler 0’dir.
2
1/28/2013
Matris Bicimlendirme
 fliplr(): matrisi sag/sol yonunde cevirme






(satirlar)
flipud(): matrisi asagi yukari yonunde cevirme
(kolonlar)
rot90(A) : matrisi 90 derece saatin tersi
yonunde cevirme
rot90(A,k): matrisi 90k derece saatin tersi
yonunde cevirme
tril(): lower tirangular matrisi verir
triu(): upper triangular metrisi verir
reshape(A,m,n): A matrisini, m x n ebatinda
matrisele cevirir. A matrisinden kolon sirasi ile
elamanlari alip M by N matris olarak yazar: A
nin eleman sayisi MN olmali.
>> reshape([1 2 3; 4 5
6],3,2)
ans =
1
4
2
5
3
6
Sayisal Analiz Fonksiyonlari
 max()
 cumprod() : kumulatif
 min()
 mean(): ortalama
 median(): orta deger
 std(): standard sapma


 sum(): toplam
 prod(): carpim

 sort(): sirlama
 diff(): fark bulma, x[n]-x[n-1]

 cumsum(): kumulatif
toplama

carpim
primes(N): N e kadar ki
asalsayilari
factorial(N): 1 den N a
kadar olan sayilarin
carpimi
gcd(x,y): en buyuk ortak
bolen
lcm(x,y): en kucuk ortak
carpan
rem(x,y): x/y bolme
isleminde kalan
3
1/28/2013
Dogrusal Denklem Cozumu
 Matris inversion ile yapilabilir.Ancak verimli olan
metod, Gauss Yoketme metodudur ve MATLAB’ta
‘\’ islemi ile yapilir.
 y=Ax icin x:
 x = inv(A)*y
 ‘\’ metodu:
 X = A\y
Seyrek Matrisler (1)
 Matrisin cok sayida
>> M=[1 0 0 0;0 1 0 0; 0 0 0 0;0 2 0 0]
elemani 0 ise MATLAB’ta
bazi verimli islemler
yapilabilir.
M=
1
0
0
0
 Seyrek matiris gosterimi:
 S=sparse(M): Sadece 0
olmayan terimlerin konum
ve degerlerini dondurur
 N = full(S): Matrisi normal
formuna dondurur
 S = sparse(i,j,s,m,n): m x n
matrisinin (i,j) entrilerine s
degerlerini yazar.
 i,j,s kolon vektorleri
0
1
0
2
0
0
0
0
0
0
0
0
>> S= sparse(M)
S=
(1,1)
(2,2)
(4,2)
>> whos S M
Name
Size
M
S
4x4
4x4
1
1
2
Bytes Class
Attributes
128 double
88 double sparse
4
1/28/2013
Seyrek Matrisler (2)
 spconvert()
 D=[i j v] or D = [i j v_re v_im]
 S = spconvert(D): v (ve ya v_re+1iv_im)
degerlerini, (i,j) konumlarina koyarak sparse matris
elde edilir
 Ornek:
>> full(spconvert([1 1 1; 2 2 1; 4 2 2]))
ans =
1 0
0 1
0 0
0 2
Seyrek Matrisler (3)
 S ile ayni seyreklikte rastgele matrisler
 sprand(S): S ile ayni seyrekli DD matris
 sprand(m,n,d): m x n ebatinda, d yogunluklu seyrek matris
 sprandn(), sprandn(m,n,d): Yuakrdaki gibi, ancak Gauss
dagilimli matrisler
 Seyrek Matrislerle Islemler:
 nnz: 0 olmayan terim sayidi
 nonzeros: 0 olmayan terimler
 nzmax: matrisi icin kullnailan hafiza
 spones: sparse matrisin 0 dan farkli elemanlarini 1’e
donusturur
 spy: 0 olmayan terimler goruntulenir
5
1/28/2013
Cok Boyutlu Matrisler
 N x M x K X … ebatinda
matrisler uretilip kullanilabilir
A(:,:,3) =
 Or: 2x3 ebatinda 4 matris:
>> A = rand(2,3,4)
0.8003
0.1419
0.4218
0.9157
0.7922
0.9595
0.8491
0.9340
0.6787
0.7577
A(:,:,1) =
0.1270
0.9134
0.6324
0.0975
0.2785
0.5469
A(:,:,4) =
0.6557
0.0357
A(:,:,2) =
0.9575
0.9649
0.1576
0.9706
0.9572
0.4854
Numerik Analiz Araclari
 Polinomlar, Egri Uydurma ve Interplasyon
 Fonksiyon Optimizasyonlari
 Numerik Turev ve Numeric Integral
 Diferansiyel Denklemler
6
1/28/2013
Polinomlar
 F(x) = anx^n + a_n-1 x^(n-
 Kokleri R olan polynom:
1)… + a_0
poly(K)
 A= [ a_n a_(n-1) … a_0]
>> poly([-1 -1 0])
ans =
1 2 1 0
 Polinomda olmayan
terimlerin katsayisi 0!!
 Polinom koku: roots(A)
>> A= [1 2 1]
A=
1 2 1
>> roots(A)
ans =
-1
-1
 A kare matrisi icin
karakteristik polinom:
 P = poly(A)
 A kare matrisinin eigen
degelerini
 roots(P) ile bulabilir
Polinom Islemleri
 polyval(p,x): p polinomumun x noktasindaki




degeri
polyder(p): polinomun turevi
conv(p1,p2): polynom carpimi, p1(x)*p2(x)
deconv(p1,p2): polynom bolmumu: p1(x)/p2(x)
residue(p1,p2): kismi kesirlere ayirma
 P1(x)/P2(x) = x-x_s + A/(x-x0) + B/(x-x_1) +..
7
1/28/2013
Egri Uydurma (Curve Fitting)
 Elimizdeki oclumleri bir polynom ile ifade etmeye yarar.
 Bunun icin istenilen derecedeki polynomun katsayilari oyle
hesaplanirki, olcum noktalarinda polinomun aldigi
degerlerle olcumde alinina degerler arasindaki farka
minimuma indirilir
 polyfit(x,y,n), (x,y) vactor olcumlerini n. dereceden bir
polynoma uydurulur, hata: en kucuk karalere
 Or: zaman icinde alinmis hava kirlilik olcumlari
 t=1:.5:5
 y=[-0.15 0.24 .68 1.04 1.21 1.15 0.86 0.41 -0.08]; plot(t,y,’o’)
 [p] = polyfit(t,y,2): 2.derece polinoma fit
 tt =0:0.01:6; plot(tt,polyval(p,tt),'--')
Ornek polyfit
8
1/28/2013
Interpolasyon (1)
 Verilen bir vektor icin ara degerleri kestirir
 (x,y) tanimli vektor icin, (x_i,y_i) noktalarini kestiri.
x_i ve x vektorlerindeki birbiri ile ayni degerler icin
y_i=y dondurulur.
 Interp1(): tek boyutlu interpolasyon
 interp1(x,y,xi): Linear interpolasyon ile, xi noktalari
icin yi noktlarini hesaplar.
 (x(m),y(m)) ile (x(m+1),y(m+1)) arasindaki dogru belirlenip,
x(m) ile x(m+1) arasindaki x(i) degerleri icin, o dogru
uzerindeki y(i) degerleri hesaplanir.
 interp1(z,y,xi,method)
 Methods: ‘nearest’, ‘linear’, ‘spline’,’pchip’,’cubic’,’v5cubic’
Interpolasyon (2)
 interpft(x,n): FFT kullanma yolu ile 1D interpolasyon
 m-uzunlugundaki peryodik x vektorunu, n esit aralikli olacak
sekilde yeniden orneklendirir
 X sinyali once FFT ile donusturulur, sonra daha cok sayida
nokta ile iFFT kullanilir.
% Set up a triangle-like signal signal to be interpolated
y = [0:.5:2 1.5:-.5:-2 -1.5:.5:0]; % equally spaced
factor = 5; % Interpolate by a factor of 5
m = length(y)*factor;
x = 1:factor:m;
xi = 1:m;
yi = interpft(y,m);
plot(x,y,'o',xi,yi,'*')
legend('Original data','Interpolated data')
9
1/28/2013
Interpolasyon (3)
 interp2(): 2D interpolasyon
 2 boyutlu fonksiyon: (x,y,z) vektorlrti ile tanimli
olsun, yani z(k) = f(x(k),y(k))
 ZI = f(XI,YI) degerlerini bulmak icin
 Interp2(x,y,z,xi,yi,’method’)
 TriScatteredInterp: Dagitik data icin 2D/3D
interpolasyon
 See: help TriScatteredInterp
Geometrik analiz
 polyarea(x,y): koseleri tanimlanmis bir cokgen icin
alan hesabi
 Ornek: XY = [0 2 2 0 0; 0 0 2 2 0]
 polyarea(XY(1,:),XY(2,:))
 ans = 4
 inpolygon(x,y,xv,yv): (x,y) noktalarinin (xv,yv)
polygonun icinde olup olmadigina bakar
 inpolygon([1 1],[1 4],XY(1,:),XY(2,:))
 ans = [1 0]
10
1/28/2013
Fonskiyon Optimizasyonlari (1)
 MATLAB’taki optimizasyon araclari ile, tanimli bir
fonksiyonun extereme degerlerine ve ya 0 noktasina
eristikleri noktlari, numerik olarak bulmak mumkundur
 help optim
 Fminbnd,fmincon,fminsearch,fzero,fsolve,lsqlin, vs.
 fminbnd(‘fonksiyon’,x1,x2,secenekler): fonksiyon icin (x1,x2)
araligindaki en kucuk noktayi bulur
 Fonksiyon farkli sekillerde tanimlanabilir



fminbnd(@cos,3,4)
fminbnd(@(x) sin(x) + 3,2,5)
fminbnd(@(x) myfun(x,c), 0 , 1)
o function f = myfun(x,c)
f = sin(x)+ c;
 Secenekler icin: help optimset
 Secenekler = optimset(‘param1’,’value1,’param2’,value2,….)
 Param1,param2,… ler help optimset icinde tanimlanmistir.
Numerik optimizasyon yakinsamasi, ve kullanacagi metotlarla
alakli bazi degiskenlerdir
Fonskiyon Optimizasyonlari (2)
 fzero(fun,x0)
 x0, scalar ise, x0 yakin bir fun kokunu bulur
 x0, 2 elamanli bir vektor ise, ( x0(1),x0(2) ) araligindaki koku bulur,
var ise!
 zrs = fzero(@(x) (x^2-1)^3,1.2)
 ans=1
 fsolve(fun,x0): fun(X) = 0 cozumunu bulur. X0 vektoru baslangic
noktasidir. Fun birden cok sayida fonkiyon olabilir; her bir satir bir
fonksiyonu tanimlar
 Or: 2 degiskenli 2 foknsiyon icin f1(x1,x2)=0,f2(x1,x2) = 0; cozumu
function F = myfun(x,c)
F = [ 2*x(1) - x(2) - exp(c*x(1))
-x(1) + 2*x(2) - exp(c*x(2))];
c = -1; % define parameter first
x = fsolve(@(x) myfun(x,c),[-5;-5])
11
1/28/2013
Fonskiyon Optimizasyonlari (3)
 fminsearch(fun,x0): x0 noktasindan basliyarak fun
icin yerel minimumu bulur. Nelder-Mead
metodunu kullanir
 X: matris olabilir (yani birden cok degisken,
x1,x2,x3,…) gibi
 Ornek: f(x,y) = x^2+cy^2, c=1.5 icin lokal minimu
bulalim:
Fonksiyon tanimi:
function f = myfun(x,c)
f = x(1)^2 + c*x(2)^2;
Command-line:
c = 1.5; % define parameter first
x = fminsearch(@(x) myfun(x,c),[0.3;1])
Constrained Optimization
 Min F(X) oyle ki
 A*X<=B, or Aeq * X =Beq (dogrusal kisitlar)
 C(X) <= 0, Ceq(X) = 0, (dogrusal olmayan kisitlar)
 LB <= X <= UB, X icin aralik kisiti
 MATLAB
 fmincon() fonksiyonu ile bu problemi cozer
 Ornek:
 X = FMINCON(FUN,X0,A,B): X0 dan basliyrak, A*X <= B kisiti
dahilinde problemi cozer
 X = FMINCON(FUN,X0,A,B,Aeq,Beq): Yukardakine ek olarak
Aeq*X = B_eq kisitini da dahil eder cozume
 Eger esitsizlik kisiti yok ise, A=[], B=[] bos alinir
 X = FMINCON(FUN,X0,A,B,Aeq,Beq,LB,UB): X in [LB,UB]
araliginda olacak sekilde arar
 X = FMINCON(FUN,X0,A,B,Aeq,Beq,LB,UB,NONLCON): C(X) ve
Ceq(X) dogrusal olmayan kisitlar, NONLCON fonksiyon matrisi
olarak girilir
 MATLABTA: ‘doc fmincon’ ile daha genis kullanim bilgileri
12
1/28/2013
Ornek: fmincon
 f(x,y,z) = -xyz icin [10 10 10]’ noktasindan
basliyarak, 0 <= x+2y+2z <= 72, kisiti altinda
fonksiyonu en kucuk yapan (x,y,z) degeri nedir?
 Fonksiyon tanimi: myfun.m dosyasina
 Function f = myfun(X)
f = -prod(X);
 Kisitlar
 2 ayri dogrusal kisit:
 -x-2y-2z <=0
 x+2y+2z <=72
 oldugundan A=[-1 -2 -2 ; 1 2 2], b=[0 72].’
 Son olarak X0=[10 10 10].’ baslangic noktasi ile
 [x,fval] = fmincon(@myfun,x0,A,b) ile cozum bulunur.
Sayisal Turev ve Sayisal Integral
 MATLAB’ta numeric olarak turev ve integral almak icin
fonksiyonlar tanimlidir.
 trapz, cumtrapz: yamuk alan toplami metodu ile integral
hesabi yapar. Cumtrapz, kumulatif olarak her bir nokta icin
o ana kadarki integrali verir, son dondurdugu deger, trapz()
ile ayni degerdir.
 quad, quadl,quadgk : 1 boyutlu, degisik metodlat
 quad(@myfun,A,B), quadl(@myfun,A,B) ve ya
quadqk(@myfun,A,B): A,B araliginda integral
 quadv: vektorize quad, myfun vektorize olabilir
 quad2d, dblquad: 2 katli integral
13
1/28/2013
Sayisal Integral Ornekleri


Or: y=x^2 nin [0,1] araiginda
integrali
Trapz:
 Or:x.^2+y.^2=1 cemberin
icinde kalan alan:
 Y=sqrt(1-x^2) icin [0,1] alasi
altta kalan alan * 4
>> x=0:0.01:1;
>> fx=x.^2;
>> trapz(x,fx)
ans =
0.3334

quad
>> quadl(@(x) sqrt(1-x.^2),0,1)*4
ans =
3.1416
 F(x,y) = e^(xy) nin x =[0,1],
>> quad(@(x) x.^2,0,1)
ans =
0.3333
>> quadl(@(x) x.^2,0,1)
ans =
0.3333
>> quadgk(@(x) x.^2,0,1)
ans =
0.3333
y=[0,1] araliginda integrali
>> dblquad(@(x,y) exp(-x.*y),0,1,0,1)
ans =
0.7966
Sayisal Turev
 Yaklasaik turev hesabi icin
 diff()
 gradient() fonksiyonlari kullanilabilir
 Diff: aslinda bir matris icin y = diff(x),
 Her bir satir elde edilir, x(k,:) ve
 y(k,n-1)=x(k,n)-x(k,n-1), n=2,…,N, k=1,…,M ile
 Y matrisi, N-1 x M sekline elde edilir.
 Eger, y=f(x) fonksiyonu icin, x, yeterince kucuk h araligi
kullanrak elde edilirse,
 X_k = k*h gibi,
 diff(Y)./diff(X) ve ya diff(Y)/h, yaksalik turevi verir
 diff(x,n): n defa fark hesaplanri, n. turev icin kullanilabilir
14
1/28/2013
Gradient methodu
 gradient vektoru
 [df(x,y,x)/dx df(x,y,x)/dy df(x,y,x)/dz ]
 Bir f(x,y,z) fonksiyonun gradient:
 Gradient(f,hx,hy,hz)
 Burada f(x,y,z) bir 3 boyulu matris olarak tanimlanmis olmali
 Bir f(x,y) fonksiyonun gradient:
 Gradient(f,hx,hy)
 Burada f(x,y) bir 2 boyulu matris olarak tanimlanmis olmali
 Ornek:
[x,y] = meshgrid(-2:.2:2, -2:.2:2);
z = x .* exp(-x.^2 - y.^2);
[px,py] = gradient(z,.2,.2);
contour(z), hold on, quiver(px,py), hold off
Diferansiyel Denklemler
 Later…
15
Download

Forex Akşam Bülteni