HBM512 Bilimsel Hesaplama II Ödev 3 - web.itu.edu.trturalh/web/courses/hbm512/hw3_sol.pdf · 2 1....

37
HBM512 Bilimsel Hesaplama II Ödev 3 Hazırlayan: Hamdi Nadir Tural 702061013 Hesaplamalı Bilim ve Mühendislik

Transcript of HBM512 Bilimsel Hesaplama II Ödev 3 - web.itu.edu.trturalh/web/courses/hbm512/hw3_sol.pdf · 2 1....

Page 1: HBM512 Bilimsel Hesaplama II Ödev 3 - web.itu.edu.trturalh/web/courses/hbm512/hw3_sol.pdf · 2 1. Aşağıda verilen ayrık veriler kullanılarak, kübik tiriz eğrisi çizilmesi

HBM512

Bilimsel Hesaplama II

Ödev 3 Hazırlayan: Hamdi Nadir Tural 702061013 Hesaplamalı Bilim ve Mühendislik

Page 2: HBM512 Bilimsel Hesaplama II Ödev 3 - web.itu.edu.trturalh/web/courses/hbm512/hw3_sol.pdf · 2 1. Aşağıda verilen ayrık veriler kullanılarak, kübik tiriz eğrisi çizilmesi

2

1. Aşağıda verilen ayrık veriler kullanılarak, kübik tiriz eğrisi çizilmesi istenmektedir.

x(ft) y(ft) 0.000 1.20 0.250 1.18 0.750 1.10 1.250 1.00 1.500 0.92 1.750 0.80 1.875 0.70 2.000 0.55 2.125 0.35 2.250 0.00

Sorunun çözümüne geçmeden, tiriz eğrilerinin teorisini inceleyelim.

Şimdiye kadar olan incelemelerimiz, genel olarak cebirsel fonksiyonların belli bir aralıkta

çokterimli yaklaşımından oluşmakta idi. Ancak bu durumda, yüksek mertebeli

çokterimlilerin salınımlı (oscillatory) doğası ve küçük bir aralıktaki küçük değişmelerin

genel olarak çokterimlinin tanım aralığında büyük değişim yaratması karşımıza çıkan en

büyük problemdir. Bununla ilgili örnekler daha önceki ödevlerimizde doğrudan karşımıza

çıkmıştı.

Bu duruma, tanım aralığını daha küçük aralıklara bölmek ve bu küçük aralıklarda tanımlı

çokterimliler üretmek yeni bir çözüm yöntemidir. Bu tür bir yaklaşımla oluşturulan

fonksiyonlara Parçalı Çokterimli Yaklaşımı (Piecewise Polynomial Approximation)

