hbm512 bilimsel hesaplama ii Ödev 2

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

Upload: others

Post on 16-Oct-2021

31 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: HBM512 Bilimsel Hesaplama II Ödev 2

HBM512

Bilimsel Hesaplama II

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

Page 2: HBM512 Bilimsel Hesaplama II Ödev 2

1

1. Ayrık veriler;

x y x y x y 0 0.1 14 2.022 28 0.4308 2 1.884 16 1.65 30 0.203 4 2.732 18 1.5838 32 0.1652 6 3.388 20 1.35 34 -0.073 8 3.346 22 1.0082 36 -0.002

10 3 24 0.718 38 -0.1122 12 2.644 26 0.689 40 0.106

Bu ayrık verileri kullanarak 6. dereceden bir çokterimli yaklaşımı İleri Farklar Yöntemi kullanarak yapalım. Bu tablonun oluşturulması ve polinomun elde edilmesi 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ı: Pn(x) : uydurulan çokterimli

Algoritma: Algoritmada önce 1. sütun, sonra 2. sütun vs. olarak, aşağıdaki tablonun sütunlarının doldurulması şeklinde yapılacaktır.

i,j 0f 0f∆ 0

2f∆ …

… 1 x 2 x x 3 x x x … x x x x … x x x x x

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

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

n∆

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

Page 3: HBM512 Bilimsel Hesaplama II Ödev 2

2

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

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

Döngü 4 Son Ekrana Yaz: Pxp Program Sonu

Page 4: HBM512 Bilimsel Hesaplama II Ödev 2

8 ve 15 anlamlı rakam için oluşturulan Farklar Tablosu

0f 0f∆ 02f∆ 0

3f∆ 04f∆ 0

5f∆ 06f∆ 0

7f∆ 08f∆ 0

9f∆ 010f∆ 0

11f∆ 012f∆ 0

13f∆ 014f∆ 0

15f∆ 016f∆ 0

17f∆ 018f∆ 0

19f∆ 020f∆

0.1

1.884 1.784

2.732 0.848 -0.936

3.388 0.656 -0.192 0.744

3.346 -0.042 -0.698 -0.506 -1.25

3 -0.346 -0.304 0.394 0.9 2.15

2.644 -0.356 -0.01 0.294 -0.1 -1 -3.15

2.022 -0.622 -0.266 -0.256 -0.55 -0.45 0.55 3.7

1.65 -0.372 0.25 0.516 0.772 1.322 1.772 1.222 -2.478

1.5838 -0.0662 0.3058 0.0558 -0.4602 -1.2322 -2.5542 -4.3262 -5.5482 -3.0702

1.35 -0.2338 -0.1676 -0.4734 -0.5292 -0.069 1.1632 3.7174 8.0436 13.5918 16.662

1.0082 -0.3418 -0.108 0.0596 0.533 1.0622 1.1312 -0.032 -3.7494 -11.793 -25.3848 -42.0468

0.718 -0.2902 0.0516 0.1596 0.1 -0.433 -1.4952 -2.6264 -2.5944 1.155 12.948 38.3328 80.3796

0.689 -0.029 0.2612 0.2096 0.05 -0.05 0.383 1.8782 4.5046 7.099 5.944 -7.004 -45.3368 -125.7164

0.4308 -0.2582 -0.2292 -0.4904 -0.7 -0.75 -0.7 -1.083 -2.9612 -7.4658 -14.5648 -20.5088 -13.5048 31.832 157.5484

0.203 -0.2278 0.0304 0.2596 0.75 1.45 2.2 2.9 3.983 6.9442 14.41 28.9748 49.4836 62.9884 31.1564 -126.392

0.1652 -0.0378 0.19 0.1596 -0.1 -0.85 -2.3 -4.5 -7.4 -11.383 -18.3272 -32.7372 -61.712 -111.1956 -174.184 -205.3404 -78.9484

-0.073 -0.2382 -0.2004 -0.3904 -0.55 -0.45 0.4 2.7 7.2 14.6 25.983 44.3102 77.0474 138.7594 249.955 424.139 629.4794 708.4278

-0.002 0.071 0.3092 0.5096 0.9 1.45 1.9 1.5 -1.2 -8.4 -23 -48.983 -93.2932 -170.3406 -309.1 -559.055 -983.194 -1612.6734 -2321.1012

-0.1122 -0.1102 -0.1812 -0.4904 -1 -1.9 -3.35 -5.25 -6.75 -5.55 2.85 25.85 74.833 168.1262 338.4668 647.5668 1206.6218 2189.8158 3802.4892 6123.5904

