| » Kaydol | DF Store | GOLD Üyelik | Gruplar | Meteoroloji | Video | İletişim | | Anasayfa | Forum | Haber Kaynağı | Site Haritası |
| | |||||
| | | | | ![]() | |
| | |||||
| Mühendislik Sistemleri ve Nümerik Analizi Mühendislik Sistemleri ve Nümerik Analizi Dersi Konuları , Anlatım, Soru ve Cevaplar |
| | Paylaş | Seçenekler |
|
#1
| ||||
| ||||
| Nümerik Yöntemlerde Hata Analizi ve Bir Nümerik Çözüm... GİRİŞ Nümerik yöntemler matematik problemlerinin formüle edilip, aritmetik işlemlerle çözülmesini sağlayan tekniklerdir. Çok sayıda ve türde nümerik yöntemler bulunduğu halde hepsinin özelliği çok miktardaki sıkıcı aritmetik işlemlerin yapılmasıdır. 1940 larda bilgisayarların bulunmasıyla birlikte nümerik yöntemlerin verimli şekilde kullanılması ve gelişmesi mümkün olmuştur. Son yıllarda mühendislik problemlerinin nümerik yöntemlerle çözüm yollarının artışında, yüksek hızlı ve verimli bilgisayarların gelişmesinin rolü büyüktür [1]. Bu konuda son zamanlarda literatürde bulunan çalışmalardan bir kısmı aşağıdadır. 1990 yılında Rekha P. Kulkarni ve Balmohan V. Limaye [2], Schrölinger operatörünün basit eigen değeri ve buna uygun dalga fonksiyonunun ,başlangıç değeri olarak Sloan 'ın Galerkin yönteminin iterasyonu ile yaklaşımı kullanılmıştır. 1995 yılında L. Banks-E.Chu [3], büyük sistemlerin lineer denklemlerin çözümünde yeni bir paralel iteratif algoritması sunmuşlardır. 1998 yılında X.-W. Chang [4], A=LU matrisi içerisinde, A gibi norm değeri yeterince küçük katsayıların LU faktorizasyon analizi ile elde edilen hassasiyetini incelemiştir. 1998 yılında, P. Langlois -F. Nativel [5], kayan nokta aritmetiğinde yuvarlatma hatalarının kontrolü ve azaltılması için yöntem sunmuşlardır. 2000 yılında M.Calvo-S.Gonzales-J.I.Montijano [6], cebirsel denklemlerde iterasyon çözümlerde Runge-Kutta yöntemini uygulamışlardır. 2000 yılında Chaya Gurwitz [7], quasi-newton yöntemlerinde kesme hatalarının, quasi-newton yönteminin yaklaşımında sınırsız biçimde artacağını göstermiştir. 2000 yılında T.G. Robertazzi ve S.C. Schwartz [8], sonlu yaklaşım aritmetiğinde kayan noktalı toplama işlemlerinin yapıldığı zaman, hassasiyet sonucunda doğru toplama sırasının etkisinin testini yapmıştır. 2. NÜMERİK YÖNTEMLERDE HATALAR Nümerik yöntemlerde hatalar başlıca kesme ve yuvarlatma hataları olarak iki gurup altında incelenirler. 2.1. Kesme Hataları Matematik işlemler yerine, yaklaşık olanlarının alınmasıyla ortaya çıkan hatalardır. Bu hata türüne örnek olarak Taylor serisin açılımıyla yapılan hatayı gösterebiliriz. 88 Nümerik Yöntemlerde Hata Analizi ve Bir Nümerik Çözüm... S. Yüncü ve C. Aslan Taylor açılımına göre bir f fonksiyonu ve onun ilk n+1 aralığındaki türevleri xi+1 ve xi aralığında sürekli ise, xi+1 deki fonksiyonun değeri, h = x − x olarak i +1 i alındığında, formül (2.1) göre bulunur. n f ′(x ) 2 f ( x ) i i n f (x ) = f (x ) + f ′(x )h + h + ⋅.......... + h + R (2.1) i +1 i i n ! 2 n! Taylor serisinde n inci terime kadar alınan toplamda R kesme hatasını verir. Eşitlik n 2.2 yapılan hatayı gösterir. n +1 f (ξ ) R = n +1 h (2.2) n (n + )! 1 Formül 2.2’de ξ x n + i+1 ila xi arasında yeri belirlenmeyen bir yerde bulunmakta, 1 f ise f fonksiyonunun n+1’inci derecedeki türevi olmakta ve bilinmemektedir. Bu durumda eşitlik 2.2 nin değeri tam olarak bulunamasa da R ’in, adım uzunluğu n n +1 h ile doğru orantılı olduğu görülmektedir. Bu ise kesme hatasını azaltmanın adım uzunluğunu küçültmekle mümkün olacağını gösterir. 2.2. Yuvarlatma Hataları Bilgisayarlar fiziksel yapılarından dolayı sayıların sadece bir kısmını belleklerinde saklayabilirler. Tam ve kesirli sayılar belleklerde kelime (word) yapısında tutulurlar. Tam sayılar 1 kelimede yerleşirken kesirli sayılar en az iki kelimeye yerleşirler. Kelime yapısı 1 byte (16 bit) olan bilgisayarlarda en küçük sayı -32767, en büyük sayı ise +32768 dir. Bu sayılardan daha küçük veya büyük olanlar ise kesirli sayı olarak mbe formatında Şekil 2.1’deki gibi bulunurlar. Burada m mantis b=taban e=üsttür. Mantis 0 ≤ m<1 aralığındadır. Mantis kısmında rasyonalize halinde saklanan sayılar özellikle iterasyonla yapılan işlemlerde yuvarlatma hatalarına sebep olurlar. Bu hataları azaltmak için programlamalarda mantis kısmının hassasiyetini iki kat artıran çift duyarlıklı değişkenler kullanılır. Ayrıca kesirli sayıların işlemlerinde atma (chopping) ve yuvarlatma (rounding) İşaretli üs kısmı Sayının işareti Mantis Şekil 2.1. Kesirli sayıların bilgisayarda yerleşme şekli. Nümerik Yöntemlerde Hata Analizi ve Bir Nümerik Çözüm... kullanırlar. Örneğin 6.7894856 gibi bir sayın 7 hanesi kullanılacaksa yuvarlatmada 6.789486 olurken atmada 6.789485 olur. Duyarlılığı fazla olan günümüz bilgisayarlarında atma yöntemi tercih edilmektedir; zira yuvarlatma için harcanan zaman çok fazla olmaktadır. 2.3. Toplam Nümerik Hata Bilgisayarda işlem yaparken kesme ve yuvarlatma aynı anda yapılıyorsa, örneğin matematiksel bir açılımın ilk n parçası alınıyor ve işlemlerde yuvarlatma yapılıyorsa, iki hatanın toplamı olan hata toplam nümerik hatadır. Bu hataya hem kesmenin hem de yuvarlatmanın etkisi vardır. Genelde kesme hatalarını azaltmak için formül 2.2’deki h adım uzunluğunun azaltılması gerekir. Adım uzunluğu olan h değerinin azalması da yuvarlatma hatalarının artmasına sebep olacaktır. Şekil 2.2’de görüldüğü gibi toplam hatanın belirli bir noktadan sonra arttığı görülmektedir [1]. Gerek kesme, gerekse yuvarlatma hatalarında gerçek ve yaklaşık hata tanımları yapılır. Gerçek hata bilgisayarlarda programı yazılan yöntemlerin doğruluğunu ispatlamak için, gerçek değeri bilinen durumlarda kullanılır. Nümerik hesaplamalarda gerçek değer bilinmediği için, özellikle iterasyonla yapılan işlemlerde de yaklaşık hata kullanılır. İngilizce true ve approximate kelimelerinin baş harfleri alınarak % ε ve t % ε tanımları aşağıdaki gibi yapılır. a Numerik Hatalar ı Toplam nümerik hata t a s l og ha Kesme hatası Yuvarlatma hatası log adım uzunluğu Şekil 2.2. Toplam nümerik hata. Nümerik Yöntemlerde Hata Analizi ve Bir Nümerik Çözüm... S. Yüncü ve C. Aslan ε = gerçek hata / gerçek değer t ε = (Şu andaki yak. değer-bir önceki yak.değer )/Şu andaki yak.değer)*100 a Ayrıca iterasyon yapılan programlarda, n belirli hanenin doğru olmasını sağlayan formül 2.3’teki ε kullanılır. s ε = (0.5*102-n)% (2.3) s İterasyon işlemleri |εa|<|εs| olana kadar devam eder. Bu kriter işlemlerde ancak | ε |<| ε | olması durumunda kullanılır. t a 3. PAKET PROGRAMLAR Bu çalışmada özellikleri aşağıda açıklanan nümerik yöntemlerle ilgili bir program paketi hazırlanmıştır [9]. C++ Builder ile yazılmış olan bu programa Şekil 3.1’deki bir anamenü yardımıyla ulaşılır. Bunlar: • Bairstow kök bulma yöntemi • Gauss yoketme yöntemi • LU Crout çözümleme yöntemi • Cubikspline enterpolasyon yöntemi • Romberg integral alma yöntemi • Runge Kutta adi diferansiyel çözümü yöntemi Şekil 3.1. Nümerik analiz yöntemleri menüsü. Nümerik Yöntemlerde Hata Analizi ve Bir Nümerik Çözüm... Bu programlarda yuvarlatma hatalarını minimuma indirmek için değişkenlerin bir kısmında çift duyarlıklı tanımlar yapılmıştır. Ayrıca programlar, normal (float), çift duyarlıklı (double) ve uzun çift duyarlıklı (long double) ile ayrı, ayrı çalıştırılarak sonuçlardaki farklar her yöntemin sonunda tablolarda gösterilmiştir. 3.1. Bairstow Yöntemi Bairstow yöntemi bir kök bulma yöntemidir. Bu yöntemin diğer kök bulma yöntemlerine göre üstünlüğü gerçel kökleri bulduğu gibi sanal kökleri de bulmasıdır. fn(x)= a0 + a1x + a2x2 +......+anxn (ai gerçel sayı olmak üzere) şeklinde verilen bir polinomun derecesi n tek ise, köklerden birisi mutlaka gerçeldir. Kalan kökler gerçel veya sanal olabilir. Eğer kökün biri sanal ise, diğer kök de mutlaka bu kökün eşleniği olan sanal bir sayıdır. Bairstow yönteminde iterasyona başlamak için s ve r başlangıç noktaları alınır. Her adımdaki r ve s değerlerinin hesaplanan yaklaşık hatası aşağıdaki formüllerle bulunur. |εa,r|=|∆r|/|r|100% |εa,s|=|∆s|/|s|100% Bu hatalar formül (2.3) ε kriter hatasından küçük olana kadar iterasyona devam s eder. Bu yöntemde r ve s değerlerinin başlangıç değerlerinin seçilmesi önemlidir. Sonsuz döngüye girilmemesi için programa maksimum iterasyon sayısı konmuştur [1,10]. Şekil 3.2. Bairstow yöntemi programı. 92 Gazi Üniv. Müh. Mim. Fak. Der. Cilt 17, No 2, 2002 Nümerik Yöntemlerde Hata Analizi ve Bir Nümerik Çözüm... S. Yüncü ve C. Aslan Anamenüden birinci buton çalıştırılarak Şekil 3.2’deki bairstow menüsüne ulaşılır. Örnek 3.1. 5 x + 5 4 x − 5 3 x − 25 2 x + 4x + 20 =0 r = s = −1 ε = 1 s Tablo 3.1. Örnek 3.1’in Bairstow yöntemi ile ve değişik değişken türleri kullanılarak elde edilen çözümünün sonuçları. C Float C Long Double X1 2.0000000000000000000 1.999999999999999300 X2 1.0000000000000000000 1.000000000000002910 X3 -1.000000000000000000 -1.000000132829983770 X4 -2.000000238418579100 -1.999999908406610850 X5 -4.999996185302734380 -4.999996284223565110 C++ Float C++Long Double Xtrue X1 2.0000000000000000000 1.999999999999999300 2 X2 1.0000000000000000000 1.000000000000002910 1 X3 -1.000000000000000000 -1.000000132829983770 -1 X4 -2.000000238418579100 -1.999999908406610850 -2 X5 -4.999996185302734380 -4.999996284223565110 -5 Tablo 3.2. Örnek 3.1 ‘in Bairstow yöntemi ile ve değişik değişken türleri kullanılarak elde edilen çözümünün sonuçlarının hataları. %Hata C Float %Hata C Long Double X1 0,00000000000000000 0,000000000000035 X2 0,00000000000000000 0,000000000000291 X3 0,00000000000000000 0,000013282998377 X4 0,00001192092895500 0,0000045796694575 X5 0,00007629394531240 0,0000743155286978 %Hata C++ Float %Hata C++Long Double X1 0,00000000000000000 0,000000000000035 X2 0,00000000000000000 0,000000000000291 X3 0,00000000000000000 0,000013282998377 X4 0,00001192092895500 0,0000045796694575 X5 0,00007629394531240 0,0000743155286978 Nümerik Yöntemlerde Hata Analizi ve Bir Nümerik Çözüm... 3.2. Gauss Yoketme Yöntemi a11x1+a12x2+…..+a1nxn=c1 a21x1+a22x2+…..+a2nxn=c2 .................................................. ............ an1x1+an2x2+…..+annxn=cn ile verilen denklem sistemi belirli bir algoritma ile yapılan cebrik işlemlerle bilinmeyen x vektorleri çözülür. Denklem sistemi rastgele (hiçbir işlem yapılmadan) çözülürlerse sıfıra bölme ve yuvarlatma hataları ortaya çıkar. Bu olumsuzlukları önlemek için denklem sistemini çözmeden önce pivotlama daha çok yarı pivotlama yapılır. Pivotlama sıfıra bölmeyi önlediği gibi yuvarlatma hatlarını da azaltır [1]. Ana menüden 2. buton çalıştırılarak Şekil 3.3’teki Gauss Yoketme menüsüne ulaşılabilir. Örnek 3.2. A = 7.6300 0.3000 0.1500 0.5000 0.3400 0.8400 0.3800 6.4000 0.7000 0.9000 0.2900 0.5700 0.8300 0.1900 8.3300 0.8200 0.3400 0.3700 0.5000 0.6800 0.8600 10.2100 0.5300 0.7000 0.7100 0.3000 0.8500 0.8200 5.9500 0.5500 0.4300 0.5400 0.5900 0.6600 0.3100 9.2500 Şekil 3.3. Gauss yoketme yöntemi programı. 94 Gazi Üniv. Müh. Mim. Fak. Der. Cilt 17, No 2, 2002 Nümerik Yöntemlerde Hata Analizi ve Bir Nümerik Çözüm... S. Yüncü ve C. Aslan C = [ -9.4400, 25.2700, -48.0100, 19.7600, -23.6300, 62.5900]T Gerçek Değerler = -2 4 –6 2 –4 7 Tablo 3.3. Örnek 3.2‘nin Gauss yoketme yöntemi ile ve değişik değişken türleri kullanılarak elde edilen çözümünün sonuçları. C Float C Long Double X1 -1.99999988079071045 -1.999999999999999950 X2 4.00000000000000000 3.999999999999999640 X3 -6.00000000000000000 -5.999999999999999710 X4 2.00000023841857910 1.999999999999999970 X5 -3.9999997615814209 -3.999999999999999830 X6 7.00000000000000000 7.000000000000000320 C++ Float C++ Long Double G. X1 -1.99999988790710450 -1.999999999999999950 -2 X2 4.00000000000000000 3.999999999999999640 4 X3 -6.00000000000000000 -5.999999999999999710 -6 X4 2.00000023841857910 1.999999999999999970 2 X5 -3.99999976158142090 -3.999999999999999830 -4 X6 7.00000000000000000 7.000000000000000320 7 Tablo 3.4. Örnek 3.2‘nin Gauss yoketme yöntemi ile ve değişik değişken türleri kullanılarak elde edilen çözümünün sonuçlarının hataları. %Hata C Float %Hata C Long Double X1 0.00000596046447753906 0.00000000000000000000 X2 0.00000000000000000000 0.00000000000001110223 X3 0.00000000000000000000 0.00000000000000000000 X4 0.00001192092895507812 0.00000000000000000000 X5 0.00000596046447753906 0.00000000000000000000 X6 0.00000000000000000000 0.00000000000000000000 %Hata C++ Float %Hata C++ LD X1 0.00000596046447753906 0.0000000000000000000000X2 0.00000000000000000000 0.000000000000011102230 X3 0.00000000000000000000 0.0000000000000000000000 X4 0.00001192092895507812 0.000000000000000000000 X5 0.00000596046447753906 0.000000000000000000000 X6 0.00000000000000000000 0.000000000000000000000 Nümerik Yöntemlerde Hata Analizi ve Bir Nümerik Çözüm... 3.3. LU -Crout Çözümleme Yöntemi Programı Bu yöntemde katsayılar matrisi olan kare matris biri alt üçgen, diğeri ise üst üçgen olarak aşağıda görüldüğü gibi iki matrise ayrılır. a a a l u u 1 , 1 , 1 2 , 1 3 0 0 11 1 12 13 a a a = l l u 2 1 , 2,2 2,3 0 21 22 . 0 1 23 a a a l l l 0 0 1 3 1, 3,2 3,3 31 32 33 Bu eşitlikten yararlanarak bilinmeyen x değerleri çözülür [11]. Ana menüden 3. buton çalıştırılarak Şekil 3.4’teki LU Crout menüsüne ulaşılabilir. Şekil 3.4. LU -Crout çözümleme yöntemi programı. Örnek 3.3. A= 4.3800 0.5900 0.4400 0.1200 0.8000 0.8400 0.3900 0.1600 0.0900 81.9300 0.3500 0.4500 0.9100 0.1700 0.5900 0.8700 0.0400 0.3700 43.1700 0.7200 0.2300 0.1700 0.1200 0.2400 0.6100 0.6300 0.6800 89.9300 0.2400 0.9900 0.0400 0.6500 0.6100 0.7200 0.7000 0.2700 73.5400 0.4400 0.4600 0.9700 0.0200 0.6900 0.7300 0.2500 0.0800 69.0700 0.8700 0.6600 0.0200 0.0800 0.4800 0.8700 0.6400 0.3100 35.5500 0.8700 0.1900 0.4500 0.5500 0.2300 0.1900 0.3700 0.2600 16.6100 C = [-23.49 87.25 170.88 -530.36 227.13 141.59 -136.83 117.43]T 96 Gazi Üniv. Müh. Mim. Fak. Der. Cilt 17, No 2, 2002 Nümerik Yöntemlerde Hata Analizi ve Bir Nümerik Çözüm... S. Yüncü ve C. Aslan Tablo 3.5. Örnek 3.3‘ün LU-Crout çözümleme yöntemi ile ve değişik değişken türleri kullanılarak elde edilen çözümünün sonuçları. LU C Float C Long Double X1 -2.000000000000000000 -1.9999999999999997622340 X2 0.999999940395355225 0.9999999999999999161912 X3 4.000000476837158200 3.9999999999999997272150 X4 -6.000000000000000000 -5.9999999999999997055310 X5 3.000000000000000000 2.9999999999999996849310 X6 2.000000238418579100 2.0000000000000002504510 X7 -4.000000476837158200 -4.0000000000000006865170 X8 6.999999523162841800 7.0000000000000006583280 C++ Float C++ Long Double G X1 -2.000000000000000000 -1.999999999999999760 -2 X2 -0.999999940395355225 0.999999999999999916 1 X3 4.000000476837158200 3.999999999999999730 4 X4 -6.000000000000000000 -5.999999999999999710 -6 X5 3.000000000000000000 2.999999999999999680 3 X6 2.000000238418579100 2.000000000000000250 2 X7 -4.000000476837158200 -4.000000000000000690 -4 X8 6.999999523162841800 7.000000000000000660 7 Tablo 3.6. Örnek 3.3‘ün LU-Crout çözümleme yöntemi ile ve değişik değişken türleri kullanılarak elde edilen çözümünün sonuçların hataları. % Hata C Float % Hata C Long Double X1 0.000000000000000000000 0.000000000000011102230 X2 0.000005960464477539062 0.000000000000011102230 X3 0.000011920928955078125 0.000000000000011102230 X4 0.000000000000000000000 0.000000000000000000000 X5 0.000000000000000000000 0.000000000000014802973 X6 0.000011920928955078125 0.000000000000022204460 X7 0.000011920928955078125 0.000000000000022204460 X8 0.000006811959402901785 0.000000000000012688263 % Hata C++ Float % Hata C++ Long Double X1 0.000000000000000000000 0.0000000000000111022302 X2 0.000005960464477539062 0.0000000000000111022302 X3 0.000011920928955078125 0.0000000000000111022302 X4 0.000000000000000000000 0.0000000000000000000000 X5 0.000000000000000000000 0.0000000000000148029737 X6 0.000011920928955078125 0.0000000000000222044605 X7 0.000011920928955078125 0.0000000000000222044605 X8 0.000006811959402901785 0.0000000000000126882631 Nümerik Yöntemlerde Hata Analizi ve Bir Nümerik Çözüm... 3.4. Cubicspline Enterpolasyon Yöntemi Deney sonucu veya benzer çalışmalar için bilinen değerleri kullanarak bilinmeyen noktalardaki değerleri yaklaşık olarak belirleme işlemine enterpolasyon denilmektedir. Bilinmeyen değerler bilinen değerlerin arasında bir noktada ise bilinen noktalar kullanılarak bulunabilir. Ancak istenen nokta bilinen değerlerin dışında bir yerde ise öncelikle bu noktaları sağlayan bir eşitlik bulunur. Daha sonra bu eşitlikten bilinmeyen nokta verilerek istenen karşılığı elde edilir [10]. Ana menüden 4. buton çalıştırılarak Şekil 3.5’teki Cubicspline menüsüne ulaşılabilir. Şekil 3.5. Cubicspline enterpolasyon yöntemi programı. Örnek 3.4. x=(0.08823, 0.14706, 0.20588, 0.26471, 0.32353, 0.38235, 0.44118, 0.5, 0.55882, 0.61765, 0.67647, 0.73529, 0.79412, 0.85294, 0.91176) f(x)=(0.185, 0.21, 0.23, 0.255, 0.28, 0.31, 0.34, 0.38, 0.42,, 0.45, 0.50, 0.54, 0.59, 0.65, 0.69) Tablo 3.7. Örnek 3.4‘ün cubicspline yöntemi ile ve değişik değişken türleri kullanılarak elde edilen çözümünün sonuçları. C float C long double C++ Builder Float C++ Builder Long Dou 0.295075476169586182 0.280420035069537383 0.295075505971908569 0.280420035069537383 98 Gazi Üniv. Müh. Mim. Fak. Der. Cilt 17, No 2, 2002 Nümerik Yöntemlerde Hata Analizi ve Bir Nümerik Çözüm... S. Yüncü ve C. Aslan 3.5. Romberg İntegrali Fonksiyonların integrali nümerik yöntemlerde yamuk, simpson, Gauss, Romberg integrasyon yöntemleri ile çözülür. Bunlardan Romberg integrasyon yöntemi aşağıdaki formül yardımıyla iterasyonla çözülen yöntemdir [1]. 4k 1 − I − I j+ , 1 k 1 − j,k 1 I ≅ − j,k 4k 1 − −1 Burada Ij+1,k-1 ve Ij,k-1 sırasıyla en yüksek ve en düşük hassasiyetteki integrallerdir. Ana menüden 5. buton çalıştırılarak Şekil 3.6’daki Romberg İntegrali menüsüne ulaşılabilir. Şekil 3.6. Romberg integrali yöntemi programı. Örnek 3.5. f(x)=0.2+25x-200x2+675x3-900x4+400x5 fonksiyonunun [0,0.8] aralığındaki integralini romberg yöntemi ile bulunuz. a değeri= 0 b değeri=0.8 Max iterasyon değeri=4 es değeri=1 Nümerik Yöntemlerde Hata Analizi ve Bir Nümerik Çözüm... Tablo 3.8. Örnek 3.5‘in Romberg yöntemi ile bulunan integral değerleri. Romberg integrali (C++ Float) Romberg integrali (C++ LD) 1.367466688156127930 1.367466666666666730 1.623466610908508300 1.623466666666666250 1.640533328056335450 1.640533333333332880 1.639466524124145510 1.639466666666666420 1.640533208847045900 1.640533333333333100 1.640533208847045900 1.640533333333333100 1.640466451644897460 1.640466666666666730 1.640533089637756350 1.640533333333333420 1.640533089637756350 1.640533333333333420 1.640533089637756350 1.640533333333333420 1.640533089637756350 1.640533333333333420 Gerçek Değeri=1.640533 Tablo 3.9. Örnek 3.5 ‘nin romberg yöntemi ile bulunan integral değerlerinin hataları. %Hata (C++ Float) %Hata (C++ LD) 0.000005463941069762083 0.000020318599712410539 3.6. Runge-Kutta Yöntemi Runge Kutta Formülleri yardımıyla elde edilirler [12]. Runge Kutta yöntemlerinde n arttıkça hassasiyet artar. Birçok çözümde 4. mertebeden Runge Kutta yöntemi yeterli olurken, daha hassas çözüm isteyen durumlarda yüksek dereceden Runge Kutta yöntemleri kullanılır. Burada 6. mertebeden Runge Kutta yöntemini kullanan program yazılmıştır. Ana menüden 6. buton çalıştırılarak Şekil 3.7’deki Runge-Kutta menüsüne ulaşılabilir. Örnek 3.6. y’1=4*exp(0.8*x)-0.5*y1 Y(0)=0.5 h=0.5 Xout= 0.5 Tablo 3.10. Örnek 3.6‘nın Runge-Kutta yöntemi ile bulunan sonuçları. X Y C Float Y C Long Double 0 2.000000000000000000 2.000000000000000000 0.5 3.75152206420898438 3.751522082653013334501 100 Gazi Üniv. Müh. Mim. Fak. Der. Cilt 17, No 2, 2002 Nümerik Yöntemlerde Hata Analizi ve Bir Nümerik Çözüm... S. Yüncü ve C. Aslan Şekil 3.7. Yüksek dereceden Runge-Kutta yöntemi programı. Tablo 3.11. Örnek 3.6‘nın Runge-Kutta yöntemi ile bulunan sonuçların hataları. X Y (Runge-Kutta Yöntemi) Ytrue Hatası (%) 0 2.000000000000000000 0.5 3.751522082653013270 3.751521 0,000028859041793 4. SONUÇ VE ÖNERİLER Son yıllarda bilgisayarların hız ve kapasitelerinin artması; pek çok mühendislik problemlerinin de bilgisayarlarda çözülmesini, nümerik analiz yöntemlerinin artmasını, yeni algoritmaların gelişmesini sağlamıştır. Bu ise gerek algoritmik yöntemlerden gerekse bilgisayarların yapılarından kaynaklanan hataları da beraberinde getirmiştir. Bu çalışmada nümerik yöntemlerdeki hataların analizi yapılmıştır. Nümerik metotların konularından birer yöntem seçilerek bir nümerik yöntem paketi hazırlanmıştır. Bu yöntemlerde değişik hassasiyette değişkenler kullanılarak örnekler çözülmüş, sonuçlar ve hatalar tablolar ve grafikler yardımıyla gösterilmiştir. Her yöntemin tanımı yapılarak, menülerle çalışması açıklanmıştır. Bazı yöntemlerde, sonuca ulaşmak için dikkat edilmesi gereken hususlar üzerinde durulmuştur. Tablo 3.4 ve Tablo 3.6’daki sonuçlarda görüldüğü gibi değişkenleri çift duyarlıklı ve uzun çift duyarlıklı alınan durumlarda hataların daha az olduğu görülmektedir. Tablo 3.9’da ise normal duyarlıklı değerlerde hatalar daha az gibi gözükse de bunun nedeni hata hesaplarında gerçek değerlerin alınması ve işlemlerde yuvarlatma yapılmasıdır. Nümerik Yöntemlerde Hata Analizi ve Bir Nümerik Çözüm... Aslında değişkenlerin normal, çift duyarlıklı ve uzun çift duyarlıklı alınarak yapılan işlemlerdeki büyük farklar, iterasyonlarla yapılan işlemler ve büyük denklem sistemlerinin çözümlerinde daha belirgin olur. Değişik yöntemlerle de programlar yazılarak nümerik paket geliştirilebilir. Bu pakette Romberg ve Runge Kutta yöntemlerinde fonksiyonlar sabit olarak verilmiştir. Yani her yeni fonksiyon için, fonksiyon girildikten sonra programın tekrar derlenmesi gerekir. İdeal olanı ise fonksiyonların ekrandan girilebilecek hale getirilmeleridir. Ayrıca bu paket, daha değişik örneklerle denenip değişik sonuçlar alınabilir. KAYNAKLAR 1. Chapra, S. C. ve Canale, R.P., Numerical Methods for Engineers McGraw- Hill, 1998. 2. Kulkarni, R. P. ve Limaye, V., Solution of a Schrödinger Equation by Iterative Rrefinement, J Austral Math Soc Ser B, 32, s. 115-132, 1990. 3. Banks, L. ve Chu, E., Parallel Gauss-Seidel Relaxation on Distributed-Memory Multiprocessor, J.Comput.Inf., 1, No 2, s. 434-450, 1995. 4. Chang, X.-W., On the Sensitivity of the LU Factorization, BIT, 3, s. 486-501, 1998. 5. Langlois, P. ve Nativel, F., Reduction and Bounding of the Rounding Error in Floating Point Arithmetic, C.R.Acad.Sci. Paris, 1, s. 781-786, 1998. 6. Calvo, M., Gonzales, S., Montijano, J.I., On the Iterative Solution of the Algebraic Equations in Fully Implicit Runge-Kutta Methods, Numerical Algorithms, 23 ,s. 97-113, 2000. 7. Gurwitz, C., A Test for Cancellation Errors in Quasi-Newton Methods, ACM, s.134-140, 2000. 8. Robertazzi, T.G. ve Schwartz, S.C., Best "Ordering" for Floating-Point Addition, ACM, s.101-110, 2000. 9. Aslan, C., Nümerik Yöntemlerde Hata Analizi ve C++ Builder ile Yazılan Bir Nümerik Çözüm Paketinin Hazırlanması, Master Tezi, Gazi Üniversitesi Fen Bilimleri Enstitüsü, 2002. 10. James, M.L., Smith, G.M., Wolford, J.C. Applied Numerical Methods for Digital Computation, Harper Collins, 1993. 11. Hoffmann, J.D., Numerical Methods for Engineers and Scientists, McGraw- Hill, 1993. 12. Fausett, L.V., Applied numerical analysis using matlab,Prentice Hall, 1999. 13. Ping-Tang, T.P, Table–Driven Implementation of the Logarithm Function in IEEE Floating Point Arithmetic, ACM Transaction on Mathematical
__________________ Uzakyol Vardiya Zabiti GMDSS Genel Telsiz Operatörü ISPS Gemi Güvenlik Zabiti Deniz Ulaştırma ve İşletme Mühendisi "Kim olduğuna karar vermek, Bütün başarılarının imzasıdır.." To decide who you are, is a signature of your victories.. |
![]() |
| Seçenekler | |
|