36
MÜHENDİSLİK PROBLEMLERİNİN BİLGİSAYAR ORTAMINDA SAYISAL ANALİZ YÖNTEMLERİYLE ÇÖZÜLMESİ ABDURRAHMAN TUNÇ DUMLUPINAR ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ MAKİNA MÜHENDİSLİĞİ 1

MÜHENDİSLİK PROBLEMLERİNİN BİLGİSAYAR ORTAMINDA SAYISAL ANALİZ YÖNTEMLERİYLE ÇÖZÜLMESİ

Embed Size (px)

DESCRIPTION

Sayısal Analiz ; mühendislik alanında günlük hayatın vazgeçilmezlerindendir. Sayısal çözümlemeler yapmak için günümüz nimetlerinden biri olan bilgisayara ihtiyaç vardır. Yazılan bilgisayar programı bize hem zamandan kazanç hem de çözümde kesinlik ve çözüme giden yolda kolaylık sağlar. Bu çalışmamızda C# programlama diliyle sayısal çözümlemelerin nasıl yapıldığına ve program yazmak için gerekli olan temel bilgilere değinilmiştir. Anahtar Kelimeler: Sayısal Analiz, C# programlama dili

Citation preview

Page 1: MÜHENDİSLİK PROBLEMLERİNİN BİLGİSAYAR ORTAMINDA SAYISAL ANALİZ YÖNTEMLERİYLE  ÇÖZÜLMESİ

MÜHENDİSLİK PROBLEMLERİNİN BİLGİSAYAR

ORTAMINDA SAYISAL ANALİZ YÖNTEMLERİYLE

ÇÖZÜLMESİ

ABDURRAHMAN TUNÇ

DUMLUPINAR ÜNİVERSİTESİ

MÜHENDİSLİK FAKÜLTESİ

MAKİNA MÜHENDİSLİĞİ

1

Page 2: MÜHENDİSLİK PROBLEMLERİNİN BİLGİSAYAR ORTAMINDA SAYISAL ANALİZ YÖNTEMLERİYLE  ÇÖZÜLMESİ

ÖZET

Sayısal Analiz ve Sayısal Çözümlemeler; mühendislik alanında günlük hayatın

vazgeçilmezlerindendir. Sayısal çözümlemeler yapmak için günümüz nimetlerinden biri

olan bilgisayara ihtiyaç vardır. Yazılan bilgisayar programı bize hem zamandan kazanç

hem de çözümde kesinlik ve çözüme giden yolda kolaylık sağlar.

Bu çalışmamızda C# programlama diliyle sayısal çözümlemelerin nasıl

yapıldığına ve program yazmak için gerekli olan temel bilgilere değinilmiştir.

Anahtar Kelimeler: Sayısal Analiz, C# programlama dili

2

Page 3: MÜHENDİSLİK PROBLEMLERİNİN BİLGİSAYAR ORTAMINDA SAYISAL ANALİZ YÖNTEMLERİYLE  ÇÖZÜLMESİ

TEŞEKKÜR

Eğitim hayatım boyunca bizden yardımlarını, bilgilerini en önemlisi de içten ve samimi

sohbetini esirgemeyen saygı değer hocamız Yrd. Doç. Dr. Nimeti Döner hocamıza minnetduyar teşekkürü borç bilirim.

Ayrıca Hisarlar A.Ş. personelinden Mesut Türker ve İsmail Boztay’a teşekkür ederimve Hisarlar A.Ş.’nin en iyi yerlere gelmesini dilerim.

İÇİNDEKİLERSayfa

ÖZET

1.VİSUAL C# - GİRİŞ

1.1.Vs.Net Kurulum1.2.Visual C# Ide

1.2.1.Visual C# IDE bileşenleri;1.2.2. Form Tasarım Penceresi1.2.3.Araç Kutusu(Toll Box)1.2.4.Proporties Pençeresi

2.VERİ TÜRLERİ

2.1.Değişken ve Sabitler

2.1.1.Değişkenler

2.1.2.Sabitler2.2.Değişkenlere Değer Atama2.3.Değişkenlerde Tip ve Dönüşümleri

3.OPERATÖRLER (İŞLEÇLER)

3.1.Aritmetik Operatörler

3.1.1.Operatörler Anlamı3.1.2.Strıng Operatörleri

3.2.Karşılaştırma Operatörleri3.2.1.Koşul Operatörleri3.2.2.Atama Operatörleri

3

Page 4: MÜHENDİSLİK PROBLEMLERİNİN BİLGİSAYAR ORTAMINDA SAYISAL ANALİZ YÖNTEMLERİYLE  ÇÖZÜLMESİ

3.3.Diğer Mantıksal Operatörler 4.PROGRAM DENETİM DEYİMLERİ 4.1.Karşılaştırma Deyimleri 4.2.Swıtch Case 4.3.Döngü Deyimleri

4.3.1.For Döngüsü4.3.2.While Döngüsü4.3.3. Do-While Döngüsü5.FONKSİYONLAR 5.1.Matematiksel Fonksiyonlar 6. NUMERİK ANALİZ(SAYISAL ANALİZ)6.1.Tanımı Ve Tarihçesi:6.2.Amacı:6.3.Kullanım Alanları6.4.Nümerik metotların dezavantajları6.5.Nümerik Analizin Temellerini Atanlar6.6.Sonlu Elemanlar Metodunun ilkleri6.7.Sayısal Analizin Belli Başlı Konuları7.UYGULAMALI SAYISAL ANALİZ ÖRNEKLERİ8.SONUÇ VE ÖNERİLER9.KAYNAKLAR

4

Page 5: MÜHENDİSLİK PROBLEMLERİNİN BİLGİSAYAR ORTAMINDA SAYISAL ANALİZ YÖNTEMLERİYLE  ÇÖZÜLMESİ

1.VİSUAL C# - GİRİŞ