0.106 0.2182 0.3284 0.5096 1 2 3.9 7.25 12.5 19.25 24.8 21.95 -3.9 -78.733 -246.8592 -585.326 -1232.8928 -2439.5146 -4629.3304 -8431.8196 -14555.41

• Her iki durum için de farklar tablosu aynı değeri almaktadır. Çünkü 0f verileri maksimum 4 haneli hassasiyete sahip olduğu için toplama ve çıkarma

işlemleri hassasiyeti değiştirmemektedir. Ancak çarpma/bölme işlemlerine haiz bir işlem gerçekleştirilse idi, hassasiyetin değişeceği açıktı.

• Örneğin 3 adet sayıyı toplayalım; 87654.355314.22234.11.0 =++ :burada toplanan sayıların en küçük basamak değeri 510− mertebesinde olduğu

için, bulunan sonuç ta 510− hassasiyetinde oldu. Ancak çarpma veya bölme işlemi ele alınırsa; 4742559026.055314.22234.11.0 =xx :burada en

küçük basamak değeri 510− mertebesinde olmasına rağmen çarpımın hassasiyeti 1010− mertebesindedir.

Page 5: HBM512 Bilimsel Hesaplama II Ödev 2

6. dereceden uydurulan çokterimli 8 anlamlı rakam için;

0.10000000x1.8837500..x0.87687498-

.x0.25599478.x0.03769531-.x0.00261068.x0.00006836-(x)P2

34566

++

++ =

15 anlamlı rakam için;

00000000.10000000000000.x1.883750000000000.x0.87687500-1666667.x0.25599479

2500000.x0.03769531-7083333.x0.002610679375000.x0.00006835-(x)P23

4566

+++

+ =

20. dereceden uydurulan çokterimli 8 anlamlı rakam için;

0.10000000x594.17443.x1046.1312.-x804.37750.x363.68025.-x109.45685.

x23.467927.-x3.7377350..x0.45455031-.x0.04298993.x0.00319984-

.x0.00018872.x0.00000884-.x0.00000033.x0.00000001-.x0.00000000

.x0.00000000-.x0.00000000.x0.00000000x.00000000.0.x0.00000000(x)P

2345

678910

1112131415

161718192020

++++

++

+++

+++≈

15 anlamlı rakam için;

00000000.10000000861372.x594.174482009655.x1046.13134-

225810.x804.377571706640.x363.680280-040683.x109.456859

572214.x23.4679289-221487.x3.737735369610648.x0.45455034-

7111648.x0.042989931257355.x0.00319984-3103677.x0.00018872

0497737.x0.00000884-8240240.x0.000000329593031.x0.00000000-

0217823.x0.000000000003761.x0.00000000-0000048.x0.00000000

0000000.x0.00000000-0000000.x0.000000000000000.x0.00000000 (x)P

2

345

678

91011

121314

151617

18192020

++

++

+

++

+

++

+≈

İnceleme

- Yukarıdan da anlaşılacağı üzere, 8 anlamlı basamak kullanılarak 20. derece bir yaklaşım yapmak bu veri serisi ile mümkün olmamaktadır. Bu yorum 15 anlamlı basamak kullanarak uydurulan 20. derece çokterimli için de geçerlidir.