denilmektedir. Bu yaklaşımın en basiti Parçalı Doğrusal Yaklaşımdır. Bu yaklaşım

))](,()),...,(,()),(,[( 2211 nn xfxxfxxfx ayrık noktaları arasında çizilen doğrulardan

ibarettir.

Bu doğrusal yaklaşımın en büyük dezavantajı, tanım aralıklarının uç noktalarında, düzgün

bir türevlenebilirlik özelliklerinin olmamasıdır ki bu geometrik manada çizilen eğrinin

düzgün (smooth) olmaması anlamına gelir. Böyle bir durumda, 2. dereceden (Quadric)

veya 3. dereceden (Cubic) çokterimlilerin oluşturulması çözüm olabilir. 2. dereceden bir

yaklaşım bütün tanım aralığında türevlenebilirlik (geometrik olarak düzgün) özelliğine

haizdir ancak bu tanım aralığının başlangıç ve bitiş noktalarında türev almak için yeterli

sınır koşul sağlanamayabilir. (Bu kısımdaki ispatlar [1] ve [2] numaralı kaynaklardan

incelenebilir.)

Bütün bu problemlerin aşılması için parçalı çokterimli yaklaşımı olarak Kübik Tiriz

Yaklaşımı yaygın olarak kullanılmaktadır. En genel halde Kübik Tiriz Çokterimlisi dört adet

sabit sayı içermektedir ( 32)( dxcxbxaxP +++= denklemindeki dcba ,,, gibi). Bu bize

çokterimlinin hem tanım aralığı içerisinde hem de tanım aralığının uç noktalarında

türevlenebilirlik kabiliyetini de sağlar (ikinci türevi 2

2

dx

Pdtanımlı).

Page 3: HBM512 Bilimsel Hesaplama II Ödev 3 - web.itu.edu.trturalh/web/courses/hbm512/hw3_sol.pdf · 2 1. Aşağıda verilen ayrık veriler kullanılarak, kübik tiriz eğrisi çizilmesi

3

Şimdi, ],[ ba aralığında bxxxa n =<<<= ...10 noktalarında tanımlı bir )(xf

fonksiyonuna ait kübik tirizi oluşturmak için gerekli olan koşulları yazalım;

a. )(xS bir kübik çokterimli olmak üzere 1,...,1,0 −= nj için ],[ 1+jj xx alt aralığında

tanımlı olan çokterimli )(xS j olarak gösterilir.

b. Her bir nj ,...,1,0= için )()( jj xfxS = ’dir.

c. Her bir 2,...,1,0 −= nj için )()( 111 +++ = jjjj xSxS ’dir.

d. Her bir 2,...,1,0 −= nj için )()( 111 +++ ′=′ jjjj xSxS ’dir.

e. Her bir nj ,...,1,0= için )()( 111 +++ ′′=′′ jjjj xSxS ’dir.

f. Ve aşağıdaki sınır koşullardan birini taşıma şartı ile

- 0)()( 0 =′′=′′ nxSxS (Doğal Tiriz)

- )()( 00 xfxS ′=′ ve )()( nn xfxS ′=′ (Kenetlenmiş Tiriz)

Koşullarını sağlayan eğriler Parçalı Kübik Tiriz yaklaşımını ifade etmektedir. Şimdi verilen

bir f fonksiyonuna yukarıdaki koşulları sağlayan bir Kübik Tiriz Eğrisi uyduralım;

32 )()()()( jjjjjjj xxdxxcxxbaxS −+−+−+=

şeklindeki çokterimli 1+<≤ jj xxx aralığında tanımlı, parçalı yaklaşımız olsun.

Bu durumda,

)()( jjj xfaxS == olacağından “c” koşulu kullanılarak,

31

2111111 )()()()()( jjjjjjjjjjjjjjj xxdxxcxxbaxSxSa −+−+−+=== +++++++

yazılabilir. Görüldüğü üzere )( 1 jj xx −+ terimi karşımıza çıkmaktadır. Bu terim için yeni

bir tanımlama yapalım;

)( 1 jjj xxh −= + olsun. Yine fonksiyondan görüleceği üzere )( jj xfa = ’yi kullanarak

denklemi yeniden yazarsak,

321 jjjjjjjj hdhchbaa +++=+ (1)

Aynı yaklaşımı kullanarak, )( jj xSb ′= tanımı kullanılarak,

2)(3)(2)( jjjjj xxdxxcbxS −+−+=′

Bu denkleme “d” koşulu uygulanarak,

21 32 jjjjjj hdhcbb ++=+ (2)

bulunur. Yine aynı yaklaşımla, 2/)( jj xSc ′′= tanımı ve “e” koşulu kullanılarak,

jjjj hdcc 31 +=+ (3)

elde edilir. jd buradan çekilerek (1) ve (2) numaralı denklemlerde yerine konulursa,

)2(3 1

2

1 ++ +++= jjj

jjjj cch

hbaa (4)

)( 11 ++ ++= jjjjj cchbb (5)

Page 4: HBM512 Bilimsel Hesaplama II Ödev 3 - web.itu.edu.trturalh/web/courses/hbm512/hw3_sol.pdf · 2 1. Aşağıda verilen ayrık veriler kullanılarak, kübik tiriz eğrisi çizilmesi

4

elde edilir. (4) denklemi jb bilinmeyeni için düzenlenerek,

)2(3

)(1

11 ++ +−−= jjj

jjj

j cch

aah

b (6)

denklemi elde edilir. Burada indiler bir azaltılarak (5) denkleminde yerine konursa,

)(3

)(3

)(2 11

11111 −−

++−−− −−−=+++ jjj

jjj

jjjjjjj aah

aah

chchhch (7)

lineer denklem sistemi elde edilir. burada tek bilinmeyen jc değerleridir. Bu denklem

takımı matris halinde yazılırsa,

+

+=

−−−−

10000)(2..

.....0.)(20.001

1122

1100

nnnn hhhh

hhhhA

−−−

−−−

=

−−−

−−

0

)(3

)(3

.

)(3

)(3

0

212

11

010

121

nnn

nnn

aah

aah

aah

aah

B ve

=

n

n

cc

cc

x

1

1

0

.

şeklindeki BxA =. lineer denklem takımıdır. Buradan jc sayıları çözülerek önce jc ve

sonra da jc katsayılarının hesabı yapılabilir. Dikkat edilecek bir husus, oluşturulan

denklem takımının Doğal Tiriz (Natural Spline) durumu için çıkarılmış olmasıdır.

Kenetlenmiş Tiriz (Clamped Spline) için sadece 0c ve nc katsayılarının hesabının

değiştiği göz önüne alınarak yeniden denklem takımı oluşturulmalıdır. Bu kısım ödevde

uygulanmayacağı için gösterilmemiştir.

Buna göre dcb ,, katsayılarının hesap adımlarını gösteren bir blok diyagram çizelim;

Şekil 1. Katsayıların Hesap Adımlarını Gösteren Blok Diyagram

jx

jy ja

jhjc

jb

jd

Bilinenler Hesaplanacak Değerler

Page 5: HBM512 Bilimsel Hesaplama II Ödev 3 - web.itu.edu.trturalh/web/courses/hbm512/hw3_sol.pdf · 2 1. Aşağıda verilen ayrık veriler kullanılarak, kübik tiriz eğrisi çizilmesi

5

Yalnız burada dikkat edilecek olan husus, jc katsayılarının hesabında bir lineer denklem

takımının çözümünün bulunmasının gerekmesidir. Böyle bir sistemin çözümü için birçok

çözüm yöntemi vardır. Örneğin, Gauss Eliminasyon yöntemi, Doolittle, Crout ve Choleski

faktorizasyon yöntemleri, Cramer yöntemi vs. Algoritma olarak uygulanması en basit olan

Cramer yöntemi seçilerek, lineer denklem sistemi çözülmüştür.

Buna göre denklem sisteminin oluşturulması, çözümü ve çizdirilmesi için Matlab’te bir m-

file kodu yazılmıştır;

Program girdileri:

xi, yi : ayrık girdi noktaları

n : girilen nokta sayısı

Program çıktıları:

Sj(x) : uydurulan kübik tiriz fonksiyonları

Algoritma: Algoritma yukarıda verilen blok diyagram kullanılarak, katsayıların hesabı

yapılacak, denklem sisteminin çözümünde Cramer yöntemi kullanılacaktır.

Başla:

Oku x,y,n;

%hj değerlerini oluştur:

Döngü 1: i=1’den n-1’e kadar

h(i)=x(i+1)-x(i);

Döngü 1 Son

% A matrisinin oluşturulması

A(1,1)=1;

A(n,n)=1;

Döngü 2: i=2’den n-1’e kadar

A(i,i)=2*(h(i)+h(i-1));

A(i,i-1)=h(i-1);

A(i,i+1)=h(i);

Döngü 2 Son

% B matrisinin oluşturulması

B(1)=0;

B(n)=0;

Page 6: HBM512 Bilimsel Hesaplama II Ödev 3 - web.itu.edu.trturalh/web/courses/hbm512/hw3_sol.pdf · 2 1. Aşağıda verilen ayrık veriler kullanılarak, kübik tiriz eğrisi çizilmesi

6

Döngü 3: i=2’den n-1’e kadar

B(i)=(3/h(i))*(y(i+1)-y(i))-(3/h(i-1))*(y(i)-y(i-1));

Döngü 3 Son

% Cramer Kuralını kullanarak A.x=B lineer denklem isteminin çözümü

% Burada Cx pivoting matris, C ise sonuç matrisi

Döngü 4: i=1’den n’e kadar

cx=A;

cx(:,i)=B;

c(i)=1/det(A)*det(cx);

Döngü 4 Son

% Tiriz için b ve d katsayılarının hesabı

Döngü 5: i=1’den n-1’e kadar

b(i)=(1/h(i))*(y(i+1)-y(i))-(h(i)/3)*(2*C(i)+C(i+1));

d(i)=(C(i+1)-C(i))/(3*h(i));

Döngü 5 Son

% S(i) tiriz eğri ailesinin oluşturulması

% S(i)=a(i)+b(i)*(x-x(i))+c(i)*(x-x(i))^2+d(i)*(x-x(i))^3

Döngü 6: i=1’den n-1’e kadar

S(i)= a(i)+b(i)*(x-x(i))+C(i)*(x-x(i))^2+d(i)*(x-x(i))^3;

Döngü 6 Son

Ekrana Çizdir: S(i)

Program Sonu

Page 7: HBM512 Bilimsel Hesaplama II Ödev 3 - web.itu.edu.trturalh/web/courses/hbm512/hw3_sol.pdf · 2 1. Aşağıda verilen ayrık veriler kullanılarak, kübik tiriz eğrisi çizilmesi

7

Program Çıktıları

A matrisi: B Matrisi:

1 0 0 0 0 0 0 0 0 0 0 0.25 1.5 0.5 0 0 0 0 0 0 0 -0.24

0 0.5 2 0.5 0 0 0 0 0 0 -0.12 0 0 0.5 1.5 0.25 0 0 0 0 0 -0.36 0 0 0 0.25 1 0.25 0 0 0 0 -0.48 0 0 0 0 0.25 0.75 0.125 0 0 0 -0.96 0 0 0 0 0 0.125 0.5 0.125 0 0 -1.2 0 0 0 0 0 0 0.125 0.5 0.125 0 -1.2 0 0 0 0 0 0 0 0.125 0.5 0.125 -3.6 0 0 0 0 0 0 0 0 0 1 0

)(xS Tiriz denklemleri:

)(1 xS 1.2000-0.065631*x-0.22991*x3 )(2 xS 1.2072-0.10874*x-0.17243*(x-0.2500)2+0.13981*(x-0.2500)3 )(3 xS 1.2322-0.17631*x+0.037289*(x-0.7500)2-0.16934*(x-0.7500)3 )(4 xS 1.3325-0.26603*x-0.21673*(x-1.2500)2+0.0033347*(x-1.2500)3 )(5 xS 1.4806-0.37376*x-0.21422*(x-1.5000)2-0.84287*(x-1.5000)3 )(6 xS 1.9181-0.63891*x-0.84638*(x-1.7500)2-3.5384*(x-1.7500)3 )(7 xS 2.6057-1.0164*x-2.1733*(x-1.8750)2+5.6342*(x-1.8750)3 )(8 xS 3.1412-1.2956*x-0.060455*(x-2.0)2-18.998*(x-2.0000)3 )(9 xS 5.0277-2.2013*x-7.1849*(x-2.1250)2+19.160*(x-2.1250)3

Şekil 2. Tiriz yaklaşımı ve Ayrık noktaların Çizimi

Page 8: HBM512 Bilimsel Hesaplama II Ödev 3 - web.itu.edu.trturalh/web/courses/hbm512/hw3_sol.pdf · 2 1. Aşağıda verilen ayrık veriler kullanılarak, kübik tiriz eğrisi çizilmesi

8

Yorumlar:

- Kübik tiriz yaklaşımının düzgün (smooth) bir eğri oluşturduğu görülmektedir.

- Kübik tirizin en büyük faydası, eğimin çok hızlı değiştiği bölgede görülür. Bunun

temel nedeni, noktalar arasında yapılan bir lineer yaklaşımın (her ayrık nokta

arasında doğrular çizmek), fonksiyonun eğim değişimini takip edememesidir. Bizim

eğrilerimiz için bu [1.75,2.5]x ∈ aralığıdır.

- Ek bir bilgi olarak, günümüzde bilgisayar kontrollü makinalar yeni bir tiriz

yaklaşımı olan NURBS (Non-Uniform Rational B-Spline) yöntemini kullanmaktadır.

Bu yöntemle keskin köşelerin işlenmesi, ani eğim değişimlerinin takibi, yüksek hız

ve doğrulukta işleme gibi problemler çözülebilmektedir.

Page 9: HBM512 Bilimsel Hesaplama II Ödev 3 - web.itu.edu.trturalh/web/courses/hbm512/hw3_sol.pdf · 2 1. Aşağıda verilen ayrık veriler kullanılarak, kübik tiriz eğrisi çizilmesi

9

2. Bu problemin çözümünde lineer interpolasyon (regresyon) ve kübik tiriz yaklaşımı

kullanılması istenmektedir. Buna bağlı olarak bu yaklaşımları inceleyelim;

- Kübik Tiriz Yaklaşımı:

Kübik tiriz yaklaşımının temeli 1. soruda anlatılsa da burada tekrar kısa bir gösterim

yapılacaktır.

Yukarıda çıkarımı yapılan (7) denkleminin çözümü için lineer denklem takımı

oluşturulmuştu. Bu denklem takımı;

)(3

)(3

)(2 11

11111 −−

++−−− −−−=+++ jjj

jjj

jjjjjjj aah

aah

chchhch ’ nin çözümü olan,

BxA =. şeklindeki;

+

+=

−−−−

10000)(2..

.....0.)(20.001

1122

1100

nnnn hhhh

hhhhA

−−−

−−−

=

−−−

−−

0

)(3

)(3

.

)(3

)(3

0

212

11

010

121

nnn

nnn

aah

aah

aah

aah

B ve

=

n

n

cc

cc

x

1

1

0

.

sistemidir. Buradan jc katsayılarının hesabı yapılabilir. Bundan sonra

)2(3

)(1

11 ++ +−−= jjj

jjj

j cch

aah

b (Soru1 Denklem 6)

)(31

1 jjj

j cch

d −= + (Soru1 Denklem 3 dönüştürülmüş hali)

denklemleri kullanılarak bütün katsayılar hesap edilir ve )(xS j tiriz denklemleri

oluşturularak, eğri çizilir.

- Lineer Regresyon:

Bu durum bizi Lineer regresyon yaklaşımına götürmektedir. Bu yaklaşım bilindiği üzere

lineer bir yaklaşım yaparken, hatayı ayrik noktalar ile denklem arasındaki farkın karesi

olarak almaktadır. Burada yapılacak olan bu farkı minimize eden katsayıların hesabını

yapmaktır. Aşağıda bu hatayı minimize eden denklem takımı verilmiştir;

∑∑==

=++n

ii

n

ii YaXan

02

01).1(

∑∑∑===

=+n

iii

n

ii

n

ii YXaXaX

02

0

2

01 ..

Page 10: HBM512 Bilimsel Hesaplama II Ödev 3 - web.itu.edu.trturalh/web/courses/hbm512/hw3_sol.pdf · 2 1. Aşağıda verilen ayrık veriler kullanılarak, kübik tiriz eğrisi çizilmesi

10

Burada katsayılar;

)1(0 += nS , ∑=

=n

iiXS

01 , ∑

=

=n

iiXS

0

22 , ∑

=

=n

iiYT

00 , ∑

=

=n

iiiYXT

01

Denklemin düzenlenmiş hali,

02110. TaSaS =+

12211. TaSaS =+

Buradan a1 ve a2 çözümleri;

2120

11021

SSS

TSTSa

−= ,

2120

01102

SSS

TSTSa

−=

olarak bulunur.

Sorunun a) şıkkında bazı zaman değerlerine karşılık gelen T(F) sıcaklık değerleri

istenmektedir. Bunun için hem lineer regresyonla hem de kübik tiriz yöntemi ile

oluşturulan fonksiyonlarda bu t(s) değerleri yerine konularak çözülebilir. Ancak sorunun

b) şıkkında bazı T(F) sıcaklıklarına ulaşma süresi sorulmaktadır. Bu durum bir denklemin

köklerini bulma problemini karşımıza getirir. Lineer regresyon ile çözüm kolaydır ancak

kübik tiriz eğrileri 3. dereceden nonlineer eğrilerdir. Bu noktada başka bir sayısal yöntem

uygulanarak, 3. dereceden denklemin kökleri hesap edilmelidir. Bu çözüm için birçok

iteratif metot vardır. Örneğin Bisection, Secant, Regula Falsi, Newton-Raphson vs. Biz

burada Newton-Raphson metodunu kullanarak istenen t(s) sürelerinin hesabını

yapacağız.

Lineer Regresyon için t(s) hesabı;

2

121 a

aTttaaT

−=→+= kullanılarak süre hesap edilebilir.

Newton-Raphson ile t(s) hesabının algoritması;

Döngü

)(/)( 000 tftftt ′−=

|| 0tthata −=

Eğer hata<tolerans ise Döngüden çık

tt =0

Döngü Devam

Görüldüğü üzere belirli başlangıç değerinden başlayıp hatayı kabul edilebilir bir toleransa

indirene kadar döngü devam edecektir.

Page 11: HBM512 Bilimsel Hesaplama II Ödev 3 - web.itu.edu.trturalh/web/courses/hbm512/hw3_sol.pdf · 2 1. Aşağıda verilen ayrık veriler kullanılarak, kübik tiriz eğrisi çizilmesi

11

Bu denklemler Matlab’te yazılan bir m-file kodu ile çözülmüştür.

Algoritma;

Başla

Oku T(F),t(s);

% En Küçük Kareler Hesabı

Katsayıların hesabı;

İlk değerleri ata;

S0=n+1, S1=0, S2=0, T0=0, T1=0,

Döngü 1: i=1’den n’ye kadar

S1=S1+t(i)

S2=S2+(t(i))^2

T0=T0+T(i)

T1=T1+t(i)*T(i);

Döngü 1 Son

Fonksiyonun Katsayılarını Hesapla;

a1=(S2*T0-S1*T1)/(S0*S2-S1^2)

a2=(S0*T1-S1*T0)/(S0*S2-S1^2)

% t=[0.6, 2.5, 4.7, 8.9] zaman değerleri için

% T(F) sıcaklık hesabı

tt=[0.6, 2.5, 4.7, 8.9]

Döngü 2: i=1’den 4’ye kadar

Tkk(i)=a1+a2*tt(i)

Döngü 2 Son

% T=[75, 85, 90, 105] sıcaklık değerleri için

% geçen t(s) süresinin hesabı

TT=[75 85 90 105];

Döngü 3: i=1’den 4’ye kadar

skk(i)=(TT(i)-a1)/a2;

Döngü 3 Son

Page 12: HBM512 Bilimsel Hesaplama II Ödev 3 - web.itu.edu.trturalh/web/courses/hbm512/hw3_sol.pdf · 2 1. Aşağıda verilen ayrık veriler kullanılarak, kübik tiriz eğrisi çizilmesi

12

% Kubik Triz Hesabı

% h(i) noktalar arasındaki adım hesabı

Döngü 4: i=1’den n-1’e kadar

h(i)=ts(i+1)-ts(i);

Döngü 4 Son

% Doğal tiriz için A matrisinin değerleri ata

A(1,1)=1;

A(n,n)=1;

Döngü 5: i=2’den n-1’e kadar

A(i,i)=2*(h(i)+h(i-1)); %matrisin diyagonali

A(i,i-1)=h(i-1); %matris diyagonalinin 1 altı

A(i,i+1)=h(i); %matris diyagonalinin 1 üstü

Döngü 5 Son

% Doğal tiriz için A matrisinin değerleri ata

B(1)=0;

B(n)=0;

Döngü 6: i=2’den n-1’e kadar

B(i)=(3/h(i))*(Tf(i+1)-Tf(i))-(3/h(i-1))*(Tf(i)-Tf(i-1));

Döngü 6 Son

% Cramer Kuralını kullanarak A.x=B lineer denklem isteminin çözümü

% Burada Cx pivoting matris, C ise sonuç matrisi

Döngü 7: i=1’den n’ye kadar

Cx=A;

Cx(:,i)=B;

C(i)=1/det(A)*det(Cx);

Döngü 7 Son

% Tiriz için b ve d katsayılarının hesabı

Döngü 8: i=1’den n-1’e kadar

b(i)=(1/h(i))*(Tf(i+1)-Tf(i))-(h(i)/3)*(2*C(i)+C(i+1));

d(i)=(C(i+1)-C(i))/(3*h(i));

Döngü 8 Son

Page 13: HBM512 Bilimsel Hesaplama II Ödev 3 - web.itu.edu.trturalh/web/courses/hbm512/hw3_sol.pdf · 2 1. Aşağıda verilen ayrık veriler kullanılarak, kübik tiriz eğrisi çizilmesi

13

% S(i) tiriz eğri ailesinin oluşturulması

% S(i)=a(i)+b(i)*(x-x(i))+c(i)*(x-x(i))^2+d(i)*(x-x(i))^3

Döngü 9: i=1’den n-1’e kadar

S(i)= Tf(i)+b(i)*(x-ts(i))+C(i)*(x-ts(i))^2+d(i)*(x-ts(i))^3

Döngü 9 Son

% t=0.6 için S1, t=2.5 için S3, t=4.7 için S5,

% t=8.9 için S9 parça fonksiyonları kullanılacak

Tks(1)= S1(0.6);

Tks(2)= S3(2.5);

Tks(3)= S5(4.7);

Tks(4)=S9(8.9);

% Nonlineer Fonksiyonlar için Newton-Raphson Metodu

% ile T=[75, 85, 90, 105] sıcaklık değerleri için

% geçen t(s) süresinin hesabı

% T=75 için S1, T=85 için S2, T=90 için S3,

% T=105 için S4 parça fonksiyonları kullanılacak

Döngü 10: i=1’den 4’e kadar

hata=10000; % iterasyon hatası için başlangıç değeri

pp=ts(i);

ft=S(i)-TT(i);

Döngü 11 :hata>1.e-5 olduğu müddetçe devam

p=pp-ft(pp)/diff(ft(pp));

hata=mutlakdeğer(p-pp);

pp=p;

Döngü 11 Son

sol(i)=p;

Döngü 10 Son

Ekrana Çizdir: S(i), a1+a2t.(s)

Program Sonu

Page 14: HBM512 Bilimsel Hesaplama II Ödev 3 - web.itu.edu.trturalh/web/courses/hbm512/hw3_sol.pdf · 2 1. Aşağıda verilen ayrık veriler kullanılarak, kübik tiriz eğrisi çizilmesi

14

Program Çıktıları:

Lineer Regresyon için;

61.397a1 = 6.6317a2 =

Buradan lineer regresyon denklemi;

tT .6317.6397.61 += olarak bulunur.

Kübik Tiriz için;

)(xS Tiriz denklemleri:

)(1 xS 72.500+4.3814*x+1.2186*x3 )(2 xS 70.063+8.0371*x+3.6557*(x-1.0)2-3.3928*(x-1.0)3 )(3 xS 76.060+5.1701*x-6.5227*(x-2.0)2+7.2526*(x-2.0)3 )(4 xS 50.652+13.883*x+15.235*(x-3.0)2-10.818*(x-3.0)3 )(5 xS 63.001+11.900*x-17.218*(x-4.0)2+6.2182*(x-4.0)3 )(6 xS 130.91-3.8816*x+1.4366*(x-5.0)2+0.24498*(x-5.0)3 )(7 xS 110.94-0.27344*x+2.1715*(x-6.0)2-0.99809*(x-6.0)3 )(8 xS 102.67+1.0754*x-0.82273*(x-7.0)2+0.047376*(x-7.0)3 )(9 xS 113.92-0.42798*x-0.68060*(x-8.0)2+0.50859*(x-8.0)3

)(10 xS 112.27-0.26343*x+0.84515*(x-9.0)2-0.28172*(x-9.0)3

Şekil 3. Tiriz yaklaşımı, Lineer Regresyon ve Ayrık noktaların Çizimi

Page 15: HBM512 Bilimsel Hesaplama II Ödev 3 - web.itu.edu.trturalh/web/courses/hbm512/hw3_sol.pdf · 2 1. Aşağıda verilen ayrık veriler kullanılarak, kübik tiriz eğrisi çizilmesi

15

a) Verilen Süreler için Sıcaklık Hesabı;