Visual Studio .NET, günümüz dünyasındaki en gelişmiş yazılım geliştirme ortamıdır. VisualStudio .NET kullanıcılarına, tüm yazılım geliştirme dilleri için ortak bir geliştirme platformusunar. İstenildiğinde BASIC dilinde (VB.NET), istenildiğinde C dilinde (Visual C#)yazılımların geliştirilmesine olanak sağlar. Böylece yazılım geliştiriciler bir programlamadilinden diğerine geçtiklerinde geliştirme platformuna alışmakla zaman kaybetmezler. Ekolarak Visual Studio .NET, proje geliştirirken ihtiyaç duyacağınız her türlü bileşenibarındırır ve tek bir platformda tüm ihtiyaçlarınızı karşılar. Uygulamaların (bir masaüstüuygulaması, web servisleri, web uygulamaları vb.) hızlı ve kolay bir şekilde geliştirilmesine,yönetilmesine olanak tanır.

Visual Studio .NET, günümüz dünyasındaki en gelişmiş yazılım geliştirme ortamıdır. VisualStudio .NET kullanıcılarına, tüm yazılım geliştirme dilleri için ortak bir geliştirme platformusunar. İstenildiğinde BASIC dilinde (VB.NET), istenildiğinde C dilinde (Visual C#)yazılımların geliştirilmesine olanak sağlar. Böylece yazılım geliştiriciler bir programlamadilinden diğerine geçtiklerinde geliştirme platformuna alışmakla zaman kaybetmezler. Ekolarak Visual Studio .NET, proje geliştirirken ihtiyaç duyacağınız her türlü bileşenibarındırır ve tek bir platformda tüm ihtiyaçlarınızı karşılar. Uygulamaların (bir masaüstüuygulaması, web servisleri, web uygulamaları vb.) hızlı ve kolay bir şekilde geliştirilmesine,yönetilmesine olanak tanır.

1.1.Vs.Net Kurulum

Visual Studio .NET kurulumu için ihtiyacımız olan minimum konfigurasyon şu şekildedir;İşlemci: 400MhzRam: 128MBDisk Alanı: 3GB (Boş alan)Çözünürlük: Min. 800x600/16Bit Çözünürlük/Renk Derinliği

İşletim Sistemi: NT Based (Windows NT, 2000, XP, Server 2003,Windows 7 ) işletimsistemlerindenbiri.

5

Page 6: MÜHENDİSLİK PROBLEMLERİNİN BİLGİSAYAR ORTAMINDA SAYISAL ANALİZ YÖNTEMLERİYLE  ÇÖZÜLMESİ

Programı indirdikten sonra programa tıklanır.

Next butonuna tıklayarak diğer adıma geçilir.

6

Page 7: MÜHENDİSLİK PROBLEMLERİNİN BİLGİSAYAR ORTAMINDA SAYISAL ANALİZ YÖNTEMLERİYLE  ÇÖZÜLMESİ

Lisans sözleşmesi kabul edilir.

Bu adımda programımızı nereye kurulacağı belirlenir genel olarak C sürücüsübelirlenir.

7

Page 8: MÜHENDİSLİK PROBLEMLERİNİN BİLGİSAYAR ORTAMINDA SAYISAL ANALİZ YÖNTEMLERİYLE  ÇÖZÜLMESİ

Kurulum Adımları ve durumu gösterilmektedir.

Exit butonuna tıklayarak kurulum tamamlanır.

8

Page 9: MÜHENDİSLİK PROBLEMLERİNİN BİLGİSAYAR ORTAMINDA SAYISAL ANALİZ YÖNTEMLERİYLE  ÇÖZÜLMESİ

New Project penceresini kullanarak yeni bir uygulama açılabilir. Bu pencereyi açmakiçin ;Create>Project veya File>New Project sekmeleri kullanılabilir.

Proje tipi, proje kalıbı ve projenin ismi belirlenir. C tabanlı, projeleri için Project Typesbölümünden “Visual C# -> Windows” tipini, Templates bölümünden “Windows Application”kalıbını, name bölümünden de projeye vereceğimiz isim belirlenir. Daha sonra onay butonunatıklanarak Visual C# IDE açılır.

9

Page 10: MÜHENDİSLİK PROBLEMLERİNİN BİLGİSAYAR ORTAMINDA SAYISAL ANALİZ YÖNTEMLERİYLE  ÇÖZÜLMESİ

1.2.Visual C# Ide

1.2.1.Visual C# IDE bileşenleri; Menü ÇubuğuAraç ÇubuklarıForm Tasarım PenceresiAraç KutusuProperties PenceresiSolution Explorer PenceresiComponent Tray olarak sıralanabilir.

MENÜ ÇUBUĞUBaşlık çubuğunun altındaki menüdür. Dinamik bir yapısı vardır. Alt menülere erişimi sağlar.Aşağıda menü çubuğu verilmiştir.

File: Proje ve dosyaları açıp/kapamak için, Visual C# dan çıkmak için kullanılır.Edit: Kod yazarken metnin taşınması, kopyalanması ve silinmesi gibi işlemler içinkullanılır.

10

Page 11: MÜHENDİSLİK PROBLEMLERİNİN BİLGİSAYAR ORTAMINDA SAYISAL ANALİZ YÖNTEMLERİYLE  ÇÖZÜLMESİ

View: IDE içerisindeki sık kullanılan bileşenlerin gösterilip, gizlenmesi için kullanılır.Project:Uygulamalarımıza yeni modüller, yeni formlar, yeni sınıflar vb eklemek içinkullanılır.Build : Uygulamaların çalıştırılması için kullanılır.

Debug: Kod satırındaki hataları onarmak için kullanılır.

Data: Veri tabanı uygulamalarında kayıt set oluşturmak için kullanılır.Tools: IDE’yi biçimlendirmek için kullanılır. Menülerin, eklemek/çıkarmak gibi dinamikkullanımı söz konusudur.Windows:IDE de bulunan pencerelerin yerleşimini gösterir.Help:Yardım menüsüdür.

1.2.2. Form Tasarım Penceresi

Visual C# IDE arabiriminin ortasında bulunan penceredir. Uygulama geliştirdiğimizformların tasarım pencereleri ve formların kod satırları görüntülenir. Bu pencereler arasındageçiş yapmak çok kolay ve kullanımı basittir.

1.2.3.Araç Kutusu( Tool Box)

11

Page 12: MÜHENDİSLİK PROBLEMLERİNİN BİLGİSAYAR ORTAMINDA SAYISAL ANALİZ YÖNTEMLERİYLE  ÇÖZÜLMESİ

Araç kutusunda en sık kullanılan denetimler bulunmaktadır. Başka denetimler eklemek için“Choose ToolBox Items” penceresi kullanılır. Bu penceresi açmak için çeşitli yöntemlervardır. Bunlar;Tools -> Choose ToolBox Items menü seçeneği,Araç kutusunda sağ tık -> Choose Items… seçeneği ile açılır.

12

Page 13: MÜHENDİSLİK PROBLEMLERİNİN BİLGİSAYAR ORTAMINDA SAYISAL ANALİZ YÖNTEMLERİYLE  ÇÖZÜLMESİ

1.2.4.Proporties Pençeresi

Properties penceresi, özellikler penceresi olarak adlandırılır. Form tasarım modunda ikenkullanılır. Özellikler penceresi; formumuza ait ya da form’a eklediğimiz denetimlere aitözelliklerin görüntülendiği penceredir. Bu özellikler; isim, arka plan rengi, genişlik, metinboyutu gibi özelliklerdir. Özellikler penceresi dinamik olarak yapılandırılabilir. İstenildiğindesınıflandırılabilir, istenildiğinde alfabetik olarak sıralanabilir.

2.VERİ TÜRLERİ

13

Page 14: MÜHENDİSLİK PROBLEMLERİNİN BİLGİSAYAR ORTAMINDA SAYISAL ANALİZ YÖNTEMLERİYLE  ÇÖZÜLMESİ

Programlamada kod satırlarında kullanılacak olan değişkenlerin ya da sabitlerin veritürlerinin belirlenmesi çok önemlidir. Programcının, kullanıcıdan girmesini istediği bilgilerintürlerinin belirlenmesi için kullanılır. Veri türleri, özellikle değişkenlerin ve sabitlerinsayısal,bir karakter ya da karakter seti veri içerip içermediklerini belirlemek için kullanılır.Veri tipleri genellikle, ondalık sayılar, tamsayılar, karakterler, tarih ve zaman bilgileriniiçermektedir.

Visual C# içinde kullanılacak veri türleri aşağıda verilmiştir.

SByte : -128 ile 127 arasında işaretli tamsayıları tanımlamak için kullanılır. Birbyte’lık yer işgal eder. Bu tipler Visual C#'ta (CTS-Common TypeSystem) System.SByte olarak kullanılır. Örnek: sbyte Urun_Kodu;

Short: Bu tür sayısal değerler 2 baytlık yer işgal eder. İşaretli tam sayıdır..NET'te (CTS-Common Type System) System. Int16 olarak kullanılır.Örnek: short a;

Int: Bu tür sayısal değerler 4 baytlık yer işgal ederler. İşaretli tamsayıdır.Bu tipler .NET'te (CTS-Common Type System) System.Int32 olarakkullanılır.Örnek: int sayi;

Long: Bu tür sayısal değerler 8 baytlık yer işgal ederler. İşaretli tamsayıdır.Bu tipler .NET'te (CTS-Common Type System) System.Int64 olarakkullanılır. Örnek: long miktar;

Float: Bu tür sayısal değerler 4 baytlık yer işgal ederler. Ondalık sayı tipidir.Bu tipler .NET'te (CTS-Common Type System) System.Single olarakkullanılır. Örnek: float sonuc;

Double: Bu tür sayısal değerler 8 baytlık yer işgal ederler. Ondalık sayı tipidir.Bu tipler .NET'te (CTS-Common Type System) System.Double olarakkullanılır. Örnek: double ort;

Decimal: Bu tür sayısal değerler 16 baytlık yer işgal ederler. Bu tipler .NET'te(CTS-Common Type System) System.Decimal olarak kullanılır. Örnek:decimal toplam;

Bool: Bu tür sayısal değerler 2 baytlık yer işgal ederler. True\False ya daYes\No gibi iki durumlu değerlerden birini içerir. Bu tipler .NET'te(CTS-Common Type System) System.Boolean olarak kullanılır. Örnek:bool Evet_Hayir;

DateTime: Bu tür veri tipleri 8 baytlık yer işgal derler. Tarih ve zaman bilgileriniiçerir .NET'te (CTS-Common Type System) System DatetTime olarakkullanılır. System.DateTime tarih;

Char: Karakter Bilgileri içerir. Bu tür veriler 2baytlık yer işgal eder. En fazla65535 karakter içeri. Bu tipler .NET'te (CTS-Common Type System)System.Char olarak kullanılınır. Örnek: char Erkek_Kadın;

Sting: 2 Milyar karakter kadar bilgiyi içerebilir. Bu tipler .NET'te (CTS-

14

Page 15: MÜHENDİSLİK PROBLEMLERİNİN BİLGİSAYAR ORTAMINDA SAYISAL ANALİZ YÖNTEMLERİYLE  ÇÖZÜLMESİ

Common Type System) System.String olarak kullanılır. Örnek: stringFirmaAdi;

2.1.Değişken ve SabitlerDeğişkenler programın akışı içerisinde, değerleri sürekli olarak değişebilen, Sabitler

ise,değeri değişmeyen program bileşenidir.

2.1.1.DeğişkenlerDeğişkenler geçici bilgi alanlarını ifade etmek için kullanılır. Program çalıştığında adı geçendeğişkenin saklandığı bellek alanından değer alınır, işlem yapılır, gerekirse o bellek alanıgüncellenir. Değişkenlerin saklandığı bellek alanları dinamik bir şekilde kullanılır. Herprogramlama dilinde olduğu gibi Visual C#’ta değişkenlerin isimlendirme kuralları vardır.Bunlar;Değişken isminin ilk karakteri bir harf olmalıdır.Değişken ismi oluşturulurken, diğer karakterler, harf, rakam ya da alt çizgi (-)sembolü olabilir.Kullanılan harflerin küçük ya da büyük harf olmasının önemi yoktur.Değişken isim uzunlukları 16383 karaktere kadar olabilir.Değişken isimleri içinde diğer semboller(+,-,/ ,boşluk vb) bulunmamalıdır..NET’e özgü kelimeler olmamalıdır.

Visual C#’ta değişken aşağıdaki gibi tanımlanmaktadır.Kullanımı:Değişken_Türü Değişken_Adı;

Örnek2.1:string str;str = textBox1.Text;MessageBox.Show(str);Yukarıdaki kod satırında tanımlanan str; string türündeki bir değişkendir.

Örnek 2.2: Butona tıklandığında textbox1’in içeriğini, textbox2’nin içeriğine bölen vesonucu mesajla kullanıcıya bildiren program.

private void button1_Click_1(object sender, EventArgs e){double str1,str2;str1 =Convert.ToDouble(textBox1.Text);str2 = Convert.ToDouble(textBox2.Text);MessageBox.Show("Bölme Sonucu : " + (str1/str2) + " Olarak Hesaplanmıştır");}

Yukarıdaki kod satırında; str1, str2 integer ve sonuc string türünde değişkenlerdir. Metinkutularının içeriğini birbirine böler ve sonucu ekrana mesajbox dialog kutusu ile bildirir.

Örnek 2.3: Butona tıklandığında, butonun text özelliğini “A.Tunç” olarak değiştirilenprogram.

private void button1_Click_1(object sender, EventArgs e)

15

Page 16: MÜHENDİSLİK PROBLEMLERİNİN BİLGİSAYAR ORTAMINDA SAYISAL ANALİZ YÖNTEMLERİYLE  ÇÖZÜLMESİ

{string str;str = "A.Tunç";textBox1.Text = str;}Yukarıdaki kod satırında; str, string türünde bir değişkendir.

2.1.2.SabitlerSabitler kod satırındaki değeri değişmeyen program bileşenleridir. Uygulama süresince

değiştirilmeyecek olan değer için Const ifadesi kullanılır. Bu ifade ile bir sabit tanımı yapılır.Const tanımı aşağıdaki şekillerde yapılmaktadır:Kullanım:Const_değişken türü_değişken adı;

Örnek 2.4: Butona tıklandığında Form’un text özelliğini “A.Tunç” olarak değiştirilenprogram.

private void button1_Click_1(object sender, EventArgs e){const string str = " A.Tunç ";Form.ActiveForm.Text = str;}

2.2.Değişkenlere Değer Atama

Bir değişkene değer atamak için genel olarak aşağıdaki ifade kullanılmaktadır;

Değişken adı = Değişkene Atanan Değer ;

Yukarıdaki tanımda yer alan eşittir (=) işareti sadece, sağdaki değerin soldaki değişkeneaktarılacağını ifade etmektedir. Örneğin yas isimli bir değişkene 22 değeri;

int yaş;yas=22;ya daint a,b;a=b+1;gibi değer atamada yapılabilir.

2.3.Değişkenlerde Tip ve DönüşümleriUygulama içinde kullanılan değişkenlerin türlerini birbirlerine dönüştürmek için

kullanılanyöntemdir. Tip dönüşümü için kullanılan fonksiyonlar şunlardır.

Convert.ToInt32 İfadeyi yuvarlatarak tam sayıya dönüştürürConvert.ToInt64 İfadeyi yuvarlatarak uzun tamsayıya dönüştürür.Convert.ToSingle İfadeyi tek duyarlıklı single (float) tipine dönüştürür.Convert.ToDouble İfadeyi çift duyarlıklı double tipe dönüştürür.

16

Page 17: MÜHENDİSLİK PROBLEMLERİNİN BİLGİSAYAR ORTAMINDA SAYISAL ANALİZ YÖNTEMLERİYLE  ÇÖZÜLMESİ

Convert.ToString İfadeyi stringe çeviriConvert.ToBoolean İfadeyi lojik logic boolean türe çevirir.Convert.ToByte İfadeyi Byte’ a çevirir.Convert.ToDateTime İfadeyi tarih Date formatına çevirir.Convert.ToChar String ifadenin ilk karakterini, karakter türüne dönüştürür.Convert.ToInt16 İfadeyi kısa tamsayıya çevirir

Örnek 2.5 : İki adet metin kutusunun içeriğini toplayıp etiket denetiminin textözelliğine aktaran program.

private void button1_Click_1(object sender, EventArgs e){textBox1.Text = "6";textBox2.Text = "10";label1.Text=Convert.ToString(Convert.ToInt32(textBox1.Text)+Convert.ToInt32(textBox2.Text));

}

tam sayı türüne dönüştürmüştür. Daha sonra tekrar Convert.ToStringdönüşümü yapılarak Label’ın text özelliğinde görüntülenmiştir.Örnek 2.6: Ondalık (yani decimal) türdeki bir sayısal değeri, tamsayı (integer)türüne dönüştüren program.

private void button1_Click_1(object sender, EventArgs e){const double sayi = 345.425;int deger;deger = Convert.ToInt32(sayi);MessageBox.Show(deger.ToString());}

Yukarıdaki kod satırında: 345.425, ondalık türünde bir değişkendir.Convert.ToInt32 fonksiyonu ile ondalık türündeki bu değer, tam sayı türünedönüştürülmüştür. Programın çıktısı: 345’tir. Çünkü ondalık değeri tam sayıyayuvarlanmıştır. Tanımlanan sayi isimli değeri 345.525 ise, 346 tamsayıyı değerineyuvarlayacaktır.

17

Page 18: MÜHENDİSLİK PROBLEMLERİNİN BİLGİSAYAR ORTAMINDA SAYISAL ANALİZ YÖNTEMLERİYLE  ÇÖZÜLMESİ

3.OPERATÖRLER (İŞLEÇLER)

Operatörler, değişkenler ve sabitler üzerinde aritmetik, string, karşılaştırma, koşul veatama işlemleri yapan simgelerdir.

3.1.Aritmetik Operatörler

Aritmetik operatörler; toplama, çıkarma, çarpma ve bölme işlemlerini yapanoperatörlerdir. Yönelik operatörler olarak bilinir. Bu operatörlerdeki işlem önceliksıralaması, matematiksel işlemlerde olduğu gibidir.

3.1.1.Operatörler Anlamı^ Üs alma* Çarpma/ Bölme% Mod işlemi. Bölme işleminde kalanı verir.+ Toplama- Çıkarma

Örnek 3.1: KDV oranının kullanıcıdan istenerek, Genel Toplam değerininhesaplandığı program.private void button1_Click_1(object sender, EventArgs e){double KDV_Orani, GenelToplam;int Toplam=1000;KDV_Orani =Convert.ToDouble(textBox1.Text);GenelToplam = (Toplam * (KDV_Orani / 100)) + Toplam;label1.Text = Convert.ToString(GenelToplam);}Aritmetik operatörlerde parantez kullanımı önemlidir. Parantez kullanıldığındaişlem önceliğine dikkat etmek gerekmektedir

3.1.2.Strıng Operatörleri

String operatörleri; string ifadeleri birleştirmeyi sağlayan operatörlerdir.Karakter katarlarını birleştirmek yada bir değişken ile ifadenin birlikte kullanıldığıdurumlarda “+”, “insert”… gibi operatörler kullanılır.Karakter katarları üzerinde işlem yapmak için kullanılan operatörlerdir.Operatörler Anlamı+ String ifadeleri birleştirir.insert String ifadenin istenilen yerinden itibaren, başka bir ifadeyi ekler.Remove String ifadenin istenilen yerinden itibaren, bir ifadeyi çıkarır.Split String ifadeyi böler ve sonucu dizide tutar.

18

Page 19: MÜHENDİSLİK PROBLEMLERİNİN BİLGİSAYAR ORTAMINDA SAYISAL ANALİZ YÖNTEMLERİYLE  ÇÖZÜLMESİ

toCharArray String ifadenin bir kısmını yada tamamını bir dizide tutar.Örnek 3.2: KDV oranının kullanıcıdan istenerek, Genel Toplam değerininhesaplandığı yukarıdaki programın çıktısını aşağıdaki gibi düzenleye biliriz. (+)

private void button1_Click(object sender, EventArgs e){double KDV_Orani, GenelToplam;int Toplam = 1000;KDV_Orani= Convert.ToDouble(textBox1.Text);GenelToplam = (Toplam * (KDV_Orani / 100)) + Toplam;label1.Text = Convert.ToString("%" +KDV_Orani+"KDVORANININ GENEL TOPLAM DEĞERİ"+ GenelToplam);}

Yukarıdaki kod satırı; genel toplam değerinin hesaplayan ve bu değeri stringoperatörlerini kullanarak, mesajbox dialog kutusu ile kullanıcıya bildirilmiştir.

Örnek 3.3: String şeklinde tanımlanmış doğum günü değişkenine, GÜN, AY ve YILifadelerini uygun yerde konumlanacak şeklide yerleştiren program. (Insert)

private void button1_Click_1(object sender, EventArgs e){string Dogum_Tarihi1,Doğum_Tarihi2;Dogum_Tarihi1= "06011980";Doğum_Tarihi2 = Dogum_Tarihi1.Insert(0, "GÜN:");Doğum_Tarihi2 = Doğum_Tarihi2.Insert(6, "/AY:");Doğum_Tarihi2 = Doğum_Tarihi2.Insert(12, "/YIL:");MessageBox.Show(Doğum_Tarihi2);

}

3.2.Karşılaştırma OperatörleriBu operatörler, iki değeri karşılaştırmak ve sonucunun "doğru" ,"yanlış" veya "boş"(null) olma durumunu göre işlemleri yapmak amacıyla kullanılır. Bu operatörlerinsonucun doğru çıkması durumda True yani –1, yanlış çıkması durumunda False yani 0değerini döndürürler.Operatörler Anlamı== Eşittir!= Eşit değil< Küçük> Büyük<= Küçük ya da eşit>= Büyük ya da eşitint Sonuc, A, X, Y;Sonuc = ( 3 < 5 ); Sonuc = -1Sonuc = ( 7 > 9 ); Sonuc = 0Sonuc = ( 10 <= Math.Sqrt (100) ); Sonuc = -1A^2 < 10; a'nın karesi 10'dan küçük ise

19

Page 20: MÜHENDİSLİK PROBLEMLERİNİN BİLGİSAYAR ORTAMINDA SAYISAL ANALİZ YÖNTEMLERİYLE  ÇÖZÜLMESİ

3.2.1.Koşul Operatörleri" doğru" ya da "yanlış" olması durumuna göre programın akışı yönlendirilir.&& And, AndOr (Ve)|| Or, XOr (Veya)! Değilif (Asc > 96 && Asc < 128) gibi.

3.2.2.Atama Operatörleri Operatör Eşdeğeri Anlamı x += y x = x + y x + y’nin değerini x’e ata x ‐= y x = x – y x *= y x = x * y x++ x = x + 1

Örnek 3.4: Sayi1 ve Sayi2 şeklinde iki adet sabit tanımlayarak, atamaoperatörlerinin kullanıldığı program.

private void button1_Click_1(object sender, EventArgs e){double sonuc, sayi1, sayi2;sayi1 = 9;sayi2 = 2;sonuc=sayi1+sayi2;MessageBox.Show(sonuc.ToString());sonuc=sayi1*sayi2;MessageBox.Show(sonuc.ToString());sonuc=sayi1/sayi2;MessageBox.Show(sonuc.ToString());sonuc=Math.Pow(sayi1,sayi2);MessageBox.Show(sonuc.ToString());sonuc = sayi1 % sayi2;MessageBox.Show(sonuc.ToString());

}

3.3.Diğer Mantıksal Operatörler

Yukarıda anlatılan operatörlerin dışında, Visual C#’ta kullanılan diğeroperatörler şunlardır; İşaretler Anlamı ? Herhangi bir karakter. * Sıfır ya da daha fazla karakter. # Bir haneli sayısal değer. [ liste ] Listede yer alan herhangi bir karakter. [ !liste ] Listede yer almayan herhangi bir karakter. Bu operatörler; veri tabanında işlemlerinde, kayıt filtrelemede kullanılır.

20

Page 21: MÜHENDİSLİK PROBLEMLERİNİN BİLGİSAYAR ORTAMINDA SAYISAL ANALİZ YÖNTEMLERİYLE  ÇÖZÜLMESİ

4.PROGRAM DENETİM DEYİMLERİ

Program denetim deyimleri; bir veya daha fazla deyimin belirli koşul sağlandığındayürütülmesi için kullanılır. Birden fazla koşulun birleştirilip tek bir koşul olarakdeğerlendirilmesi için mantıksal operatörler kullanılır. Program denetim deyimleri;karşılaştırma ve döngü deyimleridir.4.1.Karşılaştırma Deyimleri

Karşılaştırma deyimleri; If…Else ve Select…Case deyimleridir. IF…ELSE Karşılaştırma işlemleri sonucunda bir eylemin yapılması durumunda kullanılır. If…Else denetimleri; If (Koşul) {

Deyimler; } Else {

Deyimler; }

şeklinde kullanılır. Bu tanıma göre, verilen koşuldan "1" değeri döndürülürseyani "doğru" ise Then kelimesini takip eden deyimler işlem görecektir. Eğer koşulgerçekleşmez ise Else kelimesini izleyen satırlardaki deyimler işlem görecektir.

Örnek 4.1: Vize ve Final notunu kullanıcıdan isteyen ve ortalamasını kullanıcıyabildiren program.

private void button1_Click(object sender, EventArgs e) { double sonuc; double vize; double final; vize = Convert.ToInt32(textBox1.Text) ; final = Convert.ToInt32(textBox2.Text) ; sonuc = (vize * (0.4)) + (final * (0.6)); if (sonuc < 40) { MessageBox.Show("KALDINIZ"); } else { MessageBox.Show("GEÇTİNİZ"); }

} Yukarıdaki kod satırı, “Ortalama” adlı değişkenin içeriğinin 50’den küçük ya dabüyük olması koşulunu kontrol etmektedir.

If deyimini aşağıda gösterilen biçimde iç içe olarak ta kullanmak

21

Page 22: MÜHENDİSLİK PROBLEMLERİNİN BİLGİSAYAR ORTAMINDA SAYISAL ANALİZ YÖNTEMLERİYLE  ÇÖZÜLMESİ

mümkündür:If (Koşul) {

Deyimler; } Else If (Koşul) { Deyimler; } …

Yukarıdaki tanımda, birinci satırdaki if deyiminde yer alan koşulun "doğru"olması durumunda hemen ardındaki deyimler bloğu işlenecek, eğer "yanlış" ise bukez Else lf deyimi içindeki koşul göz önüne alınacaktır. Eğer bu koşul "doğru" isehemen ardındaki satırlarda yer alan deyimler işlem görecektir. Her iki koşulda"yanlış" ise bu kez en son Else deyimini izleyen deyimler işlem görecektir.

Örnek 4.2: Vize ve Final notunu kullanıcıdan isteyen ve yıl sonu ortalamasını 5’liksisteme çeviren program. private void button1_Click(object sender, EventArgs e) { double sonuc; double vize; double final; vize = Convert.ToInt32(textBox1.Text) ; final = Convert.ToInt32(textBox2.Text) ; sonuc = (vize * (0.4)) + (final * (0.6)); if (sonuc >= 85) { MessageBox.Show("Yıl Sonu Ortalamanız Beş (5)"); } else if(sonuc >= 70) { MessageBox.Show("Yıl Sonu Ortalamanız Dört (4)"); } else if (sonuc >= 55) { MessageBox.Show("Yıl Sonu Ortalamanız Üç (3)"); } else if (sonuc >= 45) { MessageBox.Show("Yıl Sonu Ortalamanız İki (2)"); } else {

22

Page 23: MÜHENDİSLİK PROBLEMLERİNİN BİLGİSAYAR ORTAMINDA SAYISAL ANALİZ YÖNTEMLERİYLE  ÇÖZÜLMESİ

MessageBox.Show("Yıl Sonu Ortalamanız Bir (1)"); } } Yukarıdaki kod satırı; yıl sonu ortalamasının 5’lik sistemde karşılığını If…Else yapısıile hesaplamaktadır.

4.2.Swıtch Case “If” karar yapısının gelişmişidir. Sadece bir değişkenin durumunu kontrol

eder. Kontrolü yapılacak değişken birden fazla değer alabiliyorsa switch yapısıkullanılır.Kullanılış şekli; switch(değişken){ case sabit1: …küme1; case sabit2: …küme2; . . . case sabitN: default: default_küme; }; Verilen ifadenin aldığı değer test edilecektir. Bu değer, alt satırdaki Casedeyimleri içindeki yer alan listelerde aranacaktır. Örneğin, söz konusu değer ilkCase deyiminde yer alan “Değişkenin1.Değeri” içinde ise, bunu takip eden deyimlerçalışacaktır. Eğer hiçbir Case deyimi çevresinde değilse, bu kez Case defaultdeyimini işleyen deyimler işlem görecektir. Örnek 4.3: Haftanın gününü sistemden okuyan ve ona uygun mesajı kullanıcıyaileten program. private void Form1_Load(object sender, EventArgs e) { string gun = DateTime.Now.DayOfWeek.ToString(); switch (gun) { case "Sunday": MessageBox.Show("PAZAR"); break; case "Monday": MessageBox.Show("PAZARTESİ"); break; case "Tuesday": MessageBox.Show("SALI"); break; case "Wednesday": MessageBox.Show("ÇARŞAMBA"); break;

23

Page 24: MÜHENDİSLİK PROBLEMLERİNİN BİLGİSAYAR ORTAMINDA SAYISAL ANALİZ YÖNTEMLERİYLE  ÇÖZÜLMESİ

case "Thursday": MessageBox.Show("PERŞEMBE"); break; case "Friday": MessageBox.Show("CUMA"); break; case "Saturday": MessageBox.Show("CUMARTESİ"); break; default: MessageBox.Show("SİSTEM TARİH KONTROLÜ YAPINIZ"); break; } } Yukarıdaki kod satırında; sistem bilgisine göre haftanın günü belirlenip, kullanıcıya mesajlailetilmiştir.

4.3.Döngü Deyimleri Döngü deyimleri, programların belirli bölümlerinin defalarca, işlenmesini sağlamak

üzere oluşturulmuş bir deyimlerdir. Bunlar For, While, Do…While, Break ve Continuedeyimleridir.

4.3.1.For DöngüsüVisual C# programlarında bir ya da daha fazla sayıda deyimin belirli bir

koşul gerçekleşinceye kadar tekrarlanması isteniyorsa “for” deyimi kullanılır. Budeyim; For(Başlangıç Değeri;Koşul;Artım) {

Bildirim; } şeklinde kullanılır.

Örnek 4.4: 1’den 10’a kadar for döngüsü ile elde edilen sayıları listbox’aekleyen program.

private void Form1_Load(object sender, EventArgs e) { int sayac; for(sayac=1;sayac<=20;sayac++) { listBox1.Items.Add(sayac); } }

Sayaç ve Artım değerleriyle; döngü sayı belirlenebilir. Döngü istenildiğinde “break”ile sonlandırılabilir.

Örnek 4.5: 2’den 20’e kadar for döngüsü ile elde edilen sayıları listbox’aekleyen, sayaç 10’a geldiğinde break ile for döngüsünden çıkılan program.

private void Form1_Load(object sender, EventArgs e) {

24

Page 25: MÜHENDİSLİK PROBLEMLERİNİN BİLGİSAYAR ORTAMINDA SAYISAL ANALİZ YÖNTEMLERİYLE  ÇÖZÜLMESİ

int sayac; for(sayac=1;sayac<=20;sayac++) { listBox1.Items.Add(sayac); if (sayac >= 10) { break; } } }

toplayan program. private void button1_Click(object sender, EventArgs e) { int basla; int bitir; int sayac=0; int toplam=0; basla = Convert.ToInt32(textBox1.Text); bitir = Convert.ToInt32(textBox2.Text); for(sayac=basla;sayac<=bitir;sayac++) { toplam = toplam + sayac; } MessageBox.Show(toplam.ToString());

Yukarıdaki kod satırları; iki değer arasındaki sayıları toplayıp, ekrana mesajboxdialog kutusu ile bildirmektedir. Örnek 4.6: Fibenocci serisinin 20 elemanını listbox’a ekleyen program.

private void Form1_Load(object sender, EventArgs e) { int a, b, c, i; a = 1; b = 1; listBox1.Items.Add(a.ToString()); for (i = 1; i <= 20; i++) { c = a + b; a = b; b = c; listBox1.Items.Add(a.ToString()); } }

Yukarıdaki kod satırları; fibenocci serisinin elemanlarını her for döngüsünde eldeederek listbax’a eklemektedir. 4.3.2.While Döngüsü

Belirli bir koşulun gerçekleşmesi sonucunda bazı deyimleri söz konusu iseWhile.. döngülerinden yararlanılır. Koşul olumlu olduğu sürece çevrim yinelenir. İkiveya daha fazla koşul mantıksal operatörler ile birleştirilir. Bu deyim;

While( koşul )

25

Page 26: MÜHENDİSLİK PROBLEMLERİNİN BİLGİSAYAR ORTAMINDA SAYISAL ANALİZ YÖNTEMLERİYLE  ÇÖZÜLMESİ

{ Deyimler; };

biçimde tanımlanmaktadır. Koşulun gerçekleşmemesi durumunda ise döngü terkedilir.

4.3.3.Do…While Döngüsü

While döngüsü gibidir. Tek fark, koşulun döngü sonunda sınanmasıdır. Yani, koşulsınanmadan çevrime girilir ve döngü kümesi en az bir kez yürütülür. Kullanılışı;

Do {

Deyimler; }While(Koşul); şu şekildedir. Döngü istenildiğinde “Break” ile sonlandırılabilir.

Örnek 4.7: Kullanıcının girdiği değere göre faktöriyel hesaplayan program. private void button1_Click(object sender, EventArgs e) { int sayac, sayisal_deger, Faktoriyel; string deger =Microsoft.VisualBasic.Interaction.InputBox("FaktöriyelGiriniz", "Titttlee", "", 100, 100); sayac = 1; Faktoriyel = 1; sayisal_deger = Convert.ToInt32(deger); do { sayac = sayac + 1; Faktoriyel = Faktoriyel * sayac; } while (sayac < sayisal_deger); MessageBox.Show("FAKTÖRİYEL: " + Faktoriyel.ToString());

26

Page 27: MÜHENDİSLİK PROBLEMLERİNİN BİLGİSAYAR ORTAMINDA SAYISAL ANALİZ YÖNTEMLERİYLE  ÇÖZÜLMESİ

5.FONKSİYONLAR İki çeşit fonksiyon vardır. Bunlardan birisi NET kütüphanesinde önceden tanımlanmış

bir fonksiyon (matematiksel, string yada tarih_saat fonksiyonları gibi) diğeri kullanıcı tarafındantanımlanmış fonksiyonlardır. Her fonksiyon çalıştırıldığında geriye mutlaka bir değer döndür vekullanıcı bu dönen değere göre işlem yapar.5.1.Matematiksel Fonksiyonlar Matematiksel hesaplamalarda kullanılan fonksiyonlardır. Döndürüln değr, buhesaplama sonucunda elde edilen değerdir.

Fonksiyon Anlamı Pow > Üst alma fonksiyonu. Sqrt > Karekök alma fonksiyonu. Log > Logaritma fonksiyonu. Exp > e (2,718281) değerini fonksiyonda belirtilen sayı ile üssü alıp değerdönderir. Max_Min > Büyük yada küçük değerin dönderildiği fonksiyon. Cos_Sin_Tan >Trigonometrik fonksiyonlar. Ceiling_Floor >Tamlama fonksiyonlarıdır. Ceiling >fonksiyonu, bir değerin kendisine en yakın küçük bir değeri dönderir. Floor > fonksiyonu ise bir değerin kendisine en yakın büyük bir değeri dönderir. Bu operatörlerin yanında rastgele sayı üretmek için kullanılan Random( )fonksiyonuda vardır. Örnek 5.1:

private void Form1_Load(object sender, EventArgs e) { Random rand = new Random(); MessageBox.Show(rand.Next(10).ToString()); }

Aşağıda matematiksel fonksiyonlar ve döndürdüğü değerlerle ilgili örnekverilmiştir. Örnek 5.2:Matematiksel fonksiyonların kullanımı:

private void button1_Click_1(object sender, EventArgs e) { double sonuc; sonuc = Math.Pow(4, 2); MessageBox.Show(sonuc.ToString()); sonuc = Math.Sqrt(144); MessageBox.Show(sonuc.ToString()); sonuc = Math.Sqrt(100); MessageBox.Show(sonuc.ToString()); sonuc = Math.Exp(100); MessageBox.Show(sonuc.ToString()); sonuc = Math.Max(10, 100); MessageBox.Show(sonuc.ToString()); sonuc = Math.Min(10, 100); MessageBox.Show(sonuc.ToString());

27

Page 28: MÜHENDİSLİK PROBLEMLERİNİN BİLGİSAYAR ORTAMINDA SAYISAL ANALİZ YÖNTEMLERİYLE  ÇÖZÜLMESİ

sonuc = Math.Cos(0); MessageBox.Show(sonuc.ToString()); sonuc = Math.Sin(0); MessageBox.Show(sonuc.ToString()); sonuc = Math.Tan(45); MessageBox.Show(sonuc.ToString()); sonuc = Math.Ceiling(144.23333); MessageBox.Show(sonuc.ToString()); sonuc = Math.Floor(144.23333); MessageBox.Show(sonuc.ToString()); }

Örnek 5.3: Aşağıdaki matematiksel ifadenin hesaplanması için gereken program.

private void button1_Click_1(object sender, EventArgs e)

{ int x; double sonuc; x = 10; sonuc=(Math.Pow((x+5),(1/3)))/((x+8)); MessageBox.Show(sonuc.ToString()); }

6. NUMERİK ANALİZ(SAYISAL ANALİZ)

6.1.Tanımı Ve Tarihçesi:Bilim, problemleri ortaya koyar ve onlara çözümler üretir. Matematik, bilimin ortak

dilidir. Hem problemleri ifade ederken, hem de onlara çözümler yapmaya çalışırken bu dilikullanırız. Ayrıca, matematik bilimsel düşünmeyi, yani doğru ve net düşünmeyi öğretir.Düşünmeyi ve düşünebilmeyi öğretir, kişiyi doğru sonuca yönlendirir. Bu haliyle matematik bireğitim aracı olarak da kabul edilir. Bilim adamlarının karşılaştığı en önemli sorunlardan biri,problemleri matematiğin diliyle ifade ettikten sonra çözümünü yapmaktır. İşte bu noktayaSayısal Çözümleme, diğer adıyla Nümerik Analiz devreye girer. Çünkü çözüm başlı başına birproblemdir. Zaten, matematik yıllar içinde geliştikçe, çözüm yapabilmek için Nümerik Analizyöntemleri de matematiğin bir kolu olarak ortaya çıkmış, gelişmiş ve gelişmektedir. Nümerik Analiz (Sayısal Çözümleme); analitik yöntemlerle çözülemeyen problemleri çözmekiçin kullanılan yöntemler bütünüdür. Diğer bir tanımla nümerik analiz istenen matematiksel

28

Page 29: MÜHENDİSLİK PROBLEMLERİNİN BİLGİSAYAR ORTAMINDA SAYISAL ANALİZ YÖNTEMLERİYLE  ÇÖZÜLMESİ

işlemlerin ayrık olarak nasıl hesaplanabileceğinin incelenmesidir.Bugün bile ilk kullanım tarihi ve sınırları kesin olarak bilinmemekle birlikte, Nümerik Analizinçok eski yıllardan beri farklı şekillerde ve isimler altında kullanıldığı ilgili kaynaklarda yeralmaktadır. Bunun açık bir kanıtı olarak; bundan yaklaşık 3700 yıl önce, Babilliler’in ikincidereceden bir denklemin köklerinin nasıl bulunabileceğini, tam sayıların kareköklerinin yaklaşıkolarak nasıl hesaplanabileceğini ve bileşik faizle ilgili bazı problemlerin lineer enterpolasyonyöntemiyle nasıl çözülebileceğini bildiklerini bir çok kaynakta rastlamak mümkündür. Ayrıca,yaklaşık 2000 yıl önce “günümüzde Gauss eliminasyon yöntemi” olarak bilinen, lineer denklemsistemlerinin çözümüyle ilgi bir örnekte matris gösteriminin kullanılmış olduğu bazı Çinlikaynaklarda ifade edilmektedir. Yine, bazı Çinli matematikçilerin (960‐1279) yılları arasındayüksek dereceli denklemlerin nümerik çözümü için, iteratif yaklaşma yönteminigenelleştirdiklerine ilgili kaynaklarda rastlamak mümkündür. Bir diğer durum; bundan yaklaşık900 yıl önce yaşamış olan Ömer Hayyam’ın üçüncü dereceden denklemlerin çözümüyle ilgiliaraştırmalar yaptığı, yayınlamış olduğu kendi eserinde yer almaktadır. İskoçyalı John Napier1614 yılında logaritma tablolarını düzenleyerek yayınlamış ve neticede birçok hesaplamalar içinkullanılabilecek bir hesaplama aracı hizmete sunmuştur.Bugün dahi nümerik analiz konusunun sınırları diğer bazı disiplinlerin aksine kesin olarakbelirlenmemektedir. Nümerik Analiz teriminin 1950 yıllarından sonra daha yaygın olarakkullanılır olması aynı yıllarda gelişmeye başlayan bilgisayarlar ile kesin bağlantısının bir kanıtıdır.6.2.Amacı:

Nümerik Analizin amacı çözümünün elle yapılmasının pratik olmadığı karmaşık,analitik olarak çözümü zor veya olanaksız olan problemlerin çözümlenebilmesi içinuygun ve en iyi yaklaşım veren yöntemleri bulmak, ayrıca bunlardan anlamlı ve faydalısonuçlar çıkarmaktır. Çözümü istenen problemi tanımlamak ve sonuca varacak yöntemisaptamak genellikle aynı bilim adamının işidir. Bu nedenle problemi tanımlayanın birnümerik analizcinin sahip olduğu bilgilerin en azına sahip olması gerekir. Probleminçözümünde bir takım aşamalardan geçilerek sonuca varılır. Bu aşamalardan ilkiproblemin formüle edilmesidir. Problemler Cebir ve analiz başta olmak üzere değişikmatematik konularından kaynaklanır. Fiziksel bir olayın matematiksel modelininformüle edilmesinde nümerik analizci, problemini bilgisayar ile çözümleyebileceğini gözönünde bulundurmalıdır. Formülasyon yapıldıktan sonra problemin çözümü için hataanalizi ile birlikte nümerik yöntem en iyi yaklaşımla sonuç elde edilecek şekildeseçilmelidir. Nümerik çözüm yöntemi, belirtilen ya da istenilen hassaslıktaki yaklaşımlave belli sayıda ardışık tekrar işlemlerinden sonra matematiksel probleme çözümgetirmelidir. Nümerik analiz sadece çözüm olarak sayılar üretmez, cebirsel ve analitikteorilere önemli katkılarda da bulunur. Nümerik çözüm yöntemleri genellikle öncedensaptanmış aritmetik ve mantıksal işlemlerden oluşur. Bu işlemlerin tümüne çözümalgoritması denir. Algoritma belli sayıda işlemlerden sonra probleme çözüm getirir.Problemin bilgisayar ile çözümünde üçüncü aşama, algoritmanın bilgisayardaçözümünü sağlayacak programlama aşamasıdır. Programlama; C, Pascal, Basic, Cobol,Fortran gibi bilgisayar dillerinden birisi ile yapılır.

6.3.Kullanım Alanları:Nümerik analiz mühendislik ve uygulamalı matematikte önemlidir ve birçok mühendislikbölümünde (makine müh. vb. ) gösterilen bir derstir. Lineer programlama alanında da sıkçakullanılır. Nümerik Analiz olmazsa olmazlardan birisidir. Özellikle bilgisayarların ortaya çıkmasıve yaygın kullanılması bu tekniklerin önemini daha da artırmıştır.Sayısal Çözümlemenin bilgisayarlarla daha doğrusu bilgisayar mühendisliği ve uygulamalımatematik ile olan yakın ilişkilerinden ötürü bu konunun bilgisayar mühendisliği ve matematiğin

29

Page 30: MÜHENDİSLİK PROBLEMLERİNİN BİLGİSAYAR ORTAMINDA SAYISAL ANALİZ YÖNTEMLERİYLE  ÇÖZÜLMESİ

ortak birer dalı olduğu genellikle kabul edilir. Çağımızda kapsamlı realizasyon işlemleribilgisayar aracılığı ile yapıldığı için, kullanılan nümerik metodun etkinliği, genelde bu metodunkesinliğine bağlı olduğu kadar, kullanılan bilgisayarın teknolojik donanımının verdiği kolaylığave bilgisayar programının kalitesine de bağlıdır.İlişkiyi örnekle açıklamak gerekirse uygulamalı matematikçi bir problem çözüm için gerekenmatematiksel modeli kurar. Sayısal çözümleyici de bu modeli bilgisayar yardımıyla sayısal olarakçözer. Kuşkusuz sayısal çözüm sırasında bilgisayar ile ilgili olan programlama dilleri, donanımözellikleri, algoritmik süreçler ve sayısal işlemler kullanılır..6.4.Nümerik metotların dezavantajları1. Numerik analiz sayılar ile bir nevi oyun oynayarak çözüm üretmektir,denilebilir. Oyun genelde kazanılır, fakat kaybedilebilir de! Söylenmek istenenşudur: Çözüm genelde bulunur, ancak bulunamayabilir de.2. Numerik metotların çoğu belli bir hesap kuralının, belki yüzlerce binlercekez, tekrarlanması ile adım adım sonuca varırlar(iterasyon). Bir tek sayınınhesaplanabilmesi için binlerce hatta milyonlarca dört işlem (toplama,çıkarma, çarpma, bölme) gerekir. Bu nedenle el hesaplarına uygun değildir.Bilgisayar, uygun yöntem ve program kullanımı zorunludur. Direkt çözümlerbile milyarlarca dört işlem gerektirir. örneğin, n=10000 bilinmeyenli birdenklem sisteminin Gauss indirgeme yöntemi ile çözümünde yaklaşık2n3/3≈7x1011 (700 milyar!) dört işlem vardır. Sayıların bu denli çok dörtişleme tabi tutulması yuvarlama hatalarının giderek büyümesine neden olur.Peki, bu kadar büyükdenklem sistemi uygulamada karşımıza çıkar mı? Evet, hatta çok dahabüyükleri! Hemen söyleyelim n=374000000 (uç yüz yetmiş dört milyon)bilinmeyenli denklem sistemi günümüzde çözülebilmiştir. Hem de Türkiye’de:http://www.cem.bilkent.edu.tr/world_record3. Numerik çözüm yaklaşıktır, bir miktar kabul edilebilir hata içerir.4. Aynı problemin çözümünde numerik metotların bazıları sonuç verebilir,bazıları veremeyebilir.5. Numerik metotları öğrenmek ve çözüm üretmek için temel matematik vemekanik bilgisi yanında bilgisayar, programlama ve paket yazılım kullanmabecerisi de gerekir. Hem numerik analiz hem de bilgisayar ve programlamadilleri yoğun olarak matrisler ile çalıştığından matris matematiği öğrenilmekzorundadır. Bir yapının numerik metotlar ile hesabı için mukavemet, yapıstatiği ve dinamiği gibi bilgiler de gerekir. Kısacası numerik metotlar klasikbilgiler üzerine inşa edilmiş pratik bir çözüm yoludur, temel bilgiler olmadanbir işe yaramaz.

6.5.Nümerik Analizin Temellerini Atanlar

John Napier (1550-1617), Isaac Newton (1643-1727), Gottfried Leibniz(1646–1716), Leonhard Euler (1707-1783), Joseph-Louis Lagrange (1736-1813), Pierre-Simon-Marquis de Laplace(1749-1827), Karl Friedrich Gauss (1777-1855), James JosephSylvester(1814 -1897).Nümerik analiz yöntemlerinde adı sıkça geçenlerNiels Henrik Abel (1802-1829), Alexander Craig Aitken (1895 - 1967),Bernard Bolzano(1781-1848) George Boole(1815-1864),

30

Page 31: MÜHENDİSLİK PROBLEMLERİNİN BİLGİSAYAR ORTAMINDA SAYISAL ANALİZ YÖNTEMLERİYLE  ÇÖZÜLMESİ

Isaac Barrow(1630-1677), Leonard Bairstow(1880-1963), Augustin LouisCauchy(1789-1857),Pafnuty Lvovich Chebyshev(1821-1894) , Prescott Duran Crout (1907-1984), Mayric Hascall Doolittle(1830-1913), Andre-LouisCholesky(1875-1918), Gabriel Cramer(1704-1752), Roger Cotes(1682-1716), Arthur Cayley(1821-1895), Ferdinand GeorgFrobenius(1849-1917), Leonardo Fibonacci(1170-1250), JosephFourier(1768-1830), Jorgen Pedersen Gram(1850-1916),Hermann Grassmann(1809-1877), Charles Hermite(1822-1901), DavidHilbert(1862-1943), Alston Scott Householder(1904–1993), C. A. R. Hoare(1934 - ), Carl Gustav Jacob Jacobi(1804-1851),Marie Ennemond Camille Jordan(1838-1922), WilhelmJordan(1842-1899), Martin Wilhelm Kutta(1867-1944) , Joseph-LouisLagrange (1736 –1813), Adrien Marie Legendre(1752-1833), Cornelius Lanczos(1893-1974), Richard Edler von Mises(1883-1953), David E. Müller(1924 - ), Lewis FryRichardson(1881-1953), Carl David Tolme Runge(1856-1927), WernerRomberg(1909-2003), Thomas Simpson(1710-1761),Ludwig von Seidel(1821-1896), Erhard Schmidt(1876-1959), JohanFrederik Steffensen (1873–1961), James HardyWilkinson(1919-1986).1930-1945 li yıllarda ilk bilgisayarların ortaya cıkmasıyla numerik analizyontemleri onemkazanmaya başladı. Modern numerik analizin 1947 yılında John Neumann veHermanGoldstine tarafından yayınlanan “Numerical Inverting of Matrices of HighOrder , Bulletin of the AMS, Nov.1947” ile başladığı kabul edilir. Bu yayında yuvarlama hataları ilk kezaraştırılmıştır.Gunumuzde kullanılan numerik analiz yontemlerinin coğu 1950-1970yıllarındageliştirilmiştir.

Bilgisayarların ve programlama dillerinin giderek gelişmesi, devrim yaratanve günümüz vazgeçilmez numerik metodu olan, “Sonlu Elemanlar Metodu-SEM” nun 1960 lı yıllardadoğmasına neden oldu. Bu konudaki ilk yayın: “M. J. Turner, R. W. Clough,H. C. Martin and L. J.Topp, "Stiffness and Deflection Analysis of Complex Structures," J. of Aero.Sci., 23 (9), Sept. 1956”. FiniteElement Method(Sonlu Elemanlar Metodu) adının ilk kullanıldığı yayın:“Clough, Ray W.: Thefinite element method in plane stress analysis. Proceedings, 2nd Conferenceon Electronic Computation, A.S.C.E.Structural Division, Pittsburgh, Pennsylvania, Sept. 1960”. İlk Sonluelemanlar kitabı: O. C. Zienkiewicz, The FiniteElement Method, 1967.

6.6.Sonlu Elemanlar Metodunun ilkleri

31

Page 32: MÜHENDİSLİK PROBLEMLERİNİN BİLGİSAYAR ORTAMINDA SAYISAL ANALİZ YÖNTEMLERİYLE  ÇÖZÜLMESİ

Lord Rayleigh(1842-1919), Boris Grigorievich Galerkin(1871-1945),Walther Ritz(1878-1909), Richard Courant(1888-1972),Alexander Hrennikoff(1896-1984), John Argyris(1913-2004), James HardyWilkinson(1919-1986), Olgierd CecilZienkiewicz(1921-2009), Ray W. Clough, 1920- ), William Prager( 1903-80).

6.7.Sayısal Analizin Belli Başlı Konuları Sonlu Fark Formülleri ve Türev İnterpolasyon ve Ekstrapolasyon Nümerik İntegrasyon Denklem Köklerinin Bulunması Matrisler ve Lineer Denklem Çözümleri Verilere Eğri Uydurma Difesansiyel Denklemlerin Çözümü Özdeğer ve ÖzvektörlerGibi belli başlı konular mevcuttur. Bu konular kendi içlerindede detaylıolarak alt bölümlere ayrılır.

32

Page 33: MÜHENDİSLİK PROBLEMLERİNİN BİLGİSAYAR ORTAMINDA SAYISAL ANALİZ YÖNTEMLERİYLE  ÇÖZÜLMESİ

7.Uygulamalı Sayısal Analiz Örnekleri

Örnek7.1: Bir vinç kolonunun mukavemet hesabını yapan bilgisayarprogramı yazımı ve yazılan programın paket programlara görekarşılaştırılması

Sonlu Farklar Metodu

Yüklenmeden önce eksenleri doğru olan çubuklar, eğildikten sonra eksenleri

eğri haline gelir ve bu eğriye elastik eğri denir.

d 2 y = -M

dx2 EI

Yukarıdaki ifadeye elastik eğrinin diferansiyel denklemi denir. Elastik eğriye

ait diferansiyel denklem ,sonlu farklar (differans) denklemleriyle ifade edilecek olursa ,

problemin çözümünü lineer denklem takımına indirgemek kabil olur. Varılan değer

yaklaşık olmakla beraber çok defa yaklaşıklığın mertebesi uygulama alanı için yeter

gelir. Momentin hesabını ön gören yukarıdaki diferansiyel denklemi ele alalım.

d 2 y = -M (1)

dx2 EI

İfadesinin sol tarafındaki ikinci türevi ,birbirini eşit aralıklarla izleyen, üç

ordinatın farklarıyla şu şekilde ifade edebiliriz:

Burada Dx=h sabiti ayrık noktaların apsis farkından ibarettir (şekil-1).İkinci türev için kabul edilen bu ifadenin yaklaşığı h4 mertebesindedir. Şayety(x) eğrisi 2. dereceden ise (2) ifadesi kesindir. (1) ve (2) ifadesikarşılaştırılacak olursa;

33

Page 34: MÜHENDİSLİK PROBLEMLERİNİN BİLGİSAYAR ORTAMINDA SAYISAL ANALİZ YÖNTEMLERİYLE  ÇÖZÜLMESİ

Şeklinde elastik eğrinin sonlu farklar denklemi kurulmuş olur. Burada Mk momenti, k

kesitine aittir. Bu cebrik denklem uygulanırken şu şekilde hareket edilecektir: Önce bir l

açıklığı h=l/n olacak tarzda n eşit parçaya ayrılacak ve ortaya çıkan n+1

bilinmeyen ordinatı hesaplamak için (3) denkleminde, k=1,2,3...(n+1) noktaları için

ayrı ayrı uygulanacak, n-1 tane lineer denklem elde edilecektir. Eksik kalan iki

denklemi, bize problemin sınır şartları verecek ve bu şekilde problem, belli olacaktır.

Bu anlatılan hesap metoduna uygun olmak üzere şekil-2’ de görülen basit kirişin

ortasındaki çökme istensin. Eğilme moment diyagramının verilmiş olduğunu kabul

edelim.

l açıklığını n=2p gibi çift sayılara bölelim. Bu şekilde h=l/2p olacak demektir. (3)34

Page 35: MÜHENDİSLİK PROBLEMLERİNİN BİLGİSAYAR ORTAMINDA SAYISAL ANALİZ YÖNTEMLERİYLE  ÇÖZÜLMESİ

8.SONUÇ VE ÖNERİLER Bu çalışmada sayısal analizin bilgisayar yardımıyla nasıl kullanılacağına genel olarak

değinilmiştir. Çözümlerin gerçeğe yakın olması uygulanabilirlik olanağını artırmaktadır.Fakat bu çalışma profosyönellik konusunda yetersiz hatta çok basit kalmaktadır. Günümüzdematematiksel modelin görsellikle desteklenmesi ve 3D hale getirilmesi çok önemlidir. Görsellikve 3D tasarımcıya daha iyi anlama kabiliyeti ve problemi daha kolay çözme imkanı sağlar.

Öneri olarak; 3D modelleme ve grafik işlemlerine daha fazla yer verilmeli veprogramlama becerisinden ziyade programın amacına hizmet edip etmemesi dikkat edilmelidir.

35

Page 36: MÜHENDİSLİK PROBLEMLERİNİN BİLGİSAYAR ORTAMINDA SAYISAL ANALİZ YÖNTEMLERİYLE  ÇÖZÜLMESİ

KAYNAKLAR[1] SAYISAL ANALİZ UYGULAMALARI- YRD. DOÇ. DR. NİMETİ DÖNER[2] SAYISAL ANALİZ VE MÜHENDİSLİK UYGULAMALARI-PROF. DR. İRFANKARAGÖZ[3]YAZILIM VE PROGRAMLAMA UYGULAMALARIYLA MÜHENDİSLER İÇİNSAYISAL YÖNTEMLER-STEVEN C. CHARPA & RAYMOND P. CANALE[4] NUMERİK ANALİZ-DOÇ. DR. İBRAHİM UZUN [5] VİSUAL C# NET 2005-PROF. DR. E. ŞAHİN ÇONKUR

36