- 8 anlamlı basamak için )()( 1420 xPxP ≈ olurken, 15 anlamlı basamak için )()( 1720 xPxP ≈ olarak bulunur.

- Bunun sonucu olarak, çokterimli yaklaşımı bazı noktalarda girilen veriyi takip etmesine rağmen, bazı noktalarda tamamen bağımsız bir yol izleyerek ıraksama yapacaktır.

Page 6: HBM512 Bilimsel Hesaplama II Ödev 2

5

Şekil 1.

Şekil 2.

Page 7: HBM512 Bilimsel Hesaplama II Ödev 2

6

Şekil 3.

Şekil 4.

Page 8: HBM512 Bilimsel Hesaplama II Ödev 2

7

Yorumlar

- Yapılan 6. derece yaklaşımlarda hem 8 anlamlı hem de 15 anlamlı basamak göz önüne alındığında yaklaşım sağlamamıştır.

- Buradaki 6. derece çokterimli yaklaşımının bütün verinin trendini sağlamaması

normal bir sonuçtur. Çünkü alınan 21 datanın ilk 6 tanesine bağlı olarak yazılan çokterimli, ancak ilk 6 terimin bulunduğu aralıkta, yani [0,12] x ∈ aralığında bir yaklaşım sağlayabilir. Bu aralığın dışında ayrık datadan bağımsız hareketi de normal bir davranıştır. Bu değişimi Şekil 5’te görebiliriz.

Şekil 5.

- Şekil 5’ten de anlaşılacağı üzere, çokterimli yaklaşımı 7. noktadan sonra ıraksamaya başlıyor.

- Şekil 3’te olan ilginç bir durum, 6. derece uydurulan çokterimlilerin aksine, 20. derece 8 anlamlı basamak kullanıldığı zaman çokterimli +∞ ’a ıraksamaktadır. Yani çokterimlide pozitif katsayılar hâkim bir durumdadır.

- Yine 20. derece yaklaşımda bir değerlendirme yapılırsa, 15 anlamlı basamakta iyi bir yaklaşım yapılmıştır. Ancak yukarıda belirtildiği gibi, 20 derece çokterimlide

181920 ,, xxx elemanlarının katsayıları 15 basamağa kadar “0” olarak hesap edilebilmiştir. Yani, aslında )()( 1720 xPxP ≈ olacak şekilde 17. dereceye kadar olan bir çokterimli oluşturulabilmiştir.

- Bunun etkisi Şekil 4 üzerinde görülebilir. 18., 19., 20., 21. noktalar çokterimli yaklaşımı ile fonksiyondaki değerinden sapma göstermektedir.

- Data sıklığı artırılarak çizilen Şekil 6’da, başlangıç ve bitiş noktalarına doğru sıçramalar göze çarpmaktadır. Bu sıçramalar, yüksek mertebeli (17,16,15,.. vs) terimlerin etkisi olarak ortaya çıkmaktadır.

Page 9: HBM512 Bilimsel Hesaplama II Ödev 2

8

Şekil 6.

- Şekil 6’da görülen osilasyonlar şu şekilde açıklanabilir; öyle bir f(x)y = fonksiyonumuz olsun ki, x ’teki değişimler y ’de çok büyük değişimlere neden

olsun. Böyle bir durum ya üstel bir fonksiyonla ( .ay bXe= gibi) ya da yüksek

mertebeli parabolik fonksiyonlar ( .ay bx= gibi) kullanılarak elde edilir. - Bizim çokterimli yaklaşımımızda da 21 nokta kullanılması çokterimliyi ayrık veri

noktalarının dışında salınım yapmaya itmiştir. Veri sayısı arttıkça, çokterimlinin mertebesi artacak ve bunun sonucu olarak çokterimli ayrık noktalarda denklemin köklerini sağlamasına rağmen (girilen (x,y) ayrık veri çiftlerinde), ara değerlerde büyük salınımlar yapacağı açıktır. Bunun örneği Şekil 6’da çok iyi bir şekilde görülmektedir.

Page 10: HBM512 Bilimsel Hesaplama II Ödev 2

9

2. Lineer regresyon yaklaşımı ile hesap yapmak için fonksiyonu yeni bir forma dönüştürmek gerekmektedir. Bu yaklaşım;

XaaY .21 += şeklinde tanımlanan bir lineer fonksiyondur. Burada değişkenler şöyle tanımlanır;

)ln(.)( 21 xaaxy += için )(xyY = ve )ln(xX = Bu dönüşüme göre veriler yeniden oluşturulursa;

Asıl Fonksiyon

Dönüştürülmüş Fonksiyon

x y(x) X=ln(x) Y=y(x) 1 10 0,0000 10 2 14 0,6931 14 3 16 1,0986 16 4 18 1,3863 18 5 19 1,6094 19 6 20 1,7918 20 7 21 1,9459 21 8 22 2,0794 22 9 23 2,1972 23

10 23 2,3026 23 Oluşturulan yeni F(X,Y) çifti için hatayı minimize eden denklem takımı oluşturulursa;

∑∑==

=++n

ii

n

ii YaXan

02

01).1(

∑∑∑===

=+n

iii

n

ii

n

ii YXaXaX

02

0

2

01 ..

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. Bu denklemler Matlab’te yazılan bir m-file kodu ile çözülmüştür.

Algoritma; Başla Oku x,y; Dönüşümü uygula; X=ln(x) Y=y 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+X(i) S2=S2+(X(i))^2 T0=T0+Y(i)

Page 11: HBM512 Bilimsel Hesaplama II Ödev 2

10

T1=T1+X(i)*Y(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) x=1.5 ve x=11 değerleri için fonksiyonu hesapla; y(1.5)=a1+a2*ln(1.5) y(11)=a1+a2*ln(11) Program Sonu

Program Çıktıları: S1= 15.104, S2= 27.65 T0= 186, T1= 308.76 a1= 6.3065, a2= 7.7215

4373.9)5.1ln(.7215.73065.6)5.1( =+=y 8218.24)11ln(.7215.73065.6)11( =+=y

Yorumlar:

- Yapılan lineer regresyonda, regresyonun merkezde dahi iyi bir sonuç verdiği aşağıdaki grafikten görülmektedir. Bunun temel nedeni, verilen datanın ]9,5[=x aralığında )ln(x fonksiyonuna daha uygun bir seyir izlemesidir.

- Burada dikkate alınacak bir husus ta, )ln(x fonksiyonunun hesabında yapılan

yakınsamadır. Yani anlamlı rakam olarak, 410− mertebesi kullanılmıştır. Burada alınacak daha küçük bir hesap mertebesi, fonksiyonla daha iyi bir çakışma sağlayacaktır.

Şekil 7

Page 12: HBM512 Bilimsel Hesaplama II Ödev 2

11

3. Verilen fonksiyon için veriler oluşturulursa

x f(x)=x4 0 0.0000

0.1 0.0001 0.2 0.0016 0.3 0.0081 0.4 0.0256 0.5 0.0625 0.6 0.1296 0.7 0.2401 0.8 0.4096 0.9 0.6561

1 1.0000 İleri farklar tabloları, 3 anlamlı basamak ve 6 anlamlı basamak için oluşturulmuştur. Fark tablolarının oluşturulmasında kullanılan genel ifade, E lineer kaydırma işlemcisi kullanılarak;

kk E )1( −=∆ Yani;

kk Ef )1(0 −=∆ şeklindeki binom açılımı kullanarak oluşturulur.

Önemli Not: Bütün Tabloların oluşturulması ve uydurulan Çokterimlinin katsayıları, değeri, HATA hesabı vs. işlemler sanki elimizde maksimum 3 ondalık ve/veya 6 ondalık sayıya kadar hesap yapabilen bir hesap makinesi varmış varsayımıyla hesaplanmıştır. Örneğin, gerçekte 2.0=x için 0016.0)2.0( =f olmasına rağmen, 3 anlamlı veri için benim hesap makinem 2.0=x için 002.0)2.0( =f olarak hesaplamakta. Başka bir örnek, Hata

hesabında )!1(

))...(1(+

−−n

nααα katsayısının üst kısmı(pay) çarpımsal bir döngüde hesap

edildiğinden, 3=n ‘e kadar yazarsak; 7.2=α

59.47.17.2)1( ==− xαα 213.37.059.4)2)(1( ==−− xααα

964.09639.0)3.0(213.3)3)(2)(1( −≅−=−=−−− xαααα olacak. Yani döngü 3. terimden sonra hep yuvarlama hatası yapacaktır. Ayrıca payda’daki faktöriyeli de düşünürsek bölme işlemi ile beraber, işlem bayağı yüksek bir yuvarlatma ve kesme hatasını içerecektir. Bu yüzden sonuçları incelerken veya katsayıları karşılaştırırken yuvarlatma ve kesme hatalarının, hesapta her zaman göz önünde bulundurulduğu dikkate alınmalıdır.

Tabloların oluşturulması ve çokterimlinin hesabı için Matlab’te bir m-file kodu yazılmıştır. Program girdileri: xi, yi : ayrık girdi noktaları xp : çokterimlinin hesap edileceği nokta n : girilen nokta sayısı Program çıktıları: Pn(x) : uydurulan çokterimlinin

Page 13: HBM512 Bilimsel Hesaplama II Ödev 2

12

Algoritma: Algoritmada önce 1. sütun, sonra 2. sütun vs. olarak, aşağıdaki tablonun sütunlarının doldurulması şeklinde yapılacaktır.

i,j 0f 0f∆ 0

2f∆ …

… 1 x 2 x x 3 x x x … x x x x … x x x x x

Başla: Oku x,y,n,xp; %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 alfa=(xp-x(1))/(x(2)-x(1))

% 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

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

Döngü 4 Son Pxp(xp)’yi hesapla Rx % Hatayı hesapla Program Sonu

Page 14: HBM512 Bilimsel Hesaplama II Ödev 2

13

3 Anlamlı basamak için farklar tablosu;

0f 0f∆ 02f∆ 0

3f∆ 04f∆ 0

5f∆ 06f∆ 0

7f∆ 08f∆ 0

9f∆ 010f∆

0.000 0.000 0.000 0.002 0.002 0.002 0.008 0.006 0.004 0.002 0.026 0.018 0.012 0.008 0.006 0.063 0.037 0.019 0.007 -0.001 -0.007 0.130 0.067 0.030 0.011 0.004 0.005 0.012 0.240 0.110 0.043 0.013 0.002 -0.002 -0.007 -0.019 0.410 0.170 0.060 0.017 0.004 0.002 0.004 0.011 0.030 0.656 0.246 0.076 0.016 -0.001 -0.005 -0.007 -0.011 -0.022 -0.052 1.000 0.344 0.098 0.022 0.006 0.007 0.012 0.019 0.030 0.052 0.104

6 Anlamlı basamak için farklar tablosu;

0f 0f∆ 02f∆ 0

3f∆ 04f∆ 0

5f∆ 06f∆ 0

7f∆ 08f∆ 0

9f∆ 010f∆

0.0000 0.0001 0.0001 0.0016 0.0015 0.0014 0.0081 0.0065 0.0050 0.0036 0.0256 0.0175 0.0110 0.0060 0.0024 0.0625 0.0369 0.0194 0.0084 0.0024 0.000 0.1296 0.0671 0.0302 0.0108 0.0024 0.000 0.0000 0.2401 0.1105 0.0434 0.0132 0.0024 0.000 0.0000 0.0000 0.4096 0.1695 0.0590 0.0156 0.0024 0.000 0.0000 0.0000 0.0000 0.6561 0.2465 0.0770 0.0180 0.0024 0.000 0.0000 0.0000 0.0000 0.000 1.0000 0.3439 0.0974 0.0204 0.0024 0.000 0.0000 0.0000 0.0000 0.000 0.000 *Not: Burada 4 anlamlı basamak göstermek yeterli olmuştur. Zira 4. basamaktan sonraki sayılar sıfır değerini almaktadır.

Çokterimlinin 27.0=x Noktasında Değeri ve Hata Hesabı: İleri farklar çokterimlisinin ve Hatanın genel ifadesi;

))...((!.

...)()( 100

00

0 −−−∆

++−∆

+= nn

n

n xxxxhn

fxx

hf

fxP

))...(()!1()(

)( 0

1

n

n

n xxxxn

fxR −−

+=

+ ξ

hxx 0−

=α parametresi kullanılarak;

∑= −

∆=n

i

in ii

fxP0

0 !)!.(!

)(α

α

0111

)!1())...(1(

)()!1(

))...(1()( f

nn

fhn

nxR nnn

n+++ ∆

+−−

=+

−−=

αααξααα

Buna göre iki tabloyu da kullanarak x=0.27 değerine karşılık gelen P(0.27) hesap edilirse;

7.21.0

027.0=

−=α ve fark tablolarının diyagonallerindeki 0f , 0f∆ , 0

2f∆ ,.., 010f∆ katsayıları

kullanılarak,

Page 15: HBM512 Bilimsel Hesaplama II Ödev 2

14

3 anlamlı basamak için hesap edilen değerler;

!)1)...(1(

...!)!.(

!)( 000

00 n

nfff

iifxP n

n

i

in

+−−∆++∆+=

−∆= ∑

=

ααααα

α

Burada 0f , 0f∆ ,…, 010f∆ değerlerinin katsayıları olan

!)!.(!

ii−αα

değerlerine ia denirse;

0a 1a 2a 3a 4a 5a 6a 7a 8a 9a 10a

1.000 2.700 2.295 0.536 -0.040 0.010 -0.004 0.002 -0.001 0.001 0.000 Ve farklar tablosundan;

0f 0f∆ 02f∆ 0

3f∆ 04f∆ 0

5f∆ 06f∆ 0

7f∆ 08f∆ 0

9f∆ 010f∆

0.000 0.000 0.002 0.002 0.006 -0.007 0.012 -0.019 0.030 -0.052 0.104 * Önemli Not kısmındaki çarpımsal hata burada göze çarpıyor. Tablodaki değerler kullanılarak çarpım yapılırsa;

!)1)...(1(

...)27.0( 010

0010 nn

fffP+−−

∆++∆+=αααα

006.0)27.0(10 =P bulunur. Hata hesabı: Fark tablosunda son değer 0

10f∆ ’dur ve tanım gereği 10R ’nun hesap edilebilmesi için

011f∆ değerinin bilinmesi gerekir. Bu yüzden, ancak 9R değerini hesaplamak mümkün

olacaktır. Burada iki farklı hata hesabı verilmiştir; Hatanın genel denklemi;

01

)!1())...(1(

)( fn

nxR n

n+∆

+−−

=ααα

a) 9R ’ün tablodaki değerleri kullanarak yuvarlatma yapmadan hesabı;

104.0)000376304.0(104.012...910

532318.1365)!19(

)97.2)...(17.2(7.2)( 0

199 x

xxxfxR −=

−=∆

+−−

= +

000039135.0)(9 −=xR b) 9R ’ün tablodaki değerleri kullanarak yuvarlatma yaparak hesabı (eski hesap makinemi kullanarak);

000.012...910

022.142104.0

12...910600.1365

)!19()97.2)...(17.2(7.2

)( 019

9 ==−

=∆+

−−= +

xxxxxxfxR

000.0)(9 =xR

Page 16: HBM512 Bilimsel Hesaplama II Ödev 2

15

6 anlamlı basamak için hesap edilen değerler;

Burada 0f , 0f∆ ,…, 010f∆ değerlerini ve

!)!.(!

iiai

−=

αα

katsayılarını 4=i ’e kadar almak

yeterli olacaktır. Zira 0f∆ ,…, 010f∆ değerleri 4=i ’den sonra “0” değerini almaktadır.

0a 1a 2a 3a 4a

1.000000 2.700000 2.295000 0.535500 -0.040163 Ve farklar tablosundan;

0f 0f∆ 02f∆ 0

3f∆ 04f∆

0.000000 0.000100 0.001400 0.003600 0.002400 Tablolardaki veriler denklemde yerine konursa;

!4)3)(2)(1(

...)27.0( 04

004−−−

∆++∆+=ααααα fffP

005315.0)7.2(10 =P olarak elde edilir. Hata hesabı:

Fark tablosunda 04f∆ ’e kadar olan değerleri kullandığımız için 4R değerini hesap edelim.

Burada da iki farklı hata hesabı verilmiştir; Hatanın genel denklemi;

01

)!1())...(1(

)( fn

nxR n

n+∆

+−−

=ααα

a) 4R ’ün tablodaki değerleri kullanarak yuvarlatma yapmadan hesabı;

(Burada 000000.005 =∆ f olduğu için 000000.0)(4 =xR olması gerekiyordu. Buna

rağmen 6 anlamlı basamak göz önüne alındığı için, minimum 0000005.0 gibi 7. basamakta oluşacak bir yuvarlatma hatası tanımlayabiliriz. Bu hatayı göz önüne alarak yapacağımız hesaba bakalım)

16

014

4

1022.50000005.0010442225.00000005.012345

25307.1

)0000005.0000000.0(12345

253070.1)!14(

)47.2)(37.2)(27.2)(17.2(7.2)(

+

≈==

+=∆+

−−−−=

xxxxxx

xxxxfxR

16

4 1022.5)( −= xxR b) 4R ’ün tablodaki değerleri kullanarak yuvarlatma yaparak hesabı (eski hesap makinemi kullanarak);

000000.0000000.0010442.0

000000.012345

253070.1)!14(

)47.2)(37.2)(27.2)(17.2(7.2)( 0

144

==

=∆+

−−−−= +

xxxxx

fxR

000000.0)(9 =xR

(Hesap makinem burada bayağı başarılı…)

Page 17: HBM512 Bilimsel Hesaplama II Ödev 2

16

İnceleme ve Yorumlar: - İlk olarak sonlu farklar tablolarına baktığımızda, 3 anlamlı basamak çokterimli

yaklaşımını 10. dereceye kadar götürmektedir. Oysaki 6 anlamlı basamak için oluşturulan tablodan görüleceği üzere, uydurulan 4. dereceden bir çokterimli ile fonksiyonu ifade etmek yeterli olacaktır.

- Çokterimli yaklaşımların yaklaşık hataları 0 (sıfır) olarak bulunsa da, gerçek hata ve bağıl gerçek hata göz önüne alınırsa; Üç anlamlı basamak için,

00531441.0)27.0()( 4 =→= fxxf 00068559.000531441.0006.0)27.0()27.0( =−=−= fPRgerçek

9.12%129.000531441.0

00531441.0006.0)27.0(

)27.0()27.0(lg =≈

−=

−=

ffP

R erçekbagı

Altı anlamlı basamak için, 00000059.000531441.0005315.0)27.0()27.0( =−=−= fPRgerçek

0111.0%000111.000531441.0

00531441.0005315.0)27.0(

)27.0()27.0(lg =≈

−=

−=

ffP

R erçekbagı

- Yapılan bütün adımlarda (fark tablosunun oluşturulması, katsayıların hesabı, vs.)

anlamlı basamak sayısı göz önüne alınmış, bu nedenle her adımda yapılan hata 1. durumda çok büyüyerek %13’e kadar çıkmıştır.

- Başka bir husus ta, hesap hassasiyeti artırılmadan, hesap edilecek yaklaşık hata terimleri hep 0 olarak bulunacaktır. Yani hassasiyet arttıkça hem hesap hem de hata değeri düzgün hesap edilebilecektir.(6 anlamlı rakam fark tablosuna bakılırsa

n>4 için 0fn∆ değerleri 0 olduğu için 0

1

)!1())...(1(

)( fn

nxR n

n+∆

+−−

=ααα

hep 0

olacaktır.) - Sonuç olarak, bir fonksiyona veya bir ayrık veri serisine eğri uydururken dikkat

edilmesi gereken önemli bir husus Hesap Hassasiyeti’dir. Hesap hassasiyetinin düşük olması, hem gereksiz yere işlem sayısının uzamasına (fark tablolarından görüleceği üzere 10-6 hassasiyetle hesap yapılırsa 4. dereceden çokterimli yeterli olurken, 10-3 hassasiyetle yapılırsa 10. dereceden çokterimli bile iyi bir sonuç vermiyor.) hem de hata değerinin büyümesine neden oluyor.

Page 18: HBM512 Bilimsel Hesaplama II Ödev 2

17

Kaynaklar: 1. Hoffman J.D., Numerical Methods for Engineers and Scientists, 2nd Ed., McGraw

Hill Inc., 2001. 2. Maron M.J., Numerical Analysis: A Practical Approach, Macmillan Publ. Co. Inc.,

1982. 3. Nielsen K.L., Methods in Numerical Analysis, Macmillan Publ. Co. Inc., 1964.

Page 19: HBM512 Bilimsel Hesaplama II Ödev 2

18

Ek1) 1. Soru için yazılan Matlab kodu; clear,clc; x=[0:2:40]'; y=[.1;1.884;2.732;3.388;3.346;3;2.644;2.022;1.65;1.5838;1.35;1.0082;.718;... .689;.4308;.203;.1652;-.073;-.002;-.1122;.106]; n=size(y,1); % Girdi verilerin sayısı f(:,1)=y; % Fark Tablosunun Birinci Kolonu % 15 anlamlı basamak durumu f15=round(f*1.e15)/(1.e15); for j=2:n for i=j:n f15(i,j)=round((1.e15)*(f15(i,j-1)-f15(i-1,j-1)))/(1.e15); end end % 8 anlamlı basamak durumu f8=f for j=2:n for i=j:n f8(i,j)=round(1.e8*(f8(i,j-1)-f8(i-1,j-1)))/(1.e8); end end syms xp; h=x(2)-x(1); % 8 anlamlı basamak durumu % alfa.f0+alfa.(alfa-1)*f0^2+...+alfa(alfa-1)...(alfa-(n-1))*f0^n % değerlerinin hesabı factor8(1)=(xp-x(1))/h; for i=2:n factor8(i)=vpa(factor8(i-1)*(xp-x(i))/(h*i),8); end % 15 anlamlı basamak durumu % alfa.f0+alfa.(alfa-1)*f0^2+...+alfa(alfa-1)...(alfa-(n-1))*f0^n % değerlerinin hesabı factor(1)=(xp-x(1))/h; for i=2:n factor(i)=vpa(factor(i-1)*(xp-x(i))/(h*i)); end Pxp15=f15(1,1); Pxp8=f8(1,1); for i=2:7 Pxp15=Pxp15+vpa(f15(i,i)*factor(i-1)) Pxp8=Pxp8+vpa(f8(i,i)*factor8(i-1)) end Pxp8=vpa(collect(Pxp8),8) % 8 anlamlı rakam yaklaşımı Pxp15=vpa(collect(Pxp15),15) % 15 anlamlı rakam yaklaşımı

Page 20: HBM512 Bilimsel Hesaplama II Ödev 2

19

xx=0:2:40; for i=1:21 yy(i)=subs(Pxp8,xx(i)); end figure plot(x,y,'.-r',xx,yy,'.b') grid on xlabel('x') ylabel('y') title('6. Dereceden Polinom Yaklasimi ve Ayrik Veri (8 anlamli rakam)') legend('Ayrik Veri','Polinom Yaklasimi',2) xx=0:2:40; for i=1:21 yy(i)=subs(Pxp15,xx(i)); end figure plot(x,y,'.-r',xx,yy,'.b') grid on xlabel('x') ylabel('y') title('6. Dereceden Polinom Yaklasimi ve Ayrik Veri (15 anlamli rakam)') legend('Ayrik Veri','Polinom Yaklasimi',2) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% 20. derece çokterimli yaklaşımı %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% clear Pxp15; clear Pxp8; Pxp15=f15(1,1); Pxp8=f8(1,1); for i=2:n Pxp15=Pxp15+vpa(f15(i,i)*factor(i-1)) Pxp8=Pxp8+vpa(f8(i,i)*factor8(i-1)) end Pxp8=vpa(collect(Pxp8),8) % 8 anlamlı rakam yaklaşımı Pxp15=vpa(collect(Pxp15),15) % 15 anlamlı rakam yaklaşımı clear xx; clear yy; xx=0:2:40; for i=1:21 yy(i)=subs(Pxp8,xx(i)); end figure plot(x,y,'.-r',xx,yy,'.b') grid on xlabel('x') ylabel('y') title('20. Dereceden Polinom Yaklasimi ve Ayrik Veri (8 anlamli rakam)') legend('Ayrik Veri','Polinom Yaklasimi',2) xx=0:2:40; for i=1:21

Page 21: HBM512 Bilimsel Hesaplama II Ödev 2

20

yy(i)=subs(Pxp15,xx(i)); end figure plot(x,y,'.-r',xx,yy,'.b') grid on xlabel('x') ylabel('y') title('20. Dereceden Polinom Yaklasimi ve Ayrik Veri (15 anlamli rakam)') legend('Ayrik Veri','Polinom Yaklasimi',2)

Page 22: HBM512 Bilimsel Hesaplama II Ödev 2

21

Ek2) 2. Soru için yazılan Matlab kodu; clear,clc; x=1:1:10; y=[10 14 16 18 19 20 21 22 23 23]; X=log(x); Y=y; n=size(x,2); % girilen veri sayısı S0=n+1; % S1=0; % Başlangıç Değerleri S2=0; T0=0; T1=0; for i=1:10 S1=S1+X(i); S2=S2+(X(i))^2; T0=T0+Y(i); T1=T1+X(i)*Y(i); end a1=(S2*T0-S1*T1)/(S0*S2-S1^2); a2=(S0*T1-S1*T0)/(S0*S2-S1^2); % % Tekrar denkleme dönülürse % y(x)=a1+a2*ln(x) % x=1.5 ve x=11 değerleri için xs=[1.5 11]; ys=a1+a2*log(xs) % % Veri aralığı sıklaştırılarak çizilirse % xx=1:0.1:10; yy=a1+a2*log(xx); plot(xx,yy,'-k',x,y,'.r','MarkerSize',16) grid on axis ([0 10 0 25]) lab1=[num2str(a1) '+' num2str(a2) '*ln(x)']; lab2='Veri Noktalari'; legend(lab1,lab2,2) xlabel('x') ylabel('y=a1+a2*ln(x)') title('Lineer Regresyon Foksiyonu ve Ayrik Noktalar')

