Karadeniz Teknik Üniversitesi Fen Bilimleri Enstitüsü
Total Page:16
File Type:pdf, Size:1020Kb
KARADENİZ TEKNİK ÜNİVERSİTESİ FEN BİLİMLERİ ENSTİTÜSÜ BİLGİSAYAR MÜHENDİSLİĞİ ANABİLİM DALI POLİNOMLAR İÇİN BİR SİMGESEL HESAPLAMA ÇATISININ TASARIMI VE GERÇEKLENMESİ YÜKSEK LİSANS TEZİ Seda EFENDİOĞLU HAZİRAN - 2017 TRABZON KARADENİZ TEKNİK ÜNİVERSİTESİ FEN BİLİMLERİ ENSTİTÜSÜ Karadeniz Teknik Üniversitesi Fen Bilimleri Enstitüsünce Unvanı Verilmesi İçin Kabul Edilen Tezdir. Tezin Enstitüye Verildiği Tarih : / / Tezin Savunma Tarihi : / / Tez Danışmanı : Trabzon KARADENİZ TEKNİK ÜNİVERSİTESİ FEN BİLİMLERİ ENSTİTÜSÜ başlıklı bu çalışma, Enstitü Yönetim Kurulunun / / gün ve sayılı kararıyla oluşturulan jüri tarafından yapılan sınavda YÜKSEK LİSANS TEZİ olarak kabul edilmiştir. Jüri Üyeleri Başkan : …...……………………....……… Üye : …...…………....………………… Üye : ……...……………....…………… Prof. Dr. Sadettin KORKMAZ Enstitü Müdürü ÖNSÖZ Fonksiyonların özel bir türü olan polinomlar, türevleri sürekli oldugu˘ için mühendis- lik problemlerinin birçogunun˘ temsilinde ve çözümünde kullanılır. Simgesel hesaplama, bir problemin tam çözümünün bilgisayarlar yardımıyla bulunabilmesi için gereklidir. Bu yüzden mühendislik alanında yer alan polinom problemlerini iyi analiz edebilecek ve bu problemleri çözebilecek nitelikli simgesel hesaplama uygulamalarına ihtiyaç duyulur. Yapılan tez çalı¸smasında,kullanıcıların polinom problemleriyle ilgili simgesel hesap- lama i¸slemlerinidesteklemek için kullanabilecekleri bir uygulama çatısının tasarım ve geli¸s- tirme a¸samalarısunulmu¸stur. Ayrıca bu çatı üzerinde geli¸stirilmi¸sMathBox isimli uygulama- nın, benzerlerini üretip adım adım çözebildigi˘ polinom problemleri ve bu problemlerle ili¸skili degerlendirmeler˘ gösterilmi¸stir. Simgesel hesaplamayla çözülebilen polinom problemlerini temsil etmek için biçimsel dil tanımlamalarından yararlanılmı¸stır. Polinomların simgesel he- saplanması alanında iyi bir uygulama çatısının geli¸stirilebilmesiiçin literatürdeki çalı¸smalar incelenmi¸stir. Geli¸stirilençatı, bu alandaki gereksinimleri kar¸sılayacakniteliklere sahiptir. Yüksek lisans tez çalı¸smamdadanı¸smanlıgımı˘ üstlenen hocam Yrd. Doç. Dr. Hüseyin PEHLIVAN’a˙ destek ve tecrübelerinden dolayı te¸sekkürlerimiborç bilirim. Her an yanımda olan, sevgi, ilgi ve bilgisini hiçbir zaman esirgemeyen e¸simHilmi Emre EFENDIO˙ GLU’na˘ çok te¸sekkürederim. Ba¸stababam olmak üzere, dünyadaki en iyi baba olma ihtimali oldukça yüksektir, annem, ablam Selin, kızkarde¸slerim ¸Seyma ve Gülsüm ile evimizin en küçügü˘ Miraç’ımıza sevgi dolu kalpleri, en stresli anlarımda bile bana kar¸sıolan sabır ve anlayı¸sları, kendimi en çaresiz hissettigim˘ zamanlarda bile bana verdikleri destek ve ne¸sedendolayı çok te¸sekkürederim. Seda EFENDIO˙ GLU˘ Trabzon 2017 III TEZ ETIK˙ BEYANNAMESI˙ Yüksek Lisans Tezi olarak sundugum˘ “POLINOMLAR˙ IÇ˙ IN˙ BIR˙ SIMGESEL˙ HE- SAPLAMA ÇATISININ TASARIMI VE GERÇEKLENMESI”˙ ba¸slıklıbu çalı¸smayıba¸stan sona kadar danı¸smanımYrd. Doç. Dr. Hüseyin PEHLIVAN‘ın˙ sorumlulugunda˘ tamamla- dıgımı,˘ verileri/örnekleri kendim topladıgımı,˘ deneyleri/analizleri ilgili laboratuarlarda yap- tıgımı/yaptırdı˘ gımı,˘ ba¸skakaynaklardan aldıgım˘ bilgileri metinde ve kaynakçada eksiksiz olarak gösterdigimi,˘ çalı¸smasürecinde bilimsel ara¸stırmave etik kurallara uygun olarak dav- randıgımı˘ ve aksinin ortaya çıkması durumunda her türlü yasal sonucu kabul ettigimi˘ beyan ederim. 01/06/2017 Seda EFENDIO˙ GLU˘ IV IÇ˙ INDEK˙ ILER˙ Sayfa No ÖNSÖZ . III TEZ ETIK˙ BEYANNAMESI..............................˙ IV IÇ˙ INDEK˙ ILER.....................................˙ V ¸SEKILLER˙ DIZ˙ IN˙ I...................................˙ X TABLOLAR DIZ˙ IN˙ I..................................˙ XII KISALTMALAR DIZ˙ IN˙ I................................˙ XIV 1. GIR˙ I¸S......................................˙ 1 2. GENEL BILG˙ ILER˙ . .5 2.1. Polinomlar . 5 2.1.1. Çalı¸smaKapsamında Ilgilenilen˙ Polinom Problemleri . 5 2.1.2. Polinomların Bilgisayar Ortamında Temsil Edilmesi . 7 2.2. Agaçlarda˘ Dola¸smaYöntemleri . 8 2.2.1. Kök Önce Yöntemi . 8 2.2.2. Kök Ortada Yöntemi . 9 2.2.3. Kök Sonda Yöntemi . 10 2.3. Çeviriciler . 11 2.3.1. Yorumlayıcılar . 11 2.3.2. Derleyiciler . 11 2.4. Uygulama Çatıları . 16 2.5. Kullanılan Teknolojiler . 17 2.5.1. JavaScript . 17 2.5.2. JSON . 17 3. UYGULAMA ÇATISININ GENEL YAPISI . 19 3.1. MathBox . 20 4. POLINOM˙ PROBLEMLERIN˙ IN˙ ANALIZ˙ I..................˙ 23 4.1. Sözcüksel Analiz . 23 4.2. Sözdizimsel Analiz . 25 4.3. Soyut Sözdizim Agacının˘ JSON Verisine Dönü¸stürülmesi . 28 V 4.4. Matematik Nesneleri . 30 5. POLINOM˙ PROBLEMLERIN˙ IN˙ SADELE¸STIR˙ ILMES˙ I...........˙ 31 5.1. Temel Sınıf Yapıları Içerisinde˙ Yapılan Sadele¸stirmeler . 32 5.1.1. Toplama Sınıfı . 32 5.1.2. Çarpma Sınıfı . 35 5.1.3. Üs Sınıfı . 39 5.1.4. Çıkarma Sınıfı . 42 5.1.5. Bölme Sınıfı . 44 5.2. Özel Metodlar Yardımıyla Yapılan Sadele¸stirmeler. 45 5.2.1. Pascal Üçgeninin Hesaplanması . 45 5.2.2. Binom Açılımının Yapılması . 45 5.2.3. Benzer Ifadelerin˙ Eliminasyonu . 46 6. POLINOM˙ PROBLEMLERIN˙ IN˙ ÜRETILMES˙ I...............˙ 47 6.1. Soru Sınıfı . 47 6.2. Sayı Sınıfı . 48 6.3. Toplama Sınıfı . 49 6.4. Fonksiyon Sınıfı . 50 6.5. Degi¸sken˘ Sınıfı . 51 6.6. Benzer Problemlerin Üretim Analizleri . 52 6.6.1. Süre Analizi . 52 6.6.2. Bellek Analizi . 53 6.6.3. Performans Analizi . 54 6.6.4. Üretilen Problemlerin Farklılıgının˘ Analizi . 55 6.6.5. Dügüm˘ Sayısı ve Derinlik Analizi . 56 7. POLINOM˙ PROBLEMLERIN˙ IN˙ ADIM ADIM ÇÖZÜMÜ . 57 7.1. Geri Zincirleme . 57 7.2. Cam Kutu . 59 7.3. Çözüm Animasyonu . 59 7.4. Problemlerin Çözüm Analizleri . 60 7.4.1. Süre Analizi . 60 7.4.2. Bellek Analizi . 61 7.4.3. Performans Analizi . 62 VI 7.4.4. Dogruluk˘ Analizi . 63 7.4.5. Dügüm˘ Sayısı, Derinlik ve Sadele¸stirmeAnalizi . 64 8. ENTEGRASYON . 65 8.1. Uygulama Programlama Arayüzü (UPA) . 66 8.2. Entegrasyon Yakla¸sımları . 67 8.2.1. Çevrimiçi UPA Yardımıyla Entegrasyon . 67 8.2.2. Bile¸senOlarak Entegrasyon . 68 9. SONUÇLAR . 69 10. GELECEK ÇALI¸SMALAR . 71 11. KAYNAKLAR . 72 ÖZGEÇMI¸S˙ VII Yüksek Lisans Tezi ÖZET POLINOMLAR˙ IÇ˙ IN˙ BIR˙ SIMGESEL˙ HESAPLAMA ÇATISININ TASARIMI VE GERÇEKLENMESI˙ Seda EFENDIO˙ GLU˘ Karadeniz Teknik Üniversitesi Fen Bilimleri Enstitüsü Bilgisayar Mühendisligi˘ Anabilim Dalı Danı¸sman:Yrd. Doç. Dr. Hüseyin PEHLIVAN˙ 2017, 75 Sayfa Simgesel hesaplama, bir problemin tam çözümünün bulunabilmesi için kullanılır. Sim- gesel hesaplamaları hatasız olarak hızlı bir ¸sekildeyapabilen çok sayıda uygulama geli¸sti- rilmi¸stir. Ancak bu uygulamalar sadece kendi kullanıcı arayüzleri ile kullanılacak ¸sekilde tasarlandıgı˘ için ba¸skahesaplama ortamlarına entegre edilemezler veya bu ortamların bir bile¸seniolarak çalı¸stırılamazlar. Bu çalı¸smada,kullanıcıların polinomlarla ilgili simgesel hesaplama i¸slemlerinides- teklemek için kullanabilecekleri bir uygulama çatısının tasarımı ve geli¸stirmea¸samalarısu- nulmu¸stur. Bir polinom problemini temsil etmek için biçimsel dil tanımlamalarından yarar- lanılmı¸stır. Öncelikle polinom problemlerinin biçimlerine yönelik olarak gramer kuralları tanımlanmı¸sve dil ayrı¸stırmai¸slemleriuygulanarak ilgili problemlerin soyut sözdizim agaç-˘ ları üretilmi¸stir. Bu agaçlar˘ tüm programlama dilleri tarafından kullanılabilmeleri için JSON (JavaScript Object Notation) veri degi¸simbiçimindeki˘ ifadelere dönü¸stürülüpkaydedilmi¸s- tir. Ardından sadele¸stirmei¸slemleriuygulanarak bu ifadelerin nesne temsilleri elde edilmi¸s- tir. Son olarak bu nesne temsilleri üzerinde çe¸sitlisayısal ve simgesel hesaplama i¸slemleri tanımlanarak polinom problemlerinin sadele¸stirilmesine,adım adım çözülmesine ve benzer- lerinin üretilmesine destek verilmi¸stir. Anahtar Kelimeler: Sembolik Hesaplama, Polinomlar, Otomatik Problem Üretimi, Adım-Adım Problem Çözümü, Sadele¸stirme, Gramerler, Ja- vaCC, AST, JSON, UPA. VIII Master Thesis SUMMARY DESIGN AND IMPLEMENTATION OF A SYMBOLIC COMPUTATION FRAMEWORK FOR POLYNOMIALS Seda EFENDIO˙ GLU˘ Karadeniz Technical University The Graduate School of Natural and Applied Sciences Computer Engineering Graduate Program Supervisor: Asst. Prof. Dr. Hüseyin PEHLIVAN˙ 2017, 75 Pages Symbolic computation is used to find exact solution of a problem. Numerous applica- tions have been developed that can quickly perform symbolic computations without errors. However, since these applications are designed to be used only with their own user interfa- ces, they can not be integrated into other computing environments or run as a component of those environments. In this study, the development stages of an application framework that can be used by users to support symbolic computation operations on polynomials are presented. Formal language definitions have been used to represent a polynomial problem. Firstly, grammar rules are defined for the forms of polynomial problems, and abstract syntax trees of related problems are generated by applying language parsing operations. These trees are converted to expressions in JSON (JavaScript Object Notation) data interchange format so that they can be used by all programming languages. Then simplification operations are applied to obtain object representations of these expressions. Finally, various numerical and symbolic com- putation operations are defined on these object representations to support the simplification of polynomial problems, the step by step solution of problems and the generation of similar problems. Key Words: Symbolic Computation, Polynomials, Automatic Problem Generation, Step-by-Step Problem Solution, Simplification, Grammars, JavaCC, AST, JSON, API. IX ¸SEKILLER˙ DIZ˙ IN˙ I˙ Sayfa No ¸Sekil2.1. ab/c ifadesini temsil eden agaçlar˘ . 7 ¸Sekil2.2.