t(s) T(F)

Lineer Reg. T(F)

Kübik Tiriz 0.6 65.376 75.392 2.5 77.976 88.261 4.7 92.565 112.63 8.9 120.42 109.93

Şekil 4. İki yöntemle de hesap edilen Sıcaklıklar

b) Verilen Sıcaklıklar için Geçecek Süre Hesabı;

T(F) t(s)

Lineer Reg. t(s)

Kübik Tiriz 75 2.0513 0.52934 85 3.5592 1.7822 90 4.3132 2.7912

105 6.575 3.6605

Page 16: HBM512 Bilimsel Hesaplama II Ödev 3 - web.itu.edu.trturalh/web/courses/hbm512/hw3_sol.pdf · 2 1. Aşağıda verilen ayrık veriler kullanılarak, kübik tiriz eğrisi çizilmesi

16

Şekil 5. İki yöntemle de hesap edilen Süreler

Yorumlar:

Şekil 3’den görüleceği gibi, lineer regresyon ayrık veriyi çok iyi takip etmemektedir. Kübik

tiriz ise bütün noktalardan geçerek, pekte düzgün olmayan (eğri bütün olarak ele

alınırsa) bir eğri oluşturmaktadır. Genel olarak deneye bağlı verilere eğri uydurma

probleminde, en küçük kareler yöntemi çok sık kullanılır. Ancak burada verilerin bağlı