Page 23: HBM512 Bilimsel Hesaplama II Ödev 2

22

Ek3) 3. Soru için yazılan Matlab kodu; clear,clc; x=[0:0.1:1]'; y=[x.^4]; n=size(y,1); f(:,1)=y; % 3 anlamlı basamak durumu f3=round(f*1000)/(1000); for j=2:n for i=j:n f3(i,j)=round(1000*(f3(i,j-1)-f3(i-1,j-1)))/1000; end end % 6 anlamlı basamak durumu f6=f for j=2:n for i=j:n f6(i,j)=round(1.e6*(f6(i,j-1)-f6(i-1,j-1)))/(1.e6); end end xp=0.27; alfa=(xp-x(1))/(x(2)-x(1)) n=n-1 % 3 anlamlı basamak durumu % alfa.f0+alfa.(alfa-1)*f0^2+...+alfa(alfa-1)...(alfa-(n-1))*f0^n % değerlerinin hesabı for i=n:-1:1 fak3=1 for j=0:(n-i) fak3=round(1000*(fak3*(alfa-j)))/1000 end faktor3(n-i+1)=round(1000*fak3/factorial(n-i+1))/1000 end % 6 anlamlı basamak durumu % alfa*f0+alfa*(alfa-1)*f0^2+...+alfa(alfa-1)...(alfa-(n-1))*f0^n % değerlerinin hesabı for i=n:-1:1 fak6=1 for j=0:(n-i) fak6=round(1.e6*(fak6*(alfa-j)))/(1.e6) end faktor6(n-i+1)=round(1.e6*fak6/factorial(n-i+1))/(1.e6) end Pxp3=f3(1,1) for i=2:n+1 Pxp3=Pxp3+round(1000*(f3(i,i)*faktor3(i-1)))/1000 end Pxp6=f6(1,1) for i=2:n+1

Page 24: HBM512 Bilimsel Hesaplama II Ödev 2

23

Pxp6=Pxp6+round(1.e6*(f6(i,i)*faktor6(i-1)))/(1.e6); end % hata terimi için alfa.(alfa-1)...(alfa-n) katsayısının hesabı hfak3=1,hfak6=1; for i=0:9 hfak3=round(1000*(hfak3*(alfa-i)))/1000; hfak6=round(1.e6*(hfak6*(alfa-i)))/(1.e6); end %R9 değerlerini hesapla Rxp3=round(1000*(hfak3/factorial(n+1)*f3(n+1,n+1)))/1000 Rxp6=round(1.e6*(hfak6/factorial(n+1)*f6(n+1,n+1)))/(1.e6)