Finans Mühendisliği
Eğri Uydurma
MATLAB içindeki fonksiyonlar yada ek ürünler kullanılarak, sıklıkla karşılaşılan birçok eğri uydurma problemini çözebilirsiniz. Bu teknik eğitim notları başlıca eğri uydurma yöntemleri hakkında bilgi içermektedir. Ayrıca ağırlıklandırılmış eğri uydurma problemleri ve de kompleks veri setlerine eğri uydurma yöntemlerini açıklamaktadır. Bu notlarda eğri uydurma metodlarını tanıtıcı tipik örneklere yer verilmiştir.
MathWorks Ürünlerinin Eğri Uydurma Çözümleri
MATLAB eğri uydurma problemlerinizde kullanabileceğiniz fonksiyonları içerisinde barındırmaktadır. Bunun yanında MathWorks eğri uydurmakta kullanabilceğiniz birçok toolboxa da sahiptir. Bu metodları hem lineer hemde nonlineer eğri uydurma problemlerinizde kullanabilirsiniz. Curve Fitting Toolbox ile parametrik ve parametrik olmayan eğri uydurma problemlerini de çözebilirsiniz. Bu bölümde MATLAB içerisindeki fonksiyonların yanısıra Curve Fitting Toolbox ve diğer toolboxların eğri uydurma yeteneklerinden de bahsedeceğiz.
Curve Fitting Toolbox
Curve Fitting Toolbox veri setlerine eğri uydurmak için tasarlanmıştır. Bu toolbox grafik arayüzleri ve M-fonksiyonlardan oluşmaktadır.
- Parametrik eğri uydurma toolbox kütüphanesinde bulunan denklem kütüphanesi(lineer, kuadratik, yüksek derece polinomlar vb.) veya özel denklemler(kullanıcı tarafından verilecek denklemler) kullanılarak yapılmaktadır. Regresyon katsayılarını ve bu katsayıların arkasında yatan fiziksel anlamı öğrenmek için parametrik eğri uydurma yöntemlerini deneyebilirsiniz.
- Parametrik olmayan eğri uydurma yöntemleri çok çeşitli interpolasyon ve spline yöntemleri ile gerçekleştirilir. Regresyon katsayılarının istenmediği yada fiziksel bir anlam içermediği durumlarda bu yöntemi kullanabilirsiniz.
Curve Fitting Toolbox'ın sahip olduğu diğer fonksiyonellikler aşağıda sıralanmıştır
- Veri önişleme, düzgünleştirme yada parçalara ayırma gibi
- Standart lineer küçük kareler, nonlineer küçük kareler ve ağırlıklandırılmış küçük kareler
- Uydurulan eğrinin ne kadar iyi uyduğu hakkında istatistiksel veriler
Curve Fitting Toolbox ile ilgili demoları seyretmek için tıklayınız.
MATLAB Fonksiyonları ve Eğri Uydurma Yeteneği Olan Diğer Toolboxlar
Curve Fitting Toolbox'ın yanı sıra MATLAB ve diğer toolboxlar da lineer ve nonlineer eğri uydurma problemlerinde kullanılabilecek fonksiyonlara sahiptir. Bu bölümde bu fonksiyonlardan birkaçını tanıtmaya çalışacağız.
Lineer Eğri Uydurma
MATLAB Fonksiyonları
Spot Oranların Elde Edilmesi
bonddata.xls dosyası farklı vade değerleri için kupon oranı verilerini barındırmaktadır. Bu verileri MATLAB çalışma ortamına aktarmak için komut satırını yada Import Wizard grafik arayüzünü kullanabiliriz.
Aşağıdaki örnekte CORRCOEF fonksiyonu kullanılarak R-kare değerleri hesap edilmektedir.
load census
cdate kendisi ile tam bir korelasyon içinde aynı şekilde Output da. Köşegenin dışındaki terimler cdate ve Output arasındaki korelasyonu göstermektedir. Bu değer 1'e oldukça yakın, yani gerçek veri seti ve uydurulan eğriden elde edilen sonuçlar oldukça uyumlu. Sonuç olarak başarılı bir eğri uydurma.
Optimizasyon Fonksiyonları
Eğer kısıtlı bir sistem sözkonusu ise POLYFIT veya ters bölü (\) fonksiyonları yerine üstteki tablodaki metodlar kullanılmalıdır.
Nonlineer Eğri Uydurma:
MATLAB Fonksiyonları
Aşağıda FMINSEARCH fonksiyonunu nasıl kullanabileceğinize dair bir örnek bulabilirsiniz.
Ilk olarak veri setinin yaratılması
t=0:.1:10;
Şimdi de eğri parametrelerini giriş verileri olarak kabul eden ve uydurulan eğrinin hatasını çıktı olarak verecek olan M-fonksiyonu yazalım
function sse=myfit(params,Input,Actual_Output)
Şimdi FMINSEARCH fonksiyonunu çağıralım
Starting=rand(1,2);
Estimetes değişkeni parametre tahminlerini içeren bir vektör olacaktır.
FMINSEARCH fonksiyonu genellikle süreksizliklerle başedebilir, özellikle de bu süreksizlikler çözümün yakınlarında değil ise. Ayrıca fonksiyon lokal çözümler vermektedir. FMINSEARCH sadece gerçek sayıları kullanarak minimimları bulmaktadır. Yani çözüm uzayı ve çözümün sağladığı minimum değerler hep gerçek sayı olmalıdır. Eğer incelenmek istenen kompleks sayılar ise, bunlar gerçel ve sanal olarak ayrı ayrı incelenmelidir.
MATLAB Figür Penceresi : Basic Fitting ve Data Statistics Araçları
MATLAB basit eğri uydurma işlemlerinizi yapmanızı sağlayacak arayüzlere de sahiptir.Basic Fitting aracını kullanarak birçok eğri uydurma işemini aynı kullanımı kolay arayüz ile yapma imkanı bulursunuz. Bu arayüz ile
- Spline interpolasyonu, hermit interpolasyonu ve onuncu dereceye kadar polinom uydurma problemlerini çözebilirsiniz
- Aynı veri seti için birden fazla uydurulmuş eğriyi aynı grafik üzerinde çizdirebilirsiniz
- Rezidüleri grafik üzerinde çizdirebilirsiniz
- Uydurulan eğrinin denklemini görebilirsiniz
- Uydurulan eğri modeline göre farklı noktalardaki değerleri tahmin edebilirsiniz
- Uydurulan eğriyi kaydedebilir yada MATLAB workspace ortamına taşıyabilirsiniz
Karşılaştığınız eğri uydurma problemine göre arayüz fonksiyonelliklerinden yada komut satırı fonksiyonlarından yada herikisinden yararlanmayı seçebilirsiniz. Ancak Basic Fitting aracını sadece iki boyutlu veri setlerinde kullanılabilir.
Basic Fitting aracını aktif hale getirmek için aşağıdaki işlemleri yapmanız yeterlidir:
- Verileri çizdirmek
- Figür ekranındaki Tools menüsünden Basic Fitting seçeneğinin seçilmesi
Data Statistics aracı ise grafiğini çizdirmiş olduğunuz veriler ile ilgili istatistiksel değerleri hesaplayan bir araçtır. Data Statistics aracını aktif hale getirmek için:
- Verileri çizdirip
- Figür ekranındaki Tools menüsünden Data Statistics seçeneğini seçiniz
Data Statistics seçeneği seçildiğinde MATLAB çizdirilmiş olan verilerle ilgili tüm istatistiksel değerleri hesaplayıp bir diyalog kutusu içerisinde gösterecektir.
Optimization Toolbox
Bu iki fonksiyonun kullanımı ile ilgili örnekleri aşağıda bulabilirsiniz.
LSQNONLIN: Sürekli fonksiyonların minimize edilmesinde kullanılır, alınan sonuçlar lokal sonuçlardır.Aşağıdaki örnek LSQNONLIN fonksiyonunun nasıl kullanılacağını göstermektedir.
f = A + B*exp(C*x) + D*exp(E*x)
Yukarıdaki fonksiyonun katsayılarını elimizdeki x ve y data setlerini kullanarak bulmaya çalışalım. Burada y her x değeri için f fonksiyonunun verceği değeri bulmakta kullanılacaktır. Bu problemi çözmek için öncelikle aşağıdaki fonksiyonu yazalım. Bu fonksiyonu LSQNONLIN fonksiyonu ile kullandığımızda x verileri f fonksiyonunu hesap etmek için kullanıcak ve ardından gerçek y sonucu ile aralarındaki fark hesaplanacaktır. Bu farkı minimize eden katsayı değerleri bulunduğunda eğri uydurma işlemini tamamlamış oacağız.
fit_simp=@(k,X,Y) k(1)+k(2)*exp(k(3)*X)+k(4)*exp(k(5)*X)-Y;
Aşağıdaki kodlar ise yukarda oluşturmuş olduğumuz fonksiyon handle'ını LSQNONLIN ile beraber kullanarak k katsayı vektörünün nasıl hesaplanacağını göstermektedir.
% Eğri uydurma istediğimiz veri setinin
Not: LSQNONLIN fonksiyonu sadece gerçek sayılar ile işlem yapmaktadır. Kompleks veri setlerinin söz konusu olduğu durumlarda veri seti gerçel ve sanal olmak üzere iki farlı veri setine ayrılmalıdır. Aşağıda kompleks parametreler kullanılarak nasıl küçük kareler yöntemiyle eğri uydurma yapılacağı gösterilmektedir.
Kompleks değişkenleri uydurmak için, kompleks parametrelerinizi gerçel ve sanal kısımlarına ayırdıktan sonra LSQNONLIN fonksiyonuna tek bir değişken olarak atamanız gerekmektedir. İlk olarak parametrelerin gerçel ve sanal kısımlarından iki vektör oluşturun. Bu vektörlerden bir yarısı gerçel diğer yarısıda sanal paramterler olacak şekilde yeni bir vektör oluşturun. Aşağıda X ve Y veri setinin iki kompleks exponansiyele uydurulmasını gösteren örneği bulabilirsiniz. MATLAB fonksiyonu olarak yazılırken ilk olarak girdi olan veri setinden kompleks değişkenler yaratılır eğri uydurmakta kullanılacak fonksiyonda bu kompleks değişkenler kullanılır. Sonuçlar ise yine gerçel ve sanal kısımlarına ayrılarak bir vektör içerine yazılır.
Aşağıdaki fonksiyonu yaratın : div>
function zero = fit2(x,X,Y)
Yukarıdaki fonksiyonu çalıştırabilmeniz için X ve Y veri setlerine sahip olmalısınız. LSQNONLIN fonksiyonu aşağıdaki denklemdeki a, b, c ve d katsayılarını bulmakta kullanılacaktır.MATLAB içindeki fonksiyonlar yada ek ürünler kullanılarak, sıklıkla karşılaşılan birçok eğri uydurma problemini çözebilirsiniz. Bu teknik eğitim notları başlıca eğri uydurma yöntemleri hakkında bilgi içermektedir. Ayrıca ağırlıklandırılmış eğri uydurma problemleri ve de kompleks veri setlerine eğri uydurma yöntemlerini açıklamaktadır. Bu notlarda eğri uydurma metodlarını tanıtıcı tipik örneklere yer verilmiştir.
MathWorks Ürünlerinin Eğri Uydurma Çözümleri
MATLAB eğri uydurma problemlerinizde kullanabileceğiniz fonksiyonları içerisinde barındırmaktadır. Bunun yanında MathWorks eğri uydurmakta kullanabilceğiniz birçok toolboxa da sahiptir. Bu metodları hem lineer hemde nonlineer eğri uydurma problemlerinizde kullanabilirsiniz. Curve Fitting Toolbox ile parametrik ve parametrik olmayan eğri uydurma problemlerini de çözebilirsiniz. Bu bölümde MATLAB içerisindeki fonksiyonların yanısıra Curve Fitting Toolbox ve diğer toolboxların eğri uydurma yeteneklerinden de bahsedeceğiz.
Curve Fitting Toolbox
Curve Fitting Toolbox veri setlerine eğri uydurmak için tasarlanmıştır. Bu toolbox grafik arayüzleri ve M-fonksiyonlardan oluşmaktadır.
- Parametrik eğri uydurma toolbox kütüphanesinde bulunan denklem kütüphanesi(lineer, kuadratik, yüksek derece polinomlar vb.) veya özel denklemler(kullanıcı tarafından verilecek denklemler) kullanılarak yapılmaktadır. Regresyon katsayılarını ve bu katsayıların arkasında yatan fiziksel anlamı öğrenmek için parametrik eğri uydurma yöntemlerini deneyebilirsiniz.
- Parametrik olmayan eğri uydurma yöntemleri çok çeşitli interpolasyon ve spline yöntemleri ile gerçekleştirilir. Regresyon katsayılarının istenmediği yada fiziksel bir anlam içermediği durumlarda bu yöntemi kullanabilirsiniz.
Curve Fitting Toolbox'ın sahip olduğu diğer fonksiyonellikler aşağıda sıralanmıştır
- Veri önişleme, düzgünleştirme yada parçalara ayırma gibi
- Standart lineer küçük kareler, nonlineer küçük kareler ve ağırlıklandırılmış küçük kareler
- Uydurulan eğrinin ne kadar iyi uyduğu hakkında istatistiksel veriler
Curve Fitting Toolbox ile ilgili demoları seyretmek için tıklayınız.
MATLAB Fonksiyonları ve Eğri Uydurma Yeteneği Olan Diğer Toolboxlar
Curve Fitting Toolbox'ın yanı sıra MATLAB ve diğer toolboxlar da lineer ve nonlineer eğri uydurma problemlerinde kullanılabilecek fonksiyonlara sahiptir. Bu bölümde bu fonksiyonlardan birkaçını tanıtmaya çalışacağız.
Lineer Eğri Uydurma
MATLAB Fonksiyonları
Spot Oranların Elde Edilmesi
bonddata.xls dosyası farklı vade değerleri için kupon oranı verilerini barındırmaktadır. Bu verileri MATLAB çalışma ortamına aktarmak için komut satırını yada Import Wizard grafik arayüzünü kullanabiliriz.
| Fonksiyonlar | Açıklama |
| POLYFIT | Veriye eğri uydurur.POLYFIT(X,Y,N) fonksiyonu P(X) N inci dereceden poinomun katsayılarını küçük kareler yöntemiyle P(X(I))~=Y(I) olacak şekilde bulur. |
| \ | Ters bölü yada soldan bölme. Eğer A bir kare matris ise A\B ile inv(A)*B aynıdır, yine de bu operator daha farklı şekilde çalıştırılır |
| POLYVAL | Verilen noktada polinomun değerini bulur |
| CORRCOEF | İki vektörün korelasyonunu bulur.Bu fonksiyon POLYFIT ve POLYVAL fonksiyonları ile birlikte kullanılarak gerçek veri seti ve uydurulan eğrinin verdiği sonuçların R-Kare korelasyon katsayılarının bulunmasında kullanılabilir. |
Aşağıdaki örnekte CORRCOEF fonksiyonu kullanılarak R-kare değerleri hesap edilmektedir.
load census
[p, s] = polyfit(cdate, pop, 2);
Output = polyval(p,cdate);
Corrolation = corrcoef(cdate, Output);
cdate kendisi ile tam bir korelasyon içinde aynı şekilde Output da. Köşegenin dışındaki terimler cdate ve Output arasındaki korelasyonu göstermektedir. Bu değer 1'e oldukça yakın, yani gerçek veri seti ve uydurulan eğriden elde edilen sonuçlar oldukça uyumlu. Sonuç olarak başarılı bir eğri uydurma.
Optimizasyon Fonksiyonları
| Fonksiyonlar | Açıklama |
| LSQLIN | Kısıtlı lineer küçük kareler |
| LSQNONNEG | Negatif olmayan kısıtlara sahip lineer küçük kareler |
Eğer kısıtlı bir sistem sözkonusu ise POLYFIT veya ters bölü (\) fonksiyonları yerine üstteki tablodaki metodlar kullanılmalıdır.
Nonlineer Eğri Uydurma:
MATLAB Fonksiyonları
| Fonksiyonlar | Açıklama |
| FMINBND | Skalar sınırlı nonlineer fonksiyonları minimize eder.Tek bir değişkene bağlı fonksiyonların belirli bir aralıkta minimize edilmesinde de kullanılır. |
| FMINSEARCH | Çokboyutlu kısıtlı olmayan nonlineer minimizasyon (Nelder-Mead Metodu). Başlangıç değerleri için verilen tahminleri kullanarakçok değişkenli skalar fonksiyonların minimumlarını bulur. Bu yöntem genellikle nonlineer kısıtlı olmayan optimizasyon olarak isimlendirilir. |
Aşağıda FMINSEARCH fonksiyonunu nasıl kullanabileceğinize dair bir örnek bulabilirsiniz.
Ilk olarak veri setinin yaratılması
t=0:.1:10;
t=t(:); % Kolon vektör haline getirmek için
% Veri setine rastgele gürültü ekleyelim
Data=40*exp(-.5*t)+rand(size(t));
function sse=myfit(params,Input,Actual_Output)
A=params(1);
lamda=params(2);
Fitted_Curve=A.*exp(-lamda*Input);
Error_Vector=Fitted_Curve - Actual_Output;
% Eğri yudurulurken, minimize edilmeye çalışılan
% hataların karelerinin toplamıdır
sse=sum(Error_Vector.^2);
% You could also write sse as
% sse=Error_Vector(:)'*Error_Vector(:);
Starting=rand(1,2);
options=optimset('Display','iter');
Estimates=fminsearch(@myfit,Starting,options,t,Data)
% Uydurulan eğriyi kontrol edelim
plot(t,Data,'*')
hold on
plot(t,Estimates(1)*exp(-Estimates(2)*t),'r')
FMINSEARCH fonksiyonu genellikle süreksizliklerle başedebilir, özellikle de bu süreksizlikler çözümün yakınlarında değil ise. Ayrıca fonksiyon lokal çözümler vermektedir. FMINSEARCH sadece gerçek sayıları kullanarak minimimları bulmaktadır. Yani çözüm uzayı ve çözümün sağladığı minimum değerler hep gerçek sayı olmalıdır. Eğer incelenmek istenen kompleks sayılar ise, bunlar gerçel ve sanal olarak ayrı ayrı incelenmelidir.
MATLAB Figür Penceresi : Basic Fitting ve Data Statistics Araçları
MATLAB basit eğri uydurma işlemlerinizi yapmanızı sağlayacak arayüzlere de sahiptir.Basic Fitting aracını kullanarak birçok eğri uydurma işemini aynı kullanımı kolay arayüz ile yapma imkanı bulursunuz. Bu arayüz ile
- Spline interpolasyonu, hermit interpolasyonu ve onuncu dereceye kadar polinom uydurma problemlerini çözebilirsiniz
- Aynı veri seti için birden fazla uydurulmuş eğriyi aynı grafik üzerinde çizdirebilirsiniz
- Rezidüleri grafik üzerinde çizdirebilirsiniz
- Uydurulan eğrinin denklemini görebilirsiniz
- Uydurulan eğri modeline göre farklı noktalardaki değerleri tahmin edebilirsiniz
- Uydurulan eğriyi kaydedebilir yada MATLAB workspace ortamına taşıyabilirsiniz
Karşılaştığınız eğri uydurma problemine göre arayüz fonksiyonelliklerinden yada komut satırı fonksiyonlarından yada herikisinden yararlanmayı seçebilirsiniz. Ancak Basic Fitting aracını sadece iki boyutlu veri setlerinde kullanılabilir.
Basic Fitting aracını aktif hale getirmek için aşağıdaki işlemleri yapmanız yeterlidir:
- Verileri çizdirmek
- Figür ekranındaki Tools menüsünden Basic Fitting seçeneğinin seçilmesi
Data Statistics aracı ise grafiğini çizdirmiş olduğunuz veriler ile ilgili istatistiksel değerleri hesaplayan bir araçtır. Data Statistics aracını aktif hale getirmek için:
- Verileri çizdirip
- Figür ekranındaki Tools menüsünden Data Statistics seçeneğini seçiniz
Data Statistics seçeneği seçildiğinde MATLAB çizdirilmiş olan verilerle ilgili tüm istatistiksel değerleri hesaplayıp bir diyalog kutusu içerisinde gösterecektir.
Optimization Toolbox
| Fonksiyonlar | Açıklama |
| LSQNONLIN | Lineer olmayan küçük kareler problemlerini ve eğri uydurma problemlerini çözer |
| LSQCURVEFIT | Lineer olmayan eğri uydurma problemlerini çözer |
Bu iki fonksiyonun kullanımı ile ilgili örnekleri aşağıda bulabilirsiniz.
LSQNONLIN: Sürekli fonksiyonların minimize edilmesinde kullanılır, alınan sonuçlar lokal sonuçlardır.Aşağıdaki örnek LSQNONLIN fonksiyonunun nasıl kullanılacağını göstermektedir.
f = A + B*exp(C*x) + D*exp(E*x)
Yukarıdaki fonksiyonun katsayılarını elimizdeki x ve y data setlerini kullanarak bulmaya çalışalım. Burada y her x değeri için f fonksiyonunun verceği değeri bulmakta kullanılacaktır. Bu problemi çözmek için öncelikle aşağıdaki fonksiyonu yazalım. Bu fonksiyonu LSQNONLIN fonksiyonu ile kullandığımızda x verileri f fonksiyonunu hesap etmek için kullanıcak ve ardından gerçek y sonucu ile aralarındaki fark hesaplanacaktır. Bu farkı minimize eden katsayı değerleri bulunduğunda eğri uydurma işlemini tamamlamış oacağız.
fit_simp=@(k,X,Y) k(1)+k(2)*exp(k(3)*X)+k(4)*exp(k(5)*X)-Y;
% Eğri uydurma istediğimiz veri setinin
% oluşturulması
X=0:.01:.5;
Y=2.0.*exp(5.0.*X)+3.0.*exp(2.5.*X)+1.5.*rand(size(X));
% Katsayı vektörünün başlangıç değerinin tanımlanması
k0=[1 1 1 1 1]';
% LSQNONLIN fonksiyonun medium-scale
% algoritma kullanacak şekilde seçilmesi
options = optimset('Largescale','off');
% LSQNONLIN fonksiyonu kullanarak yeni katsayıların bulunması
k=lsqnonlin(fit_simp,k0,[],[],options,X,Y);
% Gerçek veri çiftlerinin ve uydurulan eğrinin verdiği sonuçların çizdirilmesi
Y_new = k(1) + k(2).*exp(k(3).*X)+k(4).*exp(k(5).*X);
plot(X,Y,'+r',X,Y_new,'b')
Not: LSQNONLIN fonksiyonu sadece gerçek sayılar ile işlem yapmaktadır. Kompleks veri setlerinin söz konusu olduğu durumlarda veri seti gerçel ve sanal olmak üzere iki farlı veri setine ayrılmalıdır. Aşağıda kompleks parametreler kullanılarak nasıl küçük kareler yöntemiyle eğri uydurma yapılacağı gösterilmektedir.
Kompleks değişkenleri uydurmak için, kompleks parametrelerinizi gerçel ve sanal kısımlarına ayırdıktan sonra LSQNONLIN fonksiyonuna tek bir değişken olarak atamanız gerekmektedir. İlk olarak parametrelerin gerçel ve sanal kısımlarından iki vektör oluşturun. Bu vektörlerden bir yarısı gerçel diğer yarısıda sanal paramterler olacak şekilde yeni bir vektör oluşturun. Aşağıda X ve Y veri setinin iki kompleks exponansiyele uydurulmasını gösteren örneği bulabilirsiniz. MATLAB fonksiyonu olarak yazılırken ilk olarak girdi olan veri setinden kompleks değişkenler yaratılır eğri uydurmakta kullanılacak fonksiyonda bu kompleks değişkenler kullanılır. Sonuçlar ise yine gerçel ve sanal kısımlarına ayrılarak bir vektör içerine yazılır.
Aşağıdaki fonksiyonu yaratın : div>
function zero = fit2(x,X,Y)
% Girdi x denkomplex değişken yaratmak
cmpx = x(1:4) + i.*x(5:8)
% Kompleks veriler kullanarak fonksiyonun değerinin bulunması
zerocomp = cmpx(1) .* exp(cmpx(2) .* X) + ...
cmpx(3) .* exp(cmpx(4) .*X ) - Y;
% Sonuçları gerçel ve sanal kısımlarına ayırarak
% bir vektör içine yarısı gerçel sayılar diğer yarısıda
% sanallar olacak şekilde yazmak
lx = length(X);zero(1:lx)=real(zerocomp); % Real part
zero(lx+1:2*lx) = imag(zerocomp); % Imaginary part
Y = a*exp(b*X) + c*exp(d*X)
Burada a, b, c ve d kompleks sayılardır.
X=0:.1:5; % X verileri
Y=sin(X); % Y verileri
Y=Y+0.1.*rand(size(Y))-.05; % Y verisine gürültü ekleyelim
cmpx0=[1 i 2 2*i]; % Kompleks başlangıç koşulları
% Başlançış koşullarının gerçel kısımlarının ayrılması
x0(1:4)=real(cmpx0);
% Gerçel ve sanal kısımlarının birleştirilerek yeni bir vektör oluşturlması
x0(5:8)=imag(cmpx0);
% lsqnonlin fonksiyonu ile eğri uydurma işleminin yapılması
x=lsqnonlin(@fit2,x0,[],[],[],X,Y);
cmpx = x(1:4) + i.*x(5:8); % Sonuçları kompleks sayılara çevirmek
% Sonuçların çizilmesi
Y1 = real(cmpx(1).*exp(cmpx(2).*X)+ ...
cmpx(3).*exp(cmpx(4).*X));
plot(X,Y1,'r');
hold on
plot(X,Y,'+') ;
Uygulamada 2 boyutlu, 3 boyutlu yada N boyutlu parametrik eğri uydurmanın birbirinden bir farkı yoktur. Aşağıdaki örnek 3 boyutlu bir eğri uydurma problemidir.
z = a1*y.*x.^2 + a2*sin(x) + a3*y.^3
function F = myfun(a,data)
x=data(1,:);
y=data(2,:);
F = a(1)*y.*x.^2 + a(2)*sin(x) + a(3)*y.^3;
xdata = [3.6 7.7 9.3 4.1 8.6 2.8 1.3 7.9 10.0 5.4];
ydata = [16.5 150.6 263.1 24.7 208.5 9.9 2.7 163.9 325.0 54.3];
zdata = [95.09 23.11 60.63 48.59 89.12 76.97 45.68 1.84 82.17 44.47];
data=[xdata;ydata];
a0 = [10, 10, 10] % Başlangıç tahmini
[a,resnorm] = lsqcurvefit(@myfun,a0,data,zdata)
Rastgele kısımlar içeren sistemleri modellerken, karşılaşılan hatalarla ilgili olarak iki kabul bulunmaktadır:
- Hatalar sadece sonuç verilerinde bulunur değişkenlerden elde edilen ölçümlerde hata yoktur.
- Hatalar rastgeledir ve standart sapması sabit ve ortalama değeri 0 olan normal dağılıma uymaktadır.
Sabit varyans kabulü sistem içerisinde aykırı değerler olduğu taktirde doğru olmayabilir. Çünkü gerçek verilerden oldukça uzakta bulunan aykırı değerler uydurulan eğriye çok büyük hatalar ekleme potansiyelindedir. Uydurduğunuz eğrinin hata payını azaltmak için sisteminize skalalandırma faktörü ekleyebilirsiniz(ağırlıklandırma). Aykırı değerlerin ağırlıklarını minimize eder ve böylece daha iyi uydurlmuş eğriler elde edersiniz.
Ağırlıklandırmayı eğri uydurma işlemi ile birlikte yapmak için aşağıdaki toolboxlardan yararlanabilirsiniz.
Curve Fitting Toolbox
Bu toolbox içerisinde genelleştirilmiş küçük kareler regresyon yeteneği bulunmaktadır ve bu yeteneği sayesinde hem lineer hem de nonlineer eğri uydurma problemlerini çözebilirsiniz.
Ağırlıklandırmaya eğri uydurma seçenekleri olarak, FITOPTIONS içerisinden ulaşabilirsiniz. Curve Fitting Toolbox içerisinde ağrılıklandırma değerleri vektör olarak verilmektedir.
Statistics Toolbox
Statistics Toolbox içerisindeki ROBUSTFIT fonksiyonu ile ağırlıklandırılmış robust regresyon problemlerini çözebilirsiniz.
Optimization Toolbox
Optimization Toolbox içerisindeki LSQNONLIN ve LSQCURVEFIT fonksiyonlarını kullanarak ağırlıklandırılmış küçük kareler problemlerini çözebilirsiniz. Bu fonksiyonları kullanarak ağırlıklandırılmış eğri uydurma problemlerini çözmek için uydurmak istediğiniz eğri fonksiyonu içerisinde bunları belirtmeniz gerekmektedir. Bununla ilgili bir örneği Çözüm 27840 da bulabilirsiniz.
Curve Fitting Toolbox ile Aldığınız Eğri Uydurma Sonuçlarını Geliştirmek için
Eğri uydurma sonuçlarınız birçok şeyden etkileniyor olabilir. Aşağıdaki ipucları uydurduğunuz eğride daha iyi sonuçlar almanızı sağlayacaktır.
-Model Seçimi: Curve Fitting kütüphanesinden yada özel fonksiyonlardan birini seçmek en önemli unsurlardan biridir. Bir çok model için eğri uydurmayı deneyin.
-Veri Önişleme: Verileri önişleme de eğri uydurmanızı kolaylaştıracak işlemlerden biridir. Veri önişleme
* Sonuç verilerinin transformasyonu
* Sonsuz değerleri, NaNları ve aykırı değerleri temizlemek olabilir.
- Kesirli fonksiyonlar bazı süreksizliklere ve asimptotik sonuçlara neden olabilir.
- Bulunmaya çalışılan katsayılar ile ilgili ne kadar bilgi verilirse doğru sonuçlara o kadar hızlı ulaşılır. Asağıdaki ipuçları eğri uydurma işleminizin hızını ve güvenilirliğini arttıracaktır:
* Katsayıların başlangıç değerleri için doğru tahminler yapmaya çalışın. Olma ihtimali yüksek bir katsayı varsa onu girin
* Başlangıç noktası hakkında bir bilgi yoksa birden fazla başlangıç noktası için fonksiyonu çalıştırın
* Parametrelere sınır koymaya çalışın. Örneğin bir parametrenin sıfırdan küçük olması mümkün değilse alabileceği değerleri sınırlandırın
* Eğri uydurma seçeneklerini değiştirin: Farklı algoritmalar denemek, iterasyonsayısını arttırma gibi
* Veri setini parçalara ayırıp farklı eğriler uydurun
- Karmaşık problemleri çözmek için öncelikle sistemi basitleştirmeyi seçebilirsiniz. Örneğin sisteminizi açıklayan en iyi denklem aşağıdaki denklem ise
y = c + a*exp(b*x) + d*sin(f*x)
İlk olarak en önemli terimden başlayarak herbir terimi birer birer ekleyerek bir dizi eğri uydurmayı seçebilirsiniz.
y = c1 + a1*exp(b1*x)
Önce yukarıdaki fonksiyonun katsayılarını bulup ardından bu katsayıları tüm denklemin katsayılarını bulmak için başlangıç noktası olarak kullanmak gibi.
Diğer Linkler:
Atmospheric Carbon Di-Oxide Modeling and the Curve Fitting Toolbox