olduğu sistemin doğasına bakılması gerekmektedir. Yani doğrudan bir lineer yaklaşım

yerine, eğrinin doğasına mutabık olan bir fonksiyon için lineer regresyon uygulanmalıdır.

Bu fonksiyon bir çokterimli yaklaşımı, logaritmik (y=a1+a2.log(x) veya y=a1+a2.ln(x))

veya üstel bir fonksiyon olabilir (y=a1+a2.ex veya y=a1+a2x).

Ayrık noktalar tek başına çizdirilerek bakıldığında, Kontrol Teorisine dayanarak, 1. derece

bir sistemin basamak cevabını andıran bir eğriye benzemektedir. Sistemin Isıl bir sistem

olması da bu varsayımı destekliyor. Zira ısıl sistemler 1. mertebe diferansiyel denklemler

kullanılarak ifade edilirler. Yani aşağıdaki denklemi andırıyor;

Γ−

−=t

eaatT 21)(

(t:zaman, a1 ve a2 başlangıç değere(initial val.) bağlı katsayılar, Γ sistemin zaman sabiti)

Page 17: HBM512 Bilimsel Hesaplama II Ödev 3 - web.itu.edu.trturalh/web/courses/hbm512/hw3_sol.pdf · 2 1. Aşağıda verilen ayrık veriler kullanılarak, kübik tiriz eğrisi çizilmesi

17

Eğer veriler gerçek deney sonuçlarından alınmış ise (bana göre mümkün), yukarıda

vermiş olduğum denkleme uygun bir Lineer Regresyon, verinin gerçek trendini gösteren

bir eğri oluşturacaktır. (Burada yazdıklarım gereksiz görülebilir ama Kontrol Teorisi

üzerine yapmış olduğum çalışmalardan dolayı, biraz da farklı bir alandan bilgi aktarmak

istedim)

Şekil 6. Ayrık Veriler

Page 18: HBM512 Bilimsel Hesaplama II Ödev 3 - web.itu.edu.trturalh/web/courses/hbm512/hw3_sol.pdf · 2 1. Aşağıda verilen ayrık veriler kullanılarak, kübik tiriz eğrisi çizilmesi

18

3. Verilen ayrık noktalar için sayısal türev alma işlemi temel olarak, bu noktalardan geçen

bir çokterimli oluşturularak, oluşturulan çok terimlinin istenen noktada türevlenmesinden

ibarettir.

Sonlu farklar kullanarak, bir fonksiyonun ileri ve geri farklar çokterimlilerini Taylor serisi

kullanarak açalım,

Rxfh

xfh

xfhxfhxf +′′′+′′+′+=+ )(!3

)(!2

)()()(32

(İleri Farklar)

Rxfh

xfh

xfhxfhxf +′′′−′′+′−=− )(!3

)(!2

)()()(32

(Geri Farklar)

Bu ifadeler kullanılarak birinci türev çekilirse,

hxfhxf

xf)()(

)(−+

=′ (İleri Fark)

hhxfxf

xf)()(

)(−−

=′ (Geri Fark)

hhxfhxf

xf2

)()()(

−−+=′ (Merkezi Fark)

yazılabilir. Hata ifadeleri yazılırsa,

Rxfh

xfh

Hata −′′′−′′−= )(!3

)(!2

2

(İleri Fark)

Rxfh

xfh

Hata −′′′+′′−= )(!3

)(!2

2

(Geri Fark)

Rxfh

Hata −′′′−= )(!3

2

(Merkezi Fark)

Yukarıda bulunan ifadeler kullanılarak f’’, f’’’,fıv vs. hesap edilebilir. Ancak tahmin

edileceği üzere bu işlem f’ ve f’’ için kolay olsa da, daha büyük mertebe türevler için zor

olacaktır. Bu sorunu çözmenin yolu, çokterimli yaklaşımını uygulamaktır.

dxxRd

dxxPd

dxxfd

xRxPxf nnnn

))(())(())(()()()( +=→+=

İleriye Doğru Türev Alma:

n. dereceden ileriye doğru sonlu fark terimlisini yazalım,

))...((!.

...)()( 100

00

0 −−−∆

++−∆

+= nn

n

n xxxxhn

fxx

hf

fxP

α dönüşümü ile,

!)1)...(1(

...)( 000 nn

fffxP nn

+−−∆++∆+=

αααα

bu çokterimlinin türevini alırsak,

dxd

dxPd

dxxPd nn α

α))(())((

= şeklini alır. α ’nın tanımı kullanılarak,

Page 19: HBM512 Bilimsel Hesaplama II Ödev 3 - web.itu.edu.trturalh/web/courses/hbm512/hw3_sol.pdf · 2 1. Aşağıda verilen ayrık veriler kullanılarak, kübik tiriz eğrisi çizilmesi

19

hdxd

hxx 10 =→

−=

αα bulunur. Denklemde yerine konursa,

αdxPd

hdxxPd nn ))((1))((

=

0xx = için türev almak istenirse 00 →⇒→ αxx sınır koşulu ile,

+

∆−

∆+

∆−∆=

=

....432

1))(( 04

03

02

0

0

ffff

hdxxPd

xx

n ifadesine ulaşılır. Bu ifade algoritmik bir

hale getirilirse, aşağıdaki denklem elde edilir.

−∆= ∑

=

+

=

n

i

ii

xx

n

if

hdxxPd

1

10 )1(1))((

0

Geriye Doğru Türev Alma:

n. dereceden geriye doğru sonlu fark terimlisini yazalım,

))...((!.

...)()( 100

00

0 +−−−∇

++−∇

+= nn

n

n xxxxhn

fxx

hf

fxP

α dönüşümü ile,

!)1)...(1(

...)( 000 nn

fffxP nn

−++∇++∇+=

αααα

ileri farklarda olduğu gibi, α ’nın tanımı kullanılarak bu çokterimlinin türevini alınırsa,

αdxPd

hdxxPd nn ))((1))((

=

0xx = için türev almak istenirse 00 →⇒→ αxx sınır koşulu ile,

+

∇+

∇+

∇+∇=

=

....432

1))(( 04

03

02

0

0

ffff

hdxxPd

xx

n ifadesine ulaşılır. Bu ifade de

algoritmik bir hale getirilirse, aşağıdaki denklem elde edilir.

∇= ∑

==

n

i

i

xx

n

if

hdxxPd

1

01))((

0

Merkezi Türev Alma:

n. dereceden merkezi fark terimlisini Stirling ifadesi cinsinden yazalım,

...!6

)2)(1()1)(2(!5

)2)(1()1)(2(!4

)1()1(!3

)1()1(!2

)(

06

05

04

03

02

2

00

+−−++

+−−++

+

−++

−++++=

ff

fffffxPn

δααααααµδααααα

δααααµδαααδααδµ

Page 20: HBM512 Bilimsel Hesaplama II Ödev 3 - web.itu.edu.trturalh/web/courses/hbm512/hw3_sol.pdf · 2 1. Aşağıda verilen ayrık veriler kullanılarak, kübik tiriz eğrisi çizilmesi

20

Buradan görüleceği üzere çift üstlü ( ...,, 642 δδδ ) ifadelerde 2α çarpanı bulunmaktadır.

Bu durum 0

)(

=ααdxdPn teriminde çift üstlü ifadelerin düşmesi anlamına gelir (ispatı

istenirse yapılabilir). Bu ifade genelleştirilirse,

*

00

12

0 )!12(!!..)1(1)(1))((

0

+−

== ∑=

+

==

m

i

iin

xx

n

iii

fhd

xdPhdx

xPdµδ

α α

*m: (n-1)/2 değerinin tamsayı olan kısmı. Genel programlama açısından m=int((n-1)/2)

İnceleme ve Karşılaşılan Problemler:

Buraya kadar gerekli olan bütün denklemler çıkarılmış oldu ancak bu denklemlerin sadece

0xx = ( 0=α ) noktasında geçerli olduğunu unutmayalım. Eğer eğrinin bütün noktalarına

ait bir türev ifadesi geliştirilmek istenirse, n. dereceden çokterimlinin çıkarılması(ister

0xx − ’a isterse α ’ya bağlı olsun) ve bu çokterimlinin istenen ixx = noktasında

türevinin alınması gerekmektedir. Bu noktada ikinci bir husus (aslında birinci), alınan

nokta sayısına bağlı olarak oluşturacağınız çokterimlinin derecesidir. Soruda 101 adet

nokta alınması istenmiş ki bu )(100 xP ’in oluşturulması gerektiğini belirtmektedir.

)(100 xP ’ün oluşturulmasını adım adım incelerken, karşımıza çıkacak problemlere de

bakalım;

• Önce ]4,0[ aralığını 100 eşit parçaya bölelim

• 04.0100

04=

−=h hesap adımı oluşturuldu

• Fonksiyonu hnx .0 + (n=0,1,2,..,100, 00 =x ileri farklar) noktalarında hesap

ederek 101x101 farklar tablosunu oluşturalım

• Farklar tablosundan aldığımız değerlerle )(100 xP ’ü oluşturalım

• Teorik olarak buraya kadar hiçbir problem görülmüyor. Ancak )(100 xP ’i açık halde

yazarsak (örnek olarak ileri fark alındı);

))...((!.100

...)()( 9901000

100

00

0100 xxxxh

fxx

hf

fxP −−∆

++−∆

+= veya (1)

!100)99)...(1(

...!)!.(

!)( 0

10000

100

00100

−−∆++∆+=

−∆= ∑

=

ααααα

αfff

iifxP

i

i (2)

hem (1) numaralı hem de (2) numaralı denklemlere bakıldığında, 0100f∆ teriminin

katsayıları, 0xx ≠ veya 0≠α durumu için çok büyük sayıların çarpımı (mutlak değer

açısından) ve çok büyük sayıların bölünmesi şeklinde bir sonuca itmektedir. Burada iki

adet problem karşımıza çıkmaktadır; 1. Büyük sayıların bir biri ile çarpımından ortaya

çıkan aritmetic overflow, ve 2. Bölme işleminden kaynaklanan aritmetic underflow

problemleridir. 1. durumda bilgisayarların gösterebileceği maksimum sayıya bağlı

Page 21: HBM512 Bilimsel Hesaplama II Ödev 3 - web.itu.edu.trturalh/web/courses/hbm512/hw3_sol.pdf · 2 1. Aşağıda verilen ayrık veriler kullanılarak, kübik tiriz eğrisi çizilmesi

21

olarak karşımıza çıkar. 2. durum ise bilgisayarların gösterebileceği minimum (sıfıra en

yakın) sayıya bağlı olarak karşımıza çıkar(bu durum 2. ödevde incelenmişti). Matlab’te

“double precision” (64 bit) olarak sayılar hesap edilmesine ve anlamlı rakam gösterimi

32 haneye kadar (teorik olarak böyle bir limit yok, ancak donanım desteği olarak 32

haneye kadar yapabiliyorum) yapılabilmesine karşın, )(35 xP ’e kadar ( 0.115h =

kullanılarak) fonksiyona doğru yaklaşan bir çokterimli oluşturulabilmiştir. Daha küçük

hesap adımlarında çokterimli salınım yapmaya başlamaktadır. Bununla ilgili grafikler

aşağıda verilmiştir.

Şekil 7. )(35 xP ve Ayrık Veriler: Çokterimli, ayrık veriler üzerine tam oturuyor

Page 22: HBM512 Bilimsel Hesaplama II Ödev 3 - web.itu.edu.trturalh/web/courses/hbm512/hw3_sol.pdf · 2 1. Aşağıda verilen ayrık veriler kullanılarak, kübik tiriz eğrisi çizilmesi

22

Şekil 8. )(37 xP (h=0.11) ve Ayrık Veriler: Salınım hareketleri belirgin halde

• )(100 xP için oluşturulan tablodan, 0xx = ( 0=α ) noktaları için tablo değerlerini

inceleyelim. Tabloda 040f∆ teriminden sonraki değerler giderek artmaya

başlamıştır. Esas olarak kararlı bir sonuca ulaşabilmek için, tablodaki değerlerin

“0” doğru gitmeleri gerekmektedir. Fakat bu olay belli bir yere kadar ( 040f∆ )

devam etmesine rağmen bu noktadan sonra giderek artış göstermektedir. Bu hem

)(100 xP ’ün oluşturulmasında karşımıza çıkan diğer bir etken olmakta, hem de

0xx = ( 0=α ) değerlerini kullanarak çıkaracağımız (ileri, geri ve merkezi fark

ifadeleri için basitleştirilmiş denklemler) denklemlerin düzgün bir sonuç vermesine

engel olmaktadır.

• )(100 xP ’ün oluşturması sırasında karşılaşılan başka bir problem de, hesaplama

zamanıdır. Örneğin )(37 xP hesaplanırken yaklaşık 6.68 sn gibi bir zaman

geçerken, bu süre )(40 xP için 23.65sn ve )(100 xP içinse 8dakika483sn ≈ gibi bir

süre geçmektedir. Burada bilgisayarın donanım konfigürasyonu ve CPU yükü de

etkili olmaktadır ancak çokterimlinin derecesiyle nerdeyse eksponansiyel artan bir

hesap süresi gerekmektedir.

Page 23: HBM512 Bilimsel Hesaplama II Ödev 3 - web.itu.edu.trturalh/web/courses/hbm512/hw3_sol.pdf · 2 1. Aşağıda verilen ayrık veriler kullanılarak, kübik tiriz eğrisi çizilmesi

23

• Bu yüzden, genel türev ifadesi için )(32 xP (h=0.125) kullanılarak hesap

yapılmıştır.

• Basitleştirilmiş türev ifadeleri için de h=0.125 hesap adımı ile oluşturulan farklar

tablosu kullanılmıştır.

Sorunun çözümü için Matlab’te bir m-file kodu yazılmıştır.

Algoritma: ilk önce farklar tablosu oluşturulacak, bu tablodan okunan değerlerle önce

ileri, geri ve merkezi farklar kullanarak 0xx = noktalarında çokterimlilerin türevleri hesap

edilecek. Daha sonra h=0.125 adım aralığı kullanılarak ileri fark çokterimlileri ( )(32 xP ) ve

bu çokterimlilerin ]4,0[∈x aralığındaki her hesap adımında türevleri ( dxxPd /))(( 32 )

hesap edilecektir.

Program girdileri:

xi, yi : ayrık girdi noktaları

n : girilen nokta sayısı

Program çıktıları:

dPn_İleri : x=x0=0’da ileri fark çokterimlisinin türevi

dPn_Geri : x=x0=4’de geri fark çokterimlisinin türevi

dPn_Merkezi : x=x0=2’de merkezi fark çokterimlisinin türevi

Pn(x) : uydurulan çokterimlinin

dPn/dx : uydurulan çokterimlinin türevi

Başla:

Oku x,y,n;

%Tabloların oluşturulması:

f(:,1)=y; % Y’ yi Fark Tablosunun Birinci Sütununa ata

Döngü 1: j=2’den n’ye

Döngü 2: i=j’den n’ye

f(i,j)= f(i,j-1)-f(i-1,j-1)

Döngü 2 Son

Döngü 1 Son

h=x(2)-x(1) % Adım aralığını hesapla

% ileri fark türevi x=x0=0

% ilk değerlerin atanması

Page 24: HBM512 Bilimsel Hesaplama II Ödev 3 - web.itu.edu.trturalh/web/courses/hbm512/hw3_sol.pdf · 2 1. Aşağıda verilen ayrık veriler kullanılarak, kübik tiriz eğrisi çizilmesi

24

dPx_dalfa_ileri= f(2,2);

Döngü 2: i=3’den n’ye kadar

dPx_dalfa_ileri=dPx_dalfa_ileri+(f(i,i)*(-1)^(i+1)/i);

Döngü 2 Son

dPx_dx_ileri=(1/h)*dPx_dalfa_ileri % dPx/dx=(1/h)*dPx/dalfa

% geri fark türevi x=x0=4

% ilk değerlerin atanması

dPx_dalfa_geri= f(n,2);

Döngü 3: i=3’den n’ye kadar

dPx_dalfa_geri=dPx_dalfa_geri+(f(n,i)*(-1)^(i+1)/i);

Döngü 3 Son

dPx_dx_geri=(1/h)*dPx_dalfa_geri % dPx/dx=(1/h)*dPx/dalfa

% merkezi fark türevi x=x0=2

m=floor((n-1)/2);

dPx_dalfa_merkezi= ((f(m,2)+f(m+1,2))/2);

Döngü 4: i=2’den n’ye kadar

dPx_dalfa_merkezi=dPx_dalfa_merkezi+((f(m+i-1,2*i+1)+f(m+i,2*i+1))/2)*(-

1)^(i)*(i!*i!))/(2*i+1)!;

Döngü 4 Son

dPx_dx_merkezi=(1/h)*dPx_dalfa_merkezi % dPx/dx=(1/h)*dPx/dalfa

% alfa* 0f∆ +alfa.(alfa-1)* 02f∆ +...+alfa(alfa-1)...(alfa-(n-1))* 0f

n∆

% 0fn∆ değerleri için katsayılarının hesabı

faktor(1)=(xp-x(1))/h; % İlk değeri ata

Döngü 3: i=2’den n’ye kadar

faktor(i)=faktor(i-1)*(xp-x(i))/(h*i); % ))...((!.

)( 100

−−−∆

= ni

i

xxxxhi

fifaktor hesabı

Döngü 3 Son

Pxp=f(1,1); % İlk değeri ata, ilk değer= 0f

Döngü 4: i=2’den n’ye kadar

Page 25: HBM512 Bilimsel Hesaplama II Ödev 3 - web.itu.edu.trturalh/web/courses/hbm512/hw3_sol.pdf · 2 1. Aşağıda verilen ayrık veriler kullanılarak, kübik tiriz eğrisi çizilmesi

25

Pxp=Pxp+f(i,i)*faktor(i-1) % Fark tablosunun diyagonalindeki değerlerle ile

% katsayıları çarp

Döngü 4 Son

Pxp’yi hesapla

dPxp hesapla

Ekrana Çiz: Pxp,dPxp

Program Sonu

Page 26: HBM512 Bilimsel Hesaplama II Ödev 3 - web.itu.edu.trturalh/web/courses/hbm512/hw3_sol.pdf · 2 1. Aşağıda verilen ayrık veriler kullanılarak, kübik tiriz eğrisi çizilmesi

26

Program Çıktıları:

Türev değerleri;

0x 0

))(( 32

xxdxxPd

=

İleri Fark 0 2.3161 Merkezi Fark 2 0.4462 Geri Fark 4 0.0605

Şekil 9. )(32 xP (h=0.125) ve Ayrık Veriler

Page 27: HBM512 Bilimsel Hesaplama II Ödev 3 - web.itu.edu.trturalh/web/courses/hbm512/hw3_sol.pdf · 2 1. Aşağıda verilen ayrık veriler kullanılarak, kübik tiriz eğrisi çizilmesi

27

Şekil 10. )(32 xP (h=0.125), Ayrık Veriler ve dxxPd /))(( 32

Şekil 11. )(100 xP (h=0.125) ve Ayrık Veriler: aşırı salınım hareketleri

Page 28: HBM512 Bilimsel Hesaplama II Ödev 3 - web.itu.edu.trturalh/web/courses/hbm512/hw3_sol.pdf · 2 1. Aşağıda verilen ayrık veriler kullanılarak, kübik tiriz eğrisi çizilmesi

28

Yorumlar:

Genel olarak yorumlar “İnceleme ve Karşılaşılan Problemler” bölümünde incelenmiş

durumdadır. Burada eklenecek ileri, geri ve merkezi farkları kullanarak 0xx = ( 0=α )

noktalarında hesap edilen değerlerin, çizilen grafikle örtüştüğünün görülmesidir.

Page 29: HBM512 Bilimsel Hesaplama II Ödev 3 - web.itu.edu.trturalh/web/courses/hbm512/hw3_sol.pdf · 2 1. Aşağıda verilen ayrık veriler kullanılarak, kübik tiriz eğrisi çizilmesi

29

Kaynaklar: 1. Burden R.L., Faires J.D., Numerical Analysis, 7th Ed. Brooks/Cole, 2001. 2. Hoffman J.D., Numerical Methods for Engineers and Scientists, 2nd Ed., McGraw

Hill Inc., 2001. 3. Kunz K.S., Numerical Analysis, McGraw Hill Inc., 1957. 4. Hildebrand F.B., Introduction to Numerical Analysis, 2nd Ed., McGraw Hill Inc.,

1974.

Page 30: HBM512 Bilimsel Hesaplama II Ödev 3 - web.itu.edu.trturalh/web/courses/hbm512/hw3_sol.pdf · 2 1. Aşağıda verilen ayrık veriler kullanılarak, kübik tiriz eğrisi çizilmesi

30

Ek1) 1. Soru için yazılan Matlab kodu; clear,clc; x=[0 0.25 0.75 1.25 1.5 1.75 1.875 2 2.125 2.25]; y=[1.2 1.18 1.1 1 0.92 0.8 0.7 0.55 0.35 0]; n=size(x,2); % % Kubik Triz Hesabı % A=zeros(n); %Doğal Tiriz Katsayıları %A.x=B Şeklindeki lineer denklem sisteminin çözümü % for i=1:n-1 h(i)=x(i+1)-x(i); end A(1,1)=1; A(n,n)=1; for i=2:n-1 A(i,i)=2*(h(i)+h(i-1)); A(i,i-1)=h(i-1); A(i,i+1)=h(i); end B = zeros(n,1); B(1)=0; B(n)=0; for i=2:n-1 B(i)=(3/h(i))*(y(i+1)-y(i))-(3/h(i-1))*(y(i)-y(i-1)); end % % Cramer Kuralını kullanarak A.x=B lineer denklem isteminin çözümü % Burada Cx pivoting matris, C ise sonuç matrisi for i=1:n Cx=A; Cx(:,i)=B; C(i)=1/det(A)*det(Cx); end % Tiriz için b ve d katsayılarının hesabı for i=1:n-1 b(i)=(1/h(i))*(y(i+1)-y(i))-(h(i)/3)*(2*C(i)+C(i+1)); d(i)=(C(i+1)-C(i))/(3*h(i)); end % S(i) tiriz eğri ailesinin oluşturulması % S(i)=a(i)+b(i)*(x-x(i))+c(i)*(x-x(i))^2+d(i)*(x-x(i))^3

Page 31: HBM512 Bilimsel Hesaplama II Ödev 3 - web.itu.edu.trturalh/web/courses/hbm512/hw3_sol.pdf · 2 1. Aşağıda verilen ayrık veriler kullanılarak, kübik tiriz eğrisi çizilmesi

31

syms xp for i=1:n-1 S(i)=vpa(y(i)+b(i)*(xp-x(i))+C(i)*(xp-x(i))^2+d(i)*(xp-x(i))^3,5); end % % Tiriz denklemlerinde tanım aralıklarında 0.0625 adımla % S(x) değerlerinin hesabı % nx=0 for i=1:n-1 nn=(x(i+1)-x(i))/0.0625; for j=1:nn xSS(j+nx)=((j-1)*0.0625+x(i)) SS(j+nx)=subs(S(i),xSS(j+nx)); end if i==n-1 SS(j+nx+1)=y(n) xSS(j+nx+1)=x(n) end nx=j+nx end figure plot(xSS,SS,'.-b') hold on plot(x,y,'.r','MarkerSize',15) hold off grid on title('Tiriz ve Ayrik Veriler') xlabel('x(ft.)') ylabel('y(ft.)') axis equal axis([0 2.5 0 1.4]) legend('Tiriz Yak.','Ayrik Veri')

Page 32: HBM512 Bilimsel Hesaplama II Ödev 3 - web.itu.edu.trturalh/web/courses/hbm512/hw3_sol.pdf · 2 1. Aşağıda verilen ayrık veriler kullanılarak, kübik tiriz eğrisi çizilmesi

32

Ek2) 2. Soru için yazılan Matlab kodu; clear,clc; ts=[0:10]; Tf=[72.5 78.1 86.4 92.3 110.6 111.5 109.3 110.2 110.5 109.9 110.2]; n=size(Tf,2); % girilen veri sayısı %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % En Küçük Kareler Hesabı % S0=n+1; % S1=0; % Başlangıç Değerleri S2=0; T0=0; T1=0; for i=1:n S1=S1+ts(i); S2=S2+(ts(i))^2; T0=T0+Tf(i); T1=T1+ts(i)*Tf(i); end a1=(S2*T0-S1*T1)/(S0*S2-S1^2); a2=(S0*T1-S1*T0)/(S0*S2-S1^2); yy=a1+a2*ts; % Lineer En Küçük Kareler eğrisini kullanarak % t=[0.6, 2.5, 4.7, 8.9] zaman değerleri için % T(F) sıcaklık hesabı tt=[0.6, 2.5, 4.7, 8.9]; for i=1:4 Tkk(i)=a1+a2*tt(i); end % Lineer En Küçük Kareler eğrisini kullanarak % T=[75, 85, 90, 105] sıcaklık değerleri için % geçen t(s) süresinin hesabı TT=[75 85 90 105]; for i=1:4 skk(i)=(TT(i)-a1)/a2; end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Kubik Triz Hesabı % A=zeros(n); %Doğal Tiriz Katsayıları %A.x=B Şeklindeki lineer denklem sisteminin çözümü %

