Dr. M. Turhan ÇOBAN EGE ÜNİVERSİTESİ Mühendislik Fakultesi Makine Mühendisliği Bornova, İZMİR JAVA PROGRAMLAMA DİLİ ÖRNEKLERİYLE SAYISAL ÇÖZÜMLEME Dr. M. Turhan ÇOBAN EGE ÜNİVERSİTESİ Mühendislik Fakultesi Makine Mühendisliği Bornova, İZMİR İÇERİK 1. JAVA PROGRAMLAMA DİLİ 1.1 JAVA DİLİNİN TEMELLERİ 1.1.1 JAVA PROGRAMINI YAZMA VE ÇALIŞTIRMA 1.1.2 JAVA PROGRAMLAMA DİLİ TEMEL DEĞİŞKEN TÜRLERİ 1.1.2.1 BOOLEAN DEĞİŞKEN TÜRÜ 1.1.2.2 CHAR (HARF) DEĞİŞKEN TÜRÜ 1.1.2.3 TAM SAYI DEĞİŞKEN TÜRLERİ (BYTE, SHORT,İNT,LONG) 1.1.3 JAVA NESNESİ OLARAK TANIMLANMIŞ TEMEL DEĞİŞKENLER 1.1.3.1 STRİNG NESNE TİPİ DEĞİŞKENİ 1.1.3.2 INTEGER NESNE TİPİ DEĞİŞKENİ 1.1.3.3 DOUBLE NESNE TİPİ DEĞİŞKENİ 1.1.3.4 DİĞER NESNE TEMELLİ DEĞİŞKEN TÜRLERİ 1.1.4 FİNAL TERİMİ VE SABİTLER 1.1.5 ARİTMETİK İŞLEMLER 1.1.6 JAVADA MANTIKSAL İŞLEMLER 1.1.7 JAVA DİLİNDE BİT KOMUTLARI VE İŞLEMLERİ 1.1.8 JAVA DİLİNİN TEMEL KOMUTLARI 1.1.8.1 İF – ELSE İF - ELSE MANTIKSAL KARŞILAŞTIRMA YAPISI 1.1.8.2 WHİLE TEKRARLAMA YAPISI 1.1.8.3 FOR TEKRARLAMA YAPISI 1.1.8.4 SWİTCH - CASE YAPISI 1.1.9 ARİTMETİK İŞLEMLERDE DEĞİŞKEN TÜRÜ DEĞİŞTİRME (CASTİNG) OPERASYONU 1.1.10 SAYI DEĞİL VE SONSUZ SONUÇLARI 1.2 : METODLAR VE OBJECT KULLANIMI 1.2.1 JAVA API KÜTÜPHANESİ 1.2.2 METOTLAR 1.2.3 NESNE (OBJECT) TANIMI VE METOTLARDA KULLANIMI 1.2.4 METOTLARIN KENDİ KENDİNİ ÇAĞIRMASI (RECURSION) 1.2.5 AYNI ADLI METOTLARIN BİR ARADA KULLANILMASI (OVERLOADİNG) 1.2.6 METOT (METHOD) VE SINIF(CLASS) DEĞİŞKENLERİ 1.3 . SINIF (CLASS) VE NESNE KAVRAMI 1.3.0 STANDART KAVRAMLARIN TÜRKÇE KARŞILIKLARI 1.3.1 SINIF YAPISININ GENEL TANIMI 1.3.2 KURUCU ( CONSTRUCTOR ) METOT 1.3.3 DİĞER METOTLAR 1.3.4 THIS DEYİMİNİN KULLANIMI 1.3.5 SINIF DEĞİŞKENLERİNİN DIŞ DÜNYADAN GİZLENMESİ 1.3.6 SINIFLARDA KALITIM (INHERITANCE) 1.3.7 SINIFLARI BAŞKA BIR SINIFTA NESNE OLARAK ÇAĞIRARAK BiR ARAYA GETiRME (COMPOSITION) 1.3.8 KALITIM YOLUYLA ALT SINIFA BAĞLANMIŞ ÜST SINIF REFERANSI ÜZERINDEN ALT SINIFI ÇAĞIRMA 1.3.9 NESNEYi DiNAMiK OLARAK SiLMEK FINALIZE() METOTU 1.4 : BOYUTLU DEĞİŞKENLER VE NESNELER (ARRAYS) 1.4.1 TEK BOYUTLU DEĞiŞKENLER 1.4.2 TEK BOYUTLU NESNE TİPİ DEĞİŞKENLER 1.4.3 ÇOK BOYUTLU DEĞİŞKENLER 1.4.4 BOYUTLU DEĞİŞKENLERİN METOTLARA AKTARIMI 1.4.5 BOYUTLU DEĞİŞKENLERDE BOYUT DEĞİŞTİRME BÖLÜM 1.5 : SINIFLARDA HİYERARSİ, ABSTRACT SINIF VE İNTERFACE 1.5.1 ABSTRACT SINIF 1.5.2 INTERFACE KOMUTU BÖLÜM 1. 6 : GRAFİKLER, FONTLAR VE RENKLER 1.6.1 GRAFİKLERE GİRİŞ 1.6.2 GRAPHICS VE GRAPHICS2D SINIFLARI 1.6.3 RENK KONTROLÜ 1.6.4 YAZI KONTROLU 1.6.5 ÇiZGi ÇiZiMi 1.6.6 DiKDÖRTGEN ÇİZİMİ 1.6.7 ÇİZİLEN ŞEKİLLERİN DEĞİŞTİRİLEREK ÇİZİMİ (TRANSFORM) 1.6.8 OVAL VE AÇILI OVAL ÇİZİMİ 1.6.9 ÇİZİMİN SEÇİLEN BİR RESİMLE DOLDURULMASI 1.6.10 POLYGON ÇİZİMİ 1.6.11 GENELLEŞTİRİLMİŞ EĞRİ ÇİZİMİ 1.6.12 RESİM GÖSTERİMİ 1.6.13 JAVA 2 BOYUTLU BİLİMSEL GRAFİK ÇIKTI SINIFI : PLOT 1.6.14 JAVA 3 BOYUTLU BİLİMSEL GRAFİK ÇIKTI SINIFI : PLOT3D 1.6.15 JAVA 3 BOYUTLU BİLİMSEL GRAFİK ÇIKTI SINIFI : PLOT3D_JM BÖLÜM 1.7: GRAFİK APPLET VE ÇERÇEVE OLUŞTURMA OLUŞTURMA METOTLARI, GRAFİK KULLANICISI ARABİRİM PROGRAMLARI (GUI) , 1.7.1 GRAPHIC KULLANICISI ARABİRİM PROGRAMLARI, GUI, (GRAPHICS USER INTERFACE) 1.7.2 AWT LABEL (ETİKET) SINIFI , JAVAX JLABEL VE ICON SINIFLARI 1.7.3 BUTTON VE JBUTTON (DÜĞME) SINIFLARI 1.7.4 TEXTFIELD (YAZIM ALANI) SINIFI 1.7.5 YAZIM ALANI AWT TEXTAREA VE SWING JTEXTAREA SINIFLARI 1.7.6 AWT CHOICE , SWING JCOMBOBOX SEÇIM SINIFLARI 1.7.7 AWT, CHECKBOX VE CHECKBOXGROUP VE SWING JCHECKBOX VE JRADIOBUTTON SINIFLARI 1.7.8 MOUSE(FARE) KONTROLU 1.7.9 SWING JTABLE SINIFI 1.7.10 AWT, LIST SINIFI VE JAVA SWING JLIST SINIFI , LİSTEDEN SEÇİM 1.7.11 SWING JMENU 1.7.12 SWING JSLIDER SINIFI VE JPANEL TEMEL ÇİZİM ELEMANI (PANELİ) 1.7.13 FLOWLAYOUT SINIFI KULLANARAK GRAFİK ARAYÜZ FORMATLANMASI 1.7.14 BORDERLAYOUT SINIFI KULLANARAK GRAFİK ARAYÜZ FORMATLANMASI 1.7.15 GRIDLAYOUT SINIFI KULLANARAK GRAFİK ARAYÜZ FORMATLANMASI 1.7.16 JTABBEDPANE SINIFI KULLANILARAK FORMATLAMA 1.7.17 JSPLITPANE SINIFI KULLANILARAK GRAFİK ARAYÜZ FORMATLAMA 1.7.18 JSCROLLPANE SINIFI KULLANILARAK GRAFİK ARAYÜZ FORMATLAMA 1.7.19 PANEL VE JPANEL SINIFI 1.7.20 JOPTIONPANE SINIFI 1.7.21 SWING, JCOLORCHOOSER SINIFI 1.7.22 JFILECHOOSER SINIFI 1.7.23 JAVA JAR (JAVA ARCHIVES - JAVA ARŞİVİ) YAPILARININ KULLANIMI BÖLÜM 1.8 JAVA GİRDİ - ÇIKTI PROGRAMLANMASI 1.8.1 JAVANIN I/O (GİRDİ ÇIKTI ) KÜTÜPHANESİNDE YER ALAN SINIFLAR VE İNTERFACE’LER 1.8.2 FİLE (DOSYA) SINIFI 1.8.3 ARDIŞIK (SEQUENTIAL) DOSYA YARATILMASI 1.8.4 JAVA VERİ GİRDİ-ÇIKTI SINIFI TEXT 1.8.5 GRAFİK ORTAMDAN VERİ OKUNMASI 1.8.6 FONKSİYON TANIMINI PROGRAM İÇİNDE GİRDİ OLARAK TANIMLIYARAK KULLANMAK 1.8.5 RASLANTISAL ULAŞIM DOSYASI OKU (RANDOM ACCESS FILE) 1.8..6 DOSYA SIKIŞTIRILMASI (GZIP,GUNZIP,ZIP,UNZIP) BÖLÜM 1.9 GELİŞMİŞ JAVA BİLGİ İŞLEME YAPILARI 1.9.0 GİRİŞ 1.9.1 STRINGTOKENIZER SINIFI 1.9.2 STRİNG BUFFER SINIFI 1.9.3 VECTOR SINIFI 1.9.4 LIST(LİSTE) SINIFI 1.9.5 DİZİ (STACK) SINIFI 1.9.6 SIRA (QUEUE) SINIFI 1.9.7 TREE(AGAÇ) SINIFI 1.9.8 DICTIONARY ve HASHTABLE SINIFLARI 1.9.9 ARRAYS SINIFI VE SIRALAMA BÖLÜM 1.10 ALIŞTIRMA VE PROBLEMLER BÖLÜM 2 DOĞRUSAL DENKLEM SİSTEMLERİ 2.0 DOĞRUSAL DENKLEM SİSTEMLERİ, GENEL 2.1 GAUSS ELEME METODU 2.2 KISMİ PİVOT İŞLEMİ, KISMİ PİVOTLU GAUSS ELEME METODU 2.3 GAUSS-JORDAN METODU 2.4 KISMİ PİVOTLU GAUSS-JORDAN METODU 2.5 LU-ALT-ÜST ÜÇGEN MATRİS- GAUSS (DOLİTTLE) METODU 2.6 CRAUT LU METODU 2.7 JACOBİ, GAUSS-SEİDEL VE RAHATLAMALI İNTERPOLASYON İTERATİF METODLARI 2.8 CHOLESKY SİMETRİK MATRİS LU METODU 2.9 3LÜ VE 5Lİ BANT MATRİS ALGORİTMALARI 2.10 KONJUGE GRADYAN METODU 2.11 PROBLEMLER BÖLÜM 3 VEKTÖR VE MATRİS İŞLEMLERİ 3.1 MATRİS TEMEL İŞLEMLERİ TOPLAMA VE ÇARPMA TANIMLARI 3.2 NORM TANIMI 3.3 BİRİM MATRİS, TRANSPOSE MATRİS VE TERS MATRİS 3.4 PROBLEMLER BÖLÜM 4 LİNEER OLMAYAN DENKLEM VE DENKLEM SİSTEMLERİNİN KÖKLERİ BÖLÜM 4-A BİR BİLİNMEYENLİ SİSTEMLERİN KÖKLERİ 4.1 İKİYE BÖLME YÖNTEMİ (BİSECTİON) 4.2 YER DEĞİŞTİRME YÖNTEMİ (FALSE POSİTİON) 4.3 MÜLLER YÖNTEMİ 4.4 NEWTON-RAPHSON YÖNTEMİ 4.5 KİRİŞ YÖNTEMİ (SECANT) 4.6AİTKEN EXTRAPOLASYON DÜZELTMELİ NEWTON-RAPHSON YÖNTEMİ 4.7 AİTKEN EKSTRAPOLASYON DÜZELTMELİ DİREK YERİNE KOYMA : STEFFENSEN METODU 4.8 İKİNCİ TÜREVLİ NEWTON RAPHSON YÖNTEMİ 4.9 NEWTON-RAPHSON – İKİYE BÖLME METODLARININ BİRLİKTE KULLANILMASI 4.10 BRENT KÖK BULMA YÖNTEMİ 4.11 KÖK SINIRLARININ SAPTANMASI 4.12 RIDDER METODU 4.13 ÜÇÜNCÜ DERECEDEN POLİNOMUN KÖKLERİ 4.14 LEGUERRE METODU İLE POLİNOMLARIN KOMPLEKS KÖKLERİNİ BULMA BÖLÜM 4-B BİRDEN ÇOK BİLİNMEYENLİ SİSTEMLERİN KÖKLERİ ( LİNEER OLMIYAN DENKLEM SİSTEMLERİ ) 4.15 LİNEER OLMAYAN DENKLEM SİSTEMLERİ - NEWTON-RAPHSON YÖNTEMİ 4.16 LİNEER OLMAYAN DENKLEM SİSTEMLERİ – SHERMAN MORRISON FORMÜLLÜ BROYDEN KİRİŞ YÖNTEMİ 4.17 LİNEER OLMAYAN DENKLEM SİSTEMLERİ – SÜREKLİLİK YÖNTEMİ 4.18 LİNEER OLMAYAN DENKLEM SİSTEMLERİ –OPTİMİZASYON YÖNTEMLERİ : NELDER-MEAD AMİP YÖNTEMİ 4.19 LİNEER OLMAYAN DENKLEM SİSTEMLERİ –OPTİMİZASYON YÖNTEMLERİ : GENETİK ALGORİTMA YÖNTEMİ 4.20 LİNEER OLMAYAN DENKLEM SİSTEMLERİ –OPTİMİZASYON YÖNTEMLERİ : EN DİK YAMAÇ METODU 4.21 LİNEER OLMAYAN DENKLEM SİSTEMLERİ –OPTİMİZASYON YÖNTEMLERİ : DAVİDON-FLETCHER-POWELL METODU 4.22 PROBLEMLER BÖLÜM 5 OPTİMİZASYON(MİNİMİZASYON VE MAKSİMİZASYON) BÖLÜM 5-A BİR BİLİNMEYENLİ SİSTEMLERİN GEOMETRİK YÖNTEMLERLE OPTİMİZASYONU 5.0 OPTİMİZASYONUN TANIMLANMASI VE GRAFİK YÖNTEMLE TEK BOYUTLU OPTİMİZASYON 5.1 BİR BİLİNMİYENLİ-LİNEER OLMAYAN-GEOMETRİK-ALTIN ORAN (FİBONACCHİ) ARAMA 5.2 BİR BİLİNMİYENLİ-LİNEER OLMAYAN-GEOMETRİK-İKİNCİ DERECE POLİNOM METODU 5.3 BİR BİLİNMİYENLİ-LİNEER OLMAYAN-GEOMETRİK- POLİMOM QUADRATURE METODU 5.4 BİR BİLİNMİYENLİ-LİNEER OLMAYAN-GEOMETRİK-NEWTON-RAPHSON METODU 5.5 BİR BİLİNMİYENLİ-LİNEER OLMAYAN-GEOMETRİK BRENT METODU 5.6 BİR BİLİNMİYENLİ-LİNEER OLMAYAN-GEOMETRİK-TÜREVLİ BRENT METODU 5.7 OPTİMİZASYON SINIR TAHMİN DEĞERLERİNİN İYİLEŞTİRİLMESİ BÖLÜM 5-B BİRDEN FAZLA (ÇOK) BİLİNMEYENLİ SİSTEMLERİN GEOMETRİK YÖNTEMLERLE OPTİMİZASYONU 5.8 ÇOK BİLİNMİYENLİ-LİNEER OLMAYAN-GEOMETRİK-NEWTON-RAPHSON METODU 5.9 ÇOK BİLİNMİYENLİ-LİNEER OLMAYAN-GEOMETRİK-NELDER VE MEAD SİMPLEKS METODU 5.10 ÇOK BİLİNMİYENLİ-LİNEER OLMAYAN-GEOMETRİK-EN DİK YAMAÇ METODU 5.11 ÇOK BİLİNMİYENLİ-LİNEER OLMAYAN-GEOMETRİK- DEĞİŞTİRİLMİŞ NEWTON METODU 5.12 ÇOK BİLİNMİYENLİ-LİNEER OLMAYAN-GEOMETRİK FLETCHER - REEVES VE POLAK-RIBIERE METODLARI (KONJUGE GRADYEN METODU) 5.13 ÇOK BİLİNMİYENLİ-LİNEER OLMAYAN-GEOMETRİK DAVİDON-FLETCHER- POWELL METODU 5.14 ÇOK BİLİNMİYENLİ-LİNEER OLMAYAN-GEOMETRİK DİREK HESSİAN DEĞİŞTİRME METODU : BROYDEN-FLETCHER-GOLDBERG-SHANNO (BFGS) 5.15 ÇOK BİLİNMİYENLİ-LİNEER OLMAYAN-GEOMETRİK SÜREKLİLİK METODU 5.16 ÇOK BİLİNMİYENLİ-LİNEER OLMAYAN-GEOMETRİK SHERMAN MORRISON FORMÜLLÜ BROYDEN KİRİŞ METODU İLE OPTİMİZASYON BÖLÜM 5-C BİRDEN FAZLA(ÇOK) BİLİNMEYENLİ SİSTEMLERİN GLOBAL YÖNTEMLERLE OPTİMİZASYONU 5.17 GLOBAL ÇÖZÜM METODLARI : GENETİK ALGORİTMALAR 5.17.1 GENEL KAVRAMLAR 5.17.2 MÜHENDİSLİK OPTİMİZASYONU 5.17.3 GENE SINIFI, GENOTYPE1 VE GENETIC1 SINIFI KULLANARAK GENETİK ALGORİTMA OLUŞTURMA 5.17.4 GEN SINIFI, GENOTYPE2 VE GENETİC2 SINIFI KULLANARAK GENETİK ALGORİTMA OLUŞTURMA 5.17.5 GENE3 SINIFI, GENOTYPE3 VE GENETIC3 SINIFI KULLANARAK GENETİK ALGORİTMA OLUŞTURMA 5.18 GLOBAL ÇÖZÜM METODLARI : MONTE CARLO METODU 5.19 GLOBAL ÇÖZÜM METODLARI : İTERASYONLU TEPE TIRMANMA 5.20 GLOBAL ÇÖZÜM METODLARI : TAVLAMA SİMULASYONU (SIMULATED ANNEALING) 5.21 SINIRLAMALI LİNEER OLMAYAN OPTİMİZASYON BÖLÜM 5-D KOMBİNATORAL (SAYILARIN DİZİLİŞ SIRASI İLE DEĞİŞEN) OPTİMİZASYON 5.22 GEZGİN SATICI PROBLEMİ 5.22.1 GEZGİN SATICI PROBLEMİ GENETİK ALGORİTMA ÇÖZÜMÜ 5.22.2 GEZGİN SATICI PROBLEMİ MONTE-CARLO ÇÖZÜMÜ 5.22.3 GEZGİN SATICI PROBLEMİ KARINCA (GEOMETRİK OLMIYAN) ÇÖZÜMÜ BÖLÜM 5-E LİNEER OPTİMİZASYON 5.23 LİNEER OPTİMİZASYON, SİMPLEKS METODU 5.24 PROBLEMLER 6 EĞRİ UYDURMA 6.1 POLİNOM EN KÜÇÜK KARELER METODU 6.2 ORTOGONAL POLİNOM EN KÜÇÜK KARELER METODU 6.3 GENELLEŞTİRİLMİŞ EN KÜÇÜK KARELER METODU 6.4 GENELLEŞTİRİLMİŞ EN KÜÇÜK KARELER METODU İLE BİRDEN FAZLA DEĞİŞKENLİ FONKSİYONLARIN EĞRİ UYDURMASI 6.5 NEWTON İNTERPOLASYONU 6.6 LAGRANGE İNTERPOLASYONU 6.7 HERMİT İNTERPOLASYONU 6.8 KÜBİK ŞERİT İNTERPOLASYONU 6.9 B-ŞERİT İNTERPOLASYON 6.10 LİNEER OLMAYAN KATSAYILI BİR VE ÇOK BOYUTLU BAĞIMSIZ DEĞİŞKENLİ FONKSİYONLARA EĞRİ UYDURMA 6.11 EĞRİ UYDURMADA İNDİREK (PARAMETRİK) DEĞİŞKEN KULLANIMI 6.12 HAREKETLİ EN KÜÇÜK KARELER METODU 6.13 BENSTEIN POLİNOMLARI VE BEZİER EĞRİLERİ 6.14 PROBLEMLER 7 İNTEGRAL VE TÜREV 7.1 NEWTON-COTES FORMULLERİ : TRAPEZ, BOLE, SİMPSON 1/3 VE 3/8 METODLARI 7.2 RİCHARDSON EXTRAPOLASYONU (ROMBERG İNTEGRASYONU) VE AITKEN EXTRAPOLASYONU 7.3 GAUSS-LEGENDRE, GAUSS-CHEBCHEV, GAUSS-JACOBİ, GAUSS-HERMİT, GAUSS- LEQUERRE İNTEGRAL FORMÜLLERİ 7.4 AYARLANABİLİR HATA MİKTARLI İNTEGRASYON FORMÜLLERİ 7.5 CLENSHAW-CURTİS İNTEGRAL FORMÜLÜ 7.6 TEK VE ÇOK BOYUTLU MONTE-CARLO İNTEGRALİ 7.7 ÇOK BOYUTLU İNTEGRALLERİ PARAMETRİK METODLA ÇÖZME 7.8 TÜREV FORMÜLLERİ 7.9 TÜREV İŞLEMİNDE RİCHARDSON EXTRAPOLASYONU 7.10 PROBLEMLER BÖLÜM 8 ÖZDEĞER - SINIR DEĞER PROBLEMLERİ 8.0 GİRİŞ 8.1 EN BÜYÜK SINIR DEĞER (KUVVET METODU) 8.2 EN KÜÇÜK SINIR DEĞER(KUVVET METODU) 8.3 JACOBİ METODU VE HOUSEHOLDER DÖNÜŞÜMÜ 8.4 QL ALGORİTMASI 8.5 QR ALGORİTMASI 8.6 POLİNOMLARIN KÖKLERİ VE REFAKATÇİ MATRİSİ 8.7 PROBLEMLER BÖLÜM 9 DİFERANSİYEL DENKLEM SİSTEMLERİ 9.1 EULER DENKLEMİ 9.2 HEUN DENKLEMİ 9.3 ORTA NOKTA VEYA GELİŞTİRİLMİŞ POLİGON DENKLEMİ 9.4 RUNGE KUTTA DENKLEMLERİ 9.5 ÇOK ADIMLI YÖNTEMLER 9.6 DEĞİŞKEN ADIM BOYUTLU YÖNTEMLER 9.7 BİRDEN FAZLA DEĞİŞKENLİ DENKLEMLER 9.8 DİFERANSİYEL DENKLEMLERDE BAŞLANGIÇ NOKTASI, ATIŞ PROBLEMİ 9.9 PROBLEMLER BÖLÜM 10 İNDEKS BÖLÜM 11 PROGRAM LİSTESİ BÖLÜM 12 REFERANS LİSTESİ ÖNSÖZ Bir mühendis olarak daima bu problemi ne şekilde çözeceğim sorusuyla iç içe yaşamışızdır. Bu gereksinme beni sayısal yöntemlerle yakından uğraşmaya itti. Sayısal yöntemleri daha iyi anladıkça da mühendislik problemlerimi çözme yetim arttı. Sayısal matematik yapısı gereği bilgisayar ortamında işlenerek oluşturulan ve kullanılan metodlardır, bu yüzden temel olarak iyi bir bilgisayar programlama altyapısıyla desteklenmesi gerekir. Bu kitapla bu iki konudaki altyapımı birleştirerek bilimle uğraşan tüm arkadaşlarımıza aktarmaya çalışacağım. Bu kitabı ne şekilde adlandıracağımdan tam olarak emin değilim, Sayısal yöntemlerin bilgisayara uygulanmasını anlatan bir bilgisayar kitabı veya bilgisayar kodlarıyla desteklenmiş bir sayısal çözümleme kitabı diyebiliriz. Bu tür kitaplar Matlab gibi popüler hazır sayısal çözümleme kodlarını kullanarak daha önce de mevcuttu. Ancak Matlab gibi kodlar oldukça pahalı ve ülkemiz ortamında kullanılmaları maddi açıdan her zaman için (en azından resmi yollarla satın alınarak) mümkün olamıyabiliyor. Benim bu kitabı geliştirirken temel amacım hem açık kodlar üzerinden dili geliştirirken hem de sayısal metodların daha iyi anlaşılabilmesini sağlamak, hem de matlab gibi bazı kodların sıfırdan başlamadan kallanıcılarımızın elinde hazır olarak bulunabilmesinin sağlanması. Kitapa bulacağınız programları geliştirmek için Java dilinden yararlandık, bu seçimdeki temel gayemiz Java’nın platform bağımsız bir dil olması ve aynı zamanda internet ortamında direk olarak çalıştırılabilmesidir. Kitapla birlikte sunulan kodlar, 2 ve üç boyutlu grafiklerin çizilebilmesini sağlayacak böylece sayısal çıktıları grafik olarak irdeleyebileceğimiz 2 ve 3 boyutlu grafik kütüphanelerine de sahiptir. 2 boyutlu grafik sistemi benim tarafımdan geliştirildi. 3 boyutlu grafik sistemi için VisAD isimli açık bir kod bulduğumdan sadece kendi fonksiyonlarımın bu ortamda çalışması için ara program hazırlamakla yetindim. Ayrıca giriş ve çıkış proseslerinde yine benim tarafımdan geliştirilmiş Text sınıfı tüm programlarda yoğun olarak kullanılmıştır. Buradaki gayemiz Java giriş çıkış terimlerini çok bilmesek de yeterince basit bir yolla karmaşık giriş çıkış işlemlerini gerçekleştirebilmekti. Sayısal çözümleme kodları, temelde Ege Üniversitesi Mühendislik fakultesi makine mühendisliği bölümünde verdiğim lisans seviyesi Sayısal çözümleme ve yüksek lisans seviyesi optimizasyon dersleri içeriğinde geliştirilmiş, ancak bu derslerde işlemediğimiz ek kodlar ve konularla zenginleştirilmiştir. Buradaki bazı programların kökeni bu derslere göre çok daha gerilere gitmektedir, hatta bir kısmını daha java dili çıkmadan önce c++ dilinde geliştirdiğim programlardan java diline direk olarak tercüme ettim, iki dil yapı olarak aynı dil yapısını kullandığından bu göreceli olarak basit bir işlemdi. Kitap şu şekliyle seviye olarak standart bir lisans seviyesi kursu için kullanılacağı gibi başlangıç yüksek lisans seviyesine de hitap edebilecek seviyededir. Mühendis ve bilimle uğraşan arkadaşlarımız için aynı zamanda bir referans ve gereksimelerini karşılayacak bir kaynak da olabilir. Elbette sayısal matematik gibi kendi başına bir bilim dalı olan bir alanda geliştirilmiş tüm yöntemleri bir kitapta sunmamız olasılı değildir, zaman içinde ihtiyaçlara göre kapsamı ve kavramı geliştirebiliriz. Şu ana kadarki kısım iki yıllık bir çabanın ürünü. Problemlerin bir kısmı Sayısal çözümleme derslerini Makine ve Teksil bölümlerimizde veren Ali Güngör ve Necdet Özbalta’nın imtihan sorularından alınmıştır, teşekkürler arkadaşlar. Birinci bölümde Java Diline belki gereğinden uzun bir giriş yaptık. Amacımız Java dili bilgisi olmıyan arkadaşlarımızın da kodları rahatlıkla kullanabilecek bilgi seviyesine ulaşmasını sağlamak. Günümüzdeki modern sayısal teknik kullanımında dilleri yeterince bilmiyorsak bir kullanıcı olmanın pek ötesine geçemeyiz, ancak bu tür teknolojiler ancak kendi programlarımızı geliştirerek tam anlamıyla etkin bir kullanım sunarlar. Benim kişisel olarak sayısal yöntemlerle ilgili çalışmalarım mühendislik uygulamalarını daha aktif olarak oluşturabilmek amacıyla idi. Bu kitabın bu konuda tüm kullanıcılarına yardımcı olacağına inanıyorum. Bazı örnekler ve problemler mühendislik problemlerinden seçilmiştir, ancak dikkatli okunduğunda formüller ve değerleri verildiğinden bu problemler rahatlıkla saf matematik formüllerine dönüşür, bu yüzden kitap sadece mühendislere değil sayısal metodlar kullanmak isteyen tüm bilim insanlarına hitap etmektedir. Kitaptaki tüm kodlar, kitapla birikte açık olarak sunulacaktır, buradaki gayelerimizden birisi de sayısal çözümlemeler için sizin daha etkin kodlar üretmeniz için bir başlangıç noktası oluşturabilmektir. Oluşturduğunuz kodları bana gönderirseniz, isimlerinizi de tutarak kitabımızın bundan sonraki basımlarına ekleyebiliriz. Saygılarımla, Dr. M. Turhan ÇOBAN İzmir, 15-04-2008 ÖZGEÇMİŞ Mustafa Turhan Çoban, 1957 yılında Bolu, Sebende doğdu. 1978 yılında Ege Üniversitesi Makine Fakultesi’nden makine mühendisi olarak mezun oldu. 1982 yılında Michigan Technological University(A.B:D.), Makina mühendisliği ve mühendislik mekaniği bölümünden makine mühendisliği yüksek lisans derecesi ile mezun oldu. 1986’da Utah üniversitesi(A.B.D.), Mühendislik fakultesi, makine mühendisliği bölümünden makine mühendisliği doktora derecesini aldı. 1995 yılında Victoria Technological University(Avustralya), matematik ve bilgisayar bilimleri bilgisayar mühendisliği yüksek lisans derecesi aldı. Ballarat Üniversity(Avustralya), University of Nebraska, Lincoln(A.B.D.), Victoria Technological University(Avustralya), Dokuz Eylül Üniversitesi, Mühendislik Fakultesi, makine bölümü, Gebze Yüksek Teknoloji Enstitüsü, Bilgisayar Mühendisliği bölümü, Ege Üniversitesi, Mühendislik fakultesi makine müh. Bölümlerinde çalıştı ve çeşitli dersler verdi. Aras kompresörleri; Maden tetkik arama enstitüsü, sondaj dairesi, jeotermal bölümü, Tübitak, Marmara Araştıma merkezi, enerji bölümü, Tübitak Ulusal Metroloji Enstitüsü, Ceramic Fuel Cells Limited(Avustralya), Imperial Chemical Industries(Avustralya) şirketlerinde çalıştı.