2. Ö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
3. 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 minnet
duyar teşekkürü borç bilirim.
Ayrıca Hisarlar A.Ş. personelinden Mesut Türker ve İsmail Boztay’a teşekkür ederim
ve Hisarlar A.Ş.’nin en iyi yerlere gelmesini dilerim.
İÇİNDEKİLER
Sayfa
ÖZET
1.VİSUAL C# - GİRİŞ
1.1.Vs.Net Kurulum
1.2.Visual C# Ide
1.2.1.Visual C# IDE bileşenleri;
1.2.2. Form Tasarım Penceresi
1.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.Sabitler
2.2.Değişkenlere Değer Atama
2.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örleri
3.2.1.Koşul Operatörleri
3.2.2.Atama Operatörleri
3
5. 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. Visual
Studio .NET kullanıcılarına, tüm yazılım geliştirme dilleri için ortak bir geliştirme platformu
sunar. İ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 programlama
dilinden diğerine geçtiklerinde geliştirme platformuna alışmakla zaman kaybetmezler. Ek
olarak Visual Studio .NET, proje geliştirirken ihtiyaç duyacağınız her türlü bileşeni
barı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. Visual
Studio .NET kullanıcılarına, tüm yazılım geliştirme dilleri için ortak bir geliştirme platformu
sunar. İ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 programlama
dilinden diğerine geçtiklerinde geliştirme platformuna alışmakla zaman kaybetmezler. Ek
olarak Visual Studio .NET, proje geliştirirken ihtiyaç duyacağınız her türlü bileşeni
barı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: 400Mhz
Ram: 128MB
Disk 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
sistemlerinden
biri.
5
7 ) işletim
7. Lisans sözleşmesi kabul edilir.
Bu adımda programımızı nereye kurulacağı belirlenir
belirlenir.
7
genel olarak C sürücüsü
8. Kurulum Adımları ve durumu gösterilmektedir.
Exit butonuna tıklayarak kurulum tamamlanır.
8
9. New Project penceresini kullanarak yeni bir uygulama açılabilir. Bu pencereyi açmak
iç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 Types
bö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 butonuna
tıklanarak Visual C# IDE açılır.
9
10. 1.2.Visual C# Ide
1.2.1.Visual C# IDE bileşenleri;
Menü Çubuğu
Araç Çubukları
Form Tasarım Penceresi
Araç Kutusu
Properties Penceresi
Solution Explorer Penceresi
Component Tray
olarak sıralanabilir.
MENÜ ÇUBUĞU
Baş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çin
kullanılır.
10
11. 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çin
kullanı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 dinamik
kullanı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ğimiz
formların tasarım pencereleri ve formların kod satırları görüntülenir. Bu pencereler arasında
geçiş yapmak çok kolay ve kullanımı basittir.
1.2.3.Araç Kutusu( Tool Box)
11
12. 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öntemler
vardı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
13. 1.2.4.Proporties Pençeresi
Properties penceresi, özellikler penceresi olarak adlandırılır. Form tasarım modunda iken
kullanı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, metin
boyutu gibi özelliklerdir. Özellikler penceresi dinamik olarak yapılandırılabilir. İstenildiğinde
sınıflandırılabilir, istenildiğinde alfabetik olarak sıralanabilir.
2.VERİ TÜRLERİ
13
14. Programlamada kod satırlarında kullanılacak olan değişkenlerin ya da sabitlerin veri
türlerinin belirlenmesi çok önemlidir. Programcının, kullanıcıdan girmesini istediği bilgilerin
türlerinin belirlenmesi için kullanılır. Veri türleri, özellikle değişkenlerin ve sabitlerin
sayı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 bilgilerini
iç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. Bir
byte’lık yer işgal eder. Bu tipler Visual C#'ta (CTS-Common Type
System) 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 olarak
kullanı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 olarak
kullanı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 olarak
kullanı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 olarak
kullanı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. TrueFalse ya da
YesNo 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 bilgilerini
içerir .NET'te (CTS-Common Type System) System DatetTime olarak
kullanılır. System.DateTime tarih;
Char: Karakter Bilgileri içerir. Bu tür veriler 2baytlık yer işgal eder. En fazla
65535 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 (CTS14
15. Common Type System) System.String olarak kullanılır. Örnek: string
FirmaAdi;
2.1.Değişken ve Sabitler
Değ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şkenler
Değişkenler geçici bilgi alanlarını ifade etmek için kullanılır. Program çalıştığında adı geçen
değ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. Her
programlama 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 ve
sonucu 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. Metin
kutuları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ştirilen
program.
private void button1_Click_1(object sender, EventArgs e)
15
16. {
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.Sabitler
Sabitler 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ştirilen
program.
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şkene
aktarılacağını ifade etmektedir. Örneğin yas isimli bir değişkene 22 değeri;
int yaş;
yas=22;
ya da
int a,b;
a=b+1;
gibi değer atamada yapılabilir.
2.3.Değişkenlerde Tip ve Dönüşümleri
Uygulama içinde kullanılan değişkenlerin türlerini birbirlerine dönüştürmek için
kullanılan
yöntemdir. Tip dönüşümü için kullanılan fonksiyonlar şunlardır.
Convert.ToInt32 İfadeyi yuvarlatarak tam sayıya dönüştürür
Convert.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
17. Convert.ToString İfadeyi stringe çeviri
Convert.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.ToString
dö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üne
dönüştürülmüştür. Programın çıktısı: 345’tir. Çünkü ondalık değeri tam sayıya
yuvarlanmıştır. Tanımlanan sayi isimli değeri 345.525 ise, 346 tamsayıyı değerine
yuvarlayacaktır.
17
18. 3.OPERATÖRLER (İŞLEÇLER)
Operatörler, değişkenler ve sabitler üzerinde aritmetik, string, karşılaştırma, koşul ve
atama işlemleri yapan simgelerdir.
3.1.Aritmetik Operatörler
Aritmetik operatörler; toplama, çıkarma, çarpma ve bölme işlemlerini yapan
operatörlerdir. Yönelik operatörler olarak bilinir. Bu operatörlerdeki işlem öncelik
sı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ğerinin
hesaplandığı 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ığında
iş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
19. 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ğerinin
hesaplandığı 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+"KDV
ORANININ GENEL TOPLAM DEĞERİ"+ GenelToplam);
}
Yukarıdaki kod satırı; genel toplam değerinin hesaplayan ve bu değeri string
operatö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 YIL
ifadelerini 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örleri
Bu 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örlerin
sonucun doğru çıkması durumda True yani –1, yanlış çıkması durumunda False yani 0
değ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şit
int Sonuc, A, X, Y;
Sonuc = ( 3 < 5 ); Sonuc = -1
Sonuc = ( 7 > 9 ); Sonuc = 0
Sonuc = ( 10 <= Math.Sqrt (100) ); Sonuc = -1
A^2 < 10; a'nın karesi 10'dan küçük ise
19
20. 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ğil
if (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, atama
operatö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ğer
operatö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
21. 4.PROGRAM DENETİM DEYİMLERİ
Program denetim deyimleri; bir veya daha fazla deyimin belirli koşul sağlandığında
yürütülmesi için kullanılır. Birden fazla koşulun birleştirilip tek bir koşul olarak
değ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ürse
yani "doğru" ise Then kelimesini takip eden deyimler işlem görecektir. Eğer koşul
gerç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ıya
bildiren 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 da
büyük olması koşulunu kontrol etmektedir.
If deyimini aşağıda gösterilen biçimde iç içe olarak ta kullanmak
21
22. 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 bu
kez Else lf deyimi içindeki koşul göz önüne alınacaktır. Eğer bu koşul "doğru" ise
hemen 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’lik
sisteme ç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
23. 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 Case
deyimleri içindeki yer alan listelerde aranacaktır. Örneğin, söz konusu değer ilk
Case 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 default
deyimini işleyen deyimler işlem görecektir.
Örnek 4.3: Haftanın gününü sistemden okuyan ve ona uygun mesajı kullanıcıya
ileten 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
24. 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 mesajla
iletilmiş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 Continue
deyimleridir.
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. Bu
deyim;
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’a
ekleyen 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’a
ekleyen, sayaç 10’a geldiğinde break ile for döngüsünden çıkılan program.
private void Form1_Load(object sender, EventArgs e)
{
24
25. 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 mesajbox
dialog 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 elde
ederek listbax’a eklemektedir.
4.3.2.While Döngüsü
Belirli bir koşulun gerçekleşmesi sonucunda bazı deyimleri söz konusu ise
While.. döngülerinden yararlanılır. Koşul olumlu olduğu sürece çevrim yinelenir. İki
veya daha fazla koşul mantıksal operatörler ile birleştirilir.
Bu deyim;
While( koşul )
25
26. {
Deyimler;
};
biçimde tanımlanmaktadır. Koşulun gerçekleşmemesi durumunda ise döngü terk
edilir.
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şul
sı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öriyel
Giriniz",
"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
27. 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ından
tanımlanmış fonksiyonlardır. Her fonksiyon çalıştırıldığında geriye mutlaka bir değer döndür ve
kullanı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, bu
hesaplama 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ğer
dö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 örnek
verilmiş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
28. 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 dili
kullanı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 bir
eğ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 noktaya
Sayısal Çözümleme, diğer adıyla Nümerik Analiz devreye girer. Çünkü çözüm başlı başına bir
problemdir. Zaten, matematik yıllar içinde geliştikçe, çözüm yapabilmek için Nümerik Analiz
yö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 çözmek
için kullanılan yöntemler bütünüdür. Diğer bir tanımla nümerik analiz istenen matematiksel
28
29. 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 yer
almaktadır. Bunun açık bir kanıtı olarak; bundan yaklaşık 3700 yıl önce, Babilliler’in ikinci
dereceden bir denklemin köklerinin nasıl bulunabileceğini, tam sayıların kareköklerinin yaklaşık
olarak nasıl hesaplanabileceğini ve bileşik faizle ilgili bazı problemlerin lineer enterpolasyon
yö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 denklem
sistemlerinin çözümüyle ilgi bir örnekte matris gösteriminin kullanılmış olduğu bazı Çinli
kaynaklarda ifade edilmektedir. Yine, bazı Çinli matematikçilerin (960‐1279) yılları arasında
yüksek dereceli denklemlerin nümerik çözümü için, iteratif yaklaşma yöntemini
genelleştirdiklerine ilgili kaynaklarda rastlamak mümkündür. Bir diğer durum; bundan yaklaşık
900 yıl önce yaşamış olan Ömer Hayyam’ın üçüncü dereceden denklemlerin çözümüyle ilgili
araştırmalar yaptığı, yayınlamış olduğu kendi eserinde yer almaktadır. İskoçyalı John Napier
1614 yılında logaritma tablolarını düzenleyerek yayınlamış ve neticede birçok hesaplamalar için
kullanılabilecek
bir
hesaplama
aracı
hizmete
sunmuştur.
Bugün dahi nümerik analiz konusunun sınırları diğer bazı disiplinlerin aksine kesin olarak
belirlenmemektedir. Nümerik Analiz teriminin 1950 yıllarından sonra daha yaygın olarak
kullanı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çin
uygun 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öntemi
saptamak genellikle aynı bilim adamının işidir. Bu nedenle problemi tanımlayanın bir
nü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 ilki
problemin formüle edilmesidir. Problemler Cebir ve analiz başta olmak üzere değişik
matematik konularından kaynaklanır. Fiziksel bir olayın matematiksel modelinin
formü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 hata
analizi ile birlikte nümerik yöntem en iyi yaklaşımla sonuç elde edilecek şekilde
seçilmelidir. Nümerik çözüm yöntemi, belirtilen ya da istenilen hassaslıktaki yaklaşımla
ve belli sayıda ardışık tekrar işlemlerinden sonra matematiksel probleme çözüm
getirmelidir. Nümerik analiz sadece çözüm olarak sayılar üretmez, cebirsel ve analitik
teorilere önemli katkılarda da bulunur. Nümerik çözüm yöntemleri genellikle önceden
saptanmış aritmetik ve mantıksal işlemlerden oluşur. Bu işlemlerin tümüne çözüm
algoritması 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ühendislik
bölümünde (makine müh. vb. ) gösterilen bir derstir. Lineer programlama alanında da sıkça
kullanı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
30. ortak birer dalı olduğu genellikle kabul edilir. Çağımızda kapsamlı realizasyon işlemleri
bilgisayar aracılığı ile yapıldığı için, kullanılan nümerik metodun etkinliği, genelde bu metodun
kesinliğine bağlı olduğu kadar, kullanılan bilgisayarın teknolojik donanımının verdiği kolaylığa
ve
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 gereken
matematiksel 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 binlerce
kez, tekrarlanması ile adım adım sonuca varırlar(iterasyon). Bir tek sayının
hesaplanabilmesi 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ümler
bile milyarlarca dört işlem gerektirir. örneğin, n=10000 bilinmeyenli bir
denklem sisteminin Gauss indirgeme yöntemi ile çözümünde yaklaşık
2n3/3≈7x1011 (700 milyar!) dört işlem vardır. Sayıların bu denli çok dört
işleme tabi tutulması yuvarlama hatalarının giderek büyümesine neden olur.
Peki, bu kadar büyük
denklem sistemi uygulamada karşımıza çıkar mı? Evet, hatta çok daha
bü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_record
3. 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 ve
mekanik bilgisi yanında bilgisayar, programlama ve paket yazılım kullanma
becerisi de gerekir. Hem numerik analiz hem de bilgisayar ve programlama
dilleri yoğun olarak matrisler ile çalıştığından matris matematiği öğrenilmek
zorundadı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 klasik
bilgiler üzerine inşa edilmiş pratik bir çözüm yoludur, temel bilgiler olmadan
bir 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), JosephLouis Lagrange (1736-1813), Pierre-Simon-Marquis de Laplace(17491827), Karl Friedrich Gauss (1777-1855), James Joseph
Sylvester(1814 -1897).
Nümerik analiz yöntemlerinde adı sıkça geçenler
Niels Henrik Abel (1802-1829), Alexander Craig Aitken (1895 - 1967),
Bernard Bolzano(1781-1848) George Boole(1815-1864),
30
31. Isaac Barrow(1630-1677), Leonard Bairstow(1880-1963), Augustin Louis
Cauchy(1789-1857),
Pafnuty Lvovich Chebyshev(1821-1894) , Prescott Duran Crout (19071984), Mayric Hascall Doolittle(1830-1913), Andre-Louis
Cholesky(1875-1918), Gabriel Cramer(1704-1752), Roger Cotes(16821716), Arthur Cayley(1821-1895), Ferdinand Georg
Frobenius(1849-1917),
Leonardo
Fibonacci(1170-1250),
Joseph
Fourier(1768-1830), Jorgen Pedersen Gram(1850-1916),
Hermann Grassmann(1809-1877), Charles Hermite(1822-1901), David
Hilbert(1862-1943), Alston Scott Householder(1904–
1993), C. A. R. Hoare(1934 - ), Carl Gustav Jacob Jacobi(1804-1851),
Marie Ennemond Camille Jordan(1838-1922), Wilhelm
Jordan(1842-1899), Martin Wilhelm Kutta(1867-1944) , Joseph-Louis
Lagrange (1736 –1813), Adrien Marie Legendre(17521833), Cornelius Lanczos(1893-1974), Richard Edler von Mises(18831953), David E. Müller(1924 - ), Lewis Fry
Richardson(1881-1953), Carl David Tolme Runge(1856-1927), Werner
Romberg(1909-2003), Thomas Simpson(1710-1761),
Ludwig von Seidel(1821-1896), Erhard Schmidt(1876-1959), Johan
Frederik Steffensen (1873–1961), James Hardy
Wilkinson(1919-1986).
1930-1945 li yıllarda ilk bilgisayarların ortaya cıkmasıyla numerik analiz
yontemleri onem
kazanmaya başladı. Modern numerik analizin 1947 yılında John Neumann ve
Herman
Goldstine tarafından yayınlanan “Numerical Inverting of Matrices of High
Order , Bulletin of the AMS, Nov.
1947” ile başladığı kabul edilir. Bu yayında yuvarlama hataları ilk kez
araştırılmıştır.
Gunumuzde kullanılan numerik analiz yontemlerinin coğu 1950-1970
yıllarında
geliştirilmiştir.
Bilgisayarların ve programlama dillerinin giderek gelişmesi, devrim yaratan
ve günümüz vazgeçilmez numerik metodu olan, “Sonlu Elemanlar MetoduSEM” nun 1960 lı yıllarda
doğ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”. Finite
Element Method(Sonlu Elemanlar Metodu) adının ilk kullanıldığı yayın:
“Clough, Ray W.: The
finite element method in plane stress analysis. Proceedings, 2nd Conference
on Electronic Computation, A.S.C.E.
Structural Division, Pittsburgh, Pennsylvania, Sept. 1960”. İlk Sonlu
elemanlar kitabı: O. C. Zienkiewicz, The Finite
Element Method, 1967.
6.6.Sonlu Elemanlar Metodunun ilkleri
31
32. 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 Hardy
Wilkinson(1919-1986), Olgierd Cecil
Zienkiewicz(1921-2009), Ray W. Clough, 1920- ), William Prager( 190380).
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örler
Gibi belli başlı konular mevcuttur. Bu konular kendi içlerindede
olarak alt bölümlere ayrılır.
32
detaylı
33. 7.Uygulamalı Sayısal Analiz Örnekleri
Örnek7.1: Bir vinç kolonunun mukavemet hesabını yapan bilgisayar
programı yazımı ve yazılan programın paket programlara göre
karşı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.
d2 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.
d2 y = -M
dx2
(1)
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şığı h 4 mertebesindedir. Şayet
y(x) eğrisi 2. dereceden ise (2) ifadesi kesindir. (1) ve (2) ifadesi
karşılaştırılacak olursa;
33
34. Şeklinde elastik eğrinin sonlu farklar denklemi kurulmuş olur. Burada M k 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.
34
l açıklığını n=2p gibi çift sayılara bölelim. Bu şekilde h=l/2p olacak demektir. (3)
35. 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üzde
matematiksel modelin görsellikle desteklenmesi ve 3D hale getirilmesi çok önemlidir. Görsellik
ve 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 ve
programlama becerisinden ziyade programın amacına hizmet edip etmemesi dikkat edilmelidir.
35
36. 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. İRFAN
KARAGÖZ
[3]YAZILIM
VE PROGRAMLAMA UYGULAMALARIYLA MÜHENDİSLER İÇİN
SAYISAL 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