Page 33: HBM512 Bilimsel Hesaplama II Ödev 3 - web.itu.edu.trturalh/web/courses/hbm512/hw3_sol.pdf · 2 1. Aşağıda verilen ayrık veriler kullanılarak, kübik tiriz eğrisi çizilmesi

33

% h(i) noktalar arasındaki adım hesabı for i=1:n-1 h(i)=ts(i+1)-ts(i); end A(1,1)=1; A(n,n)=1; for i=2:n-1 A(i,i)=2*(h(i)+h(i-1)); A(i,i-1)=h(i-1); A(i,i+1)=h(i); end B = zeros(n,1); B(1)=0; B(n)=0; for i=2:n-1 B(i)=(3/h(i))*(Tf(i+1)-Tf(i))-(3/h(i-1))*(Tf(i)-Tf(i-1)); end % % Cramer Kuralını kullanarak A.x=B lineer denklem isteminin çözümü % Burada Cx pivoting matris, C ise sonuç matrisi for i=1:n Cx=A; Cx(:,i)=B; C(i)=1/det(A)*det(Cx); end % Tiriz için b ve d katsayılarının hesabı for i=1:n-1 b(i)=(1/h(i))*(Tf(i+1)-Tf(i))-(h(i)/3)*(2*C(i)+C(i+1)); d(i)=(C(i+1)-C(i))/(3*h(i)); end % S(i) tiriz eğri ailesinin oluşturulması % S(i)=a(i)+b(i)*(x-x(i))+c(i)*(x-x(i))^2+d(i)*(x-x(i))^3 syms x for i=1:n-1 S(i)=vpa(Tf(i)+b(i)*(x-ts(i))+C(i)*(x-ts(i))^2+d(i)*(x-ts(i))^3,5); end for j=1:n-1 for i=1:5 SS(i+5*(j-1))=subs(S(j),((i-1)*0.2+ts(j))); end end SS(5*(n-1)+1)=Tf(n); % Kübik Tiriz eğrisini kullanarak % t=[0.6, 2.5, 4.7, 8.9] zaman değerleri için % T(F) sıcaklık hesabı

Page 34: HBM512 Bilimsel Hesaplama II Ödev 3 - web.itu.edu.trturalh/web/courses/hbm512/hw3_sol.pdf · 2 1. Aşağıda verilen ayrık veriler kullanılarak, kübik tiriz eğrisi çizilmesi

34

% t=0.6 için S(1), t=2.5 için S(3), t=4.7 için S(5), % t=8.9 için S(9) parça fonksiyonları kullanılacak Tks(1)=subs(S(1),0.6); Tks(2)=subs(S(3),2.5); Tks(3)=subs(S(5),4.7); Tks(4)=subs(S(9),8.9); % Nonlineer Fonksiyonlar için Newton-Raphson Metodu % ile T=[75, 85, 90, 105] sıcaklık değerleri için % geçen t(s) süresinin hesabı % T=75 için S(1), T=85 için S(2), T=90 için S(3), % T=105 için S(4) parça fonksiyonları kullanılacak for i=1:4 hata=10000; %hata iterasyon için başlangıç değeri pp=ts(i); ft=S(i)-TT(i); while hata>1.e-5 p=pp-subs(ft,pp)/subs(diff(ft,x),pp); hata=abs(p-pp); pp=p; end sol(i)=p; end sxx=0:0.2:10; figure plot(ts,Tf,'.r','MarkerSize',15) grid on title('Ayrik Sicaklik-Zaman Verisinin Dagilimi') xlabel('t(s)') ylabel('T(F)') figure plot(sxx,SS,'.-g') hold on plot(ts,yy,'.-b') hold off hold on plot(ts,Tf,'.r','MarkerSize',15) hold off axis([0 10 60 140]) grid on legend('Tiriz Yaklasimi','Lineer Regresyon','Ayrik Data') title('Lineer Regresyon vs. Kubik Tiriz Yaklasimlari') xlabel('t(s)') ylabel('T(F)') figure plot(tt,Tks,'.b','MarkerSize',16) hold on plot(tt,Tkk,'.r','MarkerSize',16) hold off

Page 35: HBM512 Bilimsel Hesaplama II Ödev 3 - web.itu.edu.trturalh/web/courses/hbm512/hw3_sol.pdf · 2 1. Aşağıda verilen ayrık veriler kullanılarak, kübik tiriz eğrisi çizilmesi

35

grid on title('Tiriz ve Lineer En Küçük Kareler ile Sicaklik Tahmini') xlabel('t(s)') ylabel('T(F)') legend('Tiriz Yak.','Lineer Regresyon',2) axis([0 10 60 130]) figure plot(sol,TT,'.b','MarkerSize',16) hold on plot(skk,TT,'.r','MarkerSize',16) hold off grid on title('Tiriz (Newton-Raphson Yöntemi) ve Lineer En Küçük Kareler ile Süre Tahmini') xlabel('t(s)') ylabel('T(F)') legend('Tiriz Yak.','Lineer Regresyon',2) axis([0 7 60 110])

Page 36: HBM512 Bilimsel Hesaplama II Ödev 3 - web.itu.edu.trturalh/web/courses/hbm512/hw3_sol.pdf · 2 1. Aşağıda verilen ayrık veriler kullanılarak, kübik tiriz eğrisi çizilmesi

36

Ek3) 3. Soru için yazılan Matlab kodu; clear,clc; tic x=0:0.125:4; y=sin(3*x).*exp(-x); n=size(y,2); f(:,1)=y'; for j=2:n for i=j:n f(i,j)=f(i,j-1)-f(i-1,j-1); end end syms xp; h=x(2)-x(1); % ileri fark türevi x=x0=0 dPx_dalfa_ileri=vpa(f(2,2)); for i=3:n dPx_dalfa_ileri=dPx_dalfa_ileri+(f(i,i)*(-1)^(i+1)/i); end dPx_dx_ileri=(1/h)*dPx_dalfa_ileri % geri fark türevi x=x0=4 dPx_dalfa_geri=vpa(f(n,2)); for i=3:n dPx_dalfa_geri=dPx_dalfa_geri+(f(n,i)*(-1)^(i+1)/i); end dPx_dx_geri=(1/h)*dPx_dalfa_geri % merkezi fark türevi x=x0=2 m=floor((n-1)/2); dPx_dalfa_merkezi=vpa((f(m,2)+f(m+1,2))/2); for i=2:m dPx_dalfa_merkezi=dPx_dalfa_merkezi+(f(m+i-1,2*i+1)+f(m+i,2*i+1))/2*(-1)^(i)*(factorial(i)*factorial(i))/factorial(2*i+1); end dPx_dx_merkezi=(1/h)*dPx_dalfa_merkezi % İleri Fark Polinomunun Hesabı factor(1)=(xp-x(1))/h; for i=2:n factor(i)=vpa(factor(i-1)*(xp-x(i))/(h*i)); end Pxp=f(1,1); for i=2:n Pxp=Pxp+vpa(f(i,i)*factor(i-1)); end Pxp=collect(Pxp); pxd=collect(diff(Pxp,'xp')); clear yxy,clear xy; xy=[0:0.01:4];

Page 37: HBM512 Bilimsel Hesaplama II Ödev 3 - web.itu.edu.trturalh/web/courses/hbm512/hw3_sol.pdf · 2 1. Aşağıda verilen ayrık veriler kullanılarak, kübik tiriz eğrisi çizilmesi

37

yxy=subs(Pxp,xy); toc figure plot(xy,yxy,'-r','MarkerSize',12) hold on plot(x,y,'.b') hold off grid on title('ileri Farklar Cokterimlisi ve Ayrik Veriler') xlabel('x') ylabel('y(x)') legend('P_{32}(x)','Ayrik Veriler') figure yxyd=subs(pxd,xy); plot(xy,yxyd,'-r','MarkerSize',12) hold on plot(xy,yxy,'-b') hold off hold on plot(x,y,'.k','MarkerSize',12) hold off grid on title('ileri Farklar Cokterimlisi, Cokterimlinin Türevi ve Ayrik Veriler') xlabel('x') ylabel('y(x)') legend('d(P_{32}(x))/dx','P_{32}(x)','Ayrik Veriler')