mat 307-nÜmerik anal˙ iz˙ matlab uygulamalari · 2019-12-23 · yapıldıgında˘ matlab1...

142
MAT 307-NÜMER ˙ IK ANAL ˙ IZ MATLAB UYGULAMALARI Dr. Aysun Tezel Özturan 18 Aralık 2019

Upload: others

Post on 15-Jul-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

MAT 307-NÜMERIK ANALIZMATLAB UYGULAMALARI

Dr. Aysun Tezel Özturan

18 Aralık 2019

Page 2: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz
Page 3: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

Içindekiler

Tesekkür iii

Ön Söz v

1 MATLAB’A GIRIS 1

2 Lineer Denklem Sistemleri 69

3 Sayısal Türev 73

4 Sayısal Integral 85

5 Kısmi Diferansiyel Denklemler 97

v

Page 4: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz
Page 5: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

1 MATLAB’A GIRIS

Bilgisayarlar ve Programlama

Bilgisayarlar, verilen girdi degerlerini belirtilen yöntemlerle isleyerek isteni-len sonuçları üretirler. Islenecek veriler ve kullanılcak yöntemler bilgisayaraprogram ile bildirilir. Program girdi degerlerini kullanarak istenilen çıktı de-gerlerinin elde edilebilmesi için bilgisayara iletilen komutlar dizisidir. Egerprogramdaki çözüm yolu yanlıs ise bulunacak sonuçlar da yanlıs olur. Hangisayısal yöntemin problem için uygun olacagı belirlenmelidir. Problem çok ka-rısık ve uzun ise parçalara bölünür, her parça için ayrı bir program yazılırve yazılan programlar bagımsız olarak çalıstırılır. Eger parçalar dogru çalı-sıyorsa birlestirilir ve sonuca ulasılır. Bazı program dilleri Fortran, C, C++,MATLAB, MATHCAD, MAPLE, Mathematica vb. Bu bölümde MATLAB prog-ram uygulamalarını gösterecegiz.

Problemin çözümünde izlenen adımlar dizisine algoritma denir. Algoritma,bilgisayara ögretilen islem basamaklarıdır. Bilgisayarda bir problem çözülür-ken neredeki ve hangi giris degerleri kullanılacak, bunlar hangi yöntemlerleislenecek, ne tür sonuçlar üretilecek ve bu sonuçlar nerede gösterilecek, so-nuçlar saklanacak mı gibi adımların hepsinin öncelikli olarak belirlenmesigerekir. Algoritma hazırlandıktan sonra istenilen programlama dilinin komut-ları ile program kodlanır. Program yazılırken iki türlü hata yapılabilir.

1. Yazım hatası: Programlama dilinin kurallarına uygun komut yazılmadıgıdurumlarda ortaya çıkar.

2. Mantık hatası: Komutlar dogru yazılsa da denklem kodlamaları yanlıs ak-tarılırsa ortaya çıkar.

Bilgisayar programları ile gerçeklestirilen islemler 3 ana gruba ayrılır.

1. Aritmetik Islemler: Toplama, çıkarma, çarpma, bölme islemleri yapılır, is-lemlerin öncelik sıraları önemlidir. Ondalıklı sayılar için bilgisayar dilinde ′.′

isareti kullanılır.

2. Karsılastırma Islemleri: Iki büyüklükten hangisinin büyük ya da küçük ol-dugu iki degiskenin birbirine esit olup olmadıgı gibi konulara program kararverebilir.

3. Mantıksal Islemler: Temel mantık islemleri ve, veya, degil yapılabilir. Prog-ramlarda karsılastırma islemlerinde birden fazla kosulun belirli bir özellikte

1

Page 6: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

MATLAB’A GIRIS

saglanması istenebilir. Mantıksal islem operatörleri islemlerin öncelik sıra-sına dikkat edilerek konur.

MATLAB, MATrix LABoratory sözcüklerinin ilk üç harfleri kullanılarak eldeedilir. MATLAB matematik ve özellikle matris esaslı bir paket programlamadilidir. MATLAB 1985’lerde gelistirilmeye baslanmıs bir programdır. MATLAByüksek seviyeli bir programla dilidir, aynı zamanda verilerin görsellestiril-mesi, veri analizi ve sayısal hesaplamalar için etkilesimli bir yazılım paketidir.Içerdigi ’toolbox’ (alet kutusu) adı verilen paket aracılıgıyla kontrol tasarımı,test ve ölçüm, finansal modelleme ve analiz, optimizasyon gibi bir çok alandakullanılmaktadır.

MATLAB tüm mühendislik alanlarında, sayısal hesaplamalarda, veri çözüm-lenmesinde ve grafik islemlerinde kolaylıkla kullanılabilen bir programlamadilidir. MATLAB’ın hazır fonksiyonları sayesinde Fortran ve diger program-lama dillerine göre daha az sayıda komutlarla çözüm üretilebilmektedir. MAT-LAB m-dosyaları olarak bilinen pek çok sayıda fonksiyon dosyalarından (altprogramlardan) ibarettir.

MATLAB temelde sayısal ve analitik olarak matematiksel fonksiyonların ifa-delerinin kullanıldıgı basta mühendislik alanında olmak üzere sayısal ana-liz yöntemlerini kullanan bilimlerde son yıllarda oldukça sık kullanılan birhazır yazılım paketidir. Özellikle yüksek performans gerektiren algoritma ha-zırlama ve gelistirme, sayısal analiz, benzetim, mühendislik problemlerininsayısal ve grafik çözüm tekniklerinde son derece etkindir.

MATLAB programında islemleri yapmak için temel iki yöntem vardır. Ilk ola-rak Komut penceresinde islemleri yapabiliriz veya bir M-dosyası açıp komut-ları oraya yazabiliriz. M-dosyaları MATLAB ortamında kullanılan komutlardırve veri analizini saglayan fonksiyonlardır. Bu fonksiyonlar her amaca yeterliolsa da sonuçlara daha hızlı ulasabilmek için kullanıcıya özel fonksiyonlaryani yeni M-dosyaları olusturulabilir. Çesitli yollarla bu M-dosyalarını ha-zırlanabilir. Ya bir komutlar dizisi sayesinde sonuca ulasılır ya da functionkelimesiyle baslayan bir fonksiyonel dosya olusturulur. Önemli olan istenilensonucu kısa zamanda verebilmesidir. M-dosyası olusturmak için ilk yol ’File’menüsünden ’New’ alt menüsü içeriklerinden M-file seçenegini seçmektir, buseçimle istenilen alan olusturulmus olur. Baska bir yol ise Command Windowda ’Edit’ yazarak olusturmaktır.

Ardından kullanıcı amacına uygun bir program ya da fonksiyon yazabilir.Simdi Komut penceresine yazılan bazı basit komutlarla hangi islemleri yapa-bilecegimizi görelim.

MATLAB ile yapılabilecek bazı islemler sunlardır.

1. Matematiksel Islemler: Gelismis özellikleri olan bir hesap makinesi, kar-masık hesapları ve matris islemlerini çok kısa sürelerde yapabilir.

2

Page 7: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

MATLAB’A GIRIS

2. Sayısal Islemler: Integral, türev, cebirsel ve diferansiyel denklemler gibiproblemleri çok kısa sürelerde hesaplar.

3. Simgesel Islemler: Yine integral, türev veya diferansiyel denklemlerin çö-zümü simgesel alet kutusu (symbolic toolbox) kullanılarak kolayca yapıla-bilir. Sayısal islemlerden farkı burada problemler analitik olarak çözülür veproblemin tam sonucuna ulasılır.

4. Grafikler: Sayısal verilerin veya fonksiyonların çesitli grafikleri Grafik aletkutusu (Figure toolbox) kullanılarak iki veya üç boyutlu olarak kolayca çizilir.

5. Veri Analizi yapılabilir.

6. Benzetim (Simulasyon) ve Model Olusturma: Simulink alet kutusu (Si-mulink toolbox) kullanılarak çok karmasık problemlerin modelleri kolaycakurulup çözülebilir.

7. Optimizasyon: Verilen fonksiyonunun en büyük veya en küçük degerlerioptimizasyon alet kutusu ile bulunabilir.

8. Istatistiksel Hesaplamalar: Bunlar için istatistik alet kutusu (statistic to-olbox) vardır.

MATLAB penceresi 5 alt bölümden olusur. Kullanıcının istegine göre pence-reler azaltılabilir.

Çizim matlab penceresi fotografı

MATLAB’ın kendi kütüphanelerinde pek çok tanımlı fonksiyon vardır. Bufonksiyonlar kullanılarak veya kullanıcı tarafından olusturulan M-dosyalarıkullanılarak pek çok islem yapılabilir.

MATLAB’da komut penceresinde yapılan islemlerin kaydı içinn diary ko-mutu kullanılır.

>> diary matlab1>> 3+5ans = 8

yapıldıgında 3 + 5 = 8 islemi matlab1 dosyasına kaydedilir. Bu dosya Cur-rent Directory kısmına kaydedilir. Kayıttan çıkmak için diary off komutukullanılır.

>> diary matlab1>> 3+5ans = 8>> diary off

3

Page 8: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

MATLAB’A GIRIS

yapıldıgında matlab1 dosyası kapatılmıs olur. Bundan sonra yapılacak is-lemler kayıt altına alınmaz.

Temel Matematiksel Islemler

Bu program yardımıyla birçok matematiksel islem kolayca yapılabilir.

>> 3^4ans =81>> sqrt(3)ans = 1.7321>> log(1)ans = 0>> sin(pi/2)ans =1

Matematiksel islemlerden önce asagıdaki komutlar kullanılırsa olusacak so-nucun gösterim formatı degistirilebilir.

format long: Sonucun 14 ondalık haneye kadar rakamları gösterilir.

>> format long>> pians =3.141592653589793

format short: Sonucun 4 ondalık haneye kadar rakamları gösterilir.

>> format short>> pians =3.1416

format long e: Sonucu 14 ondalıklı olarak e gösterimi ile gösterir.

>> format long e>> pians =3.141592653589793e+000

format short e: Sonucu 4 ondalıklı olarak e gösterimi ile gösterir.

>> format short e>> pians =3.1416e+000

4

Page 9: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

MATLAB’A GIRIS

MATLAB’da islem önceligi önemli bir konudur. Islem önceligi su seklidedir:

1. Parantezler (içeriden dısarıya dogru)

2. Üs alma

3. Çarpma ve bölme (soldan saga)

4. Toplama ve çıkarma (soldan saga)

Bazı örneklerle islem önceligine bakalım.

>> (5*2)+3ans =13>> 5*(2+3)ans =25>> 5*2+3ans =13>> (8/2)-3ans =1>> 8/(2-3)ans =-8>> 8/2-3ans =1>> 2+6/10ans =2.6000>> 2+3^2ans =11

Temel trigonometrik fonksiyonlar: cos, sin, tan, sec, csc, cot

Trigonometrik fonksiyonların tersleri: acos, asin, atan, asec, acsc, acot

Üstel fonksiyon: exp(x), x reel sayı

Dogal logaritma fonksiyonu: log(x), x pozitif reel sayı

Mutlak deger fonksiyonu: abs(x), x reel sayı

Faktöriyel fonksiyonu: factorial(n), n pozitif tam sayı

Hiperbolik fonksiyonlar: sinh, cosh

Isaret fonksiyonu: sign, x pozitifse 1, sıfır ise 0, negatifse −1 degerini verir.

>> sign(-6)ans =-1

MATLAB da hazır fonksiyonları ile ilgili bilgi alınmak istenirse help komutukullanılır. Örnegin log komutu ile ilgili bilgi istiyorsak

5

Page 10: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

MATLAB’A GIRIS

>> help logLOG Natural logarithm.LOG(X) is the natural logarithm of the elements of X.Complex results are produced if X is not positive.See also log1p, log2, log10, exp, logm, reallog.Overloaded methods:gf/logcodistributed/logfints/logReference page in Help browserdoc log

Degiskenler

Tüm yazılabilir karakterler (Türkçe karakterler dısında) degisken olarak ata-nabilir ve ’=’ olarak verilir.

>> x=5x = 5

Degisken isimleri büyük ve küçük harf ayrımına hassastır. X ve x degiskenleriayrı olarak tanımlanabilir.

>> x^2-3*x+8ans = 18>> cos(x)ans =0.2837

Yeni bir ifade için bir önceki degisken kullanılabilir. Her islem sonucu bellektesaklanır.

>> x=4;>> y=5*xy = 20>> x=x+5x =9

who, komutu kullanılan degisken isimlerini verir.

>> whoYour variables are:x y

6

Page 11: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

MATLAB’A GIRIS

whos, komutu degiskenlerin boyut bilgisini verir.

>> whosName Size Bytes Class Attributesx 1x1 8 doubley 1x1 8 double

Bellekteki degiskenleri silmek için clear degisken adı seklinde komut kul-lanılır. Örnegin x degiskenini silmek istiyorsak clean x yazarız. Eger tümdegiskenler silinmek isteniyorsa clean all komutu kullanılır. Eger komutpenceresindeki tüm komutlar silinmek isteniyorsa ’clc’ komutu kullanılır.Ancak bu komutla sadece komut penceresi temizlenmis olur, hafızadaki de-giskenler silinmez.

MATLAB programında bazı degisken isimleri önceden tanımlanmıstır.

ans, Inf, pi, eps degisken isimleri tanımlıdır.

ans: MATLAB herhangi bir islemin sonucunu herhangi bir degisken atanma-mıssa sonucu ans isimli degiskene atar.

>> 7*8-6ans = 50>> ansans =50

Inf: Sonsuz için kullanılır. Örnegin 1/0 bölümü bize sonsuzu verir.

>> 1/0ans =Inf

pi: π sayısı için kullanılır.

>> pians =3.1416>> format long>> pians =3.141592653589793

eps: Sıfıra yakın bir sayı olarak kullanılan ε için kullanılır. Tanımlanmıs de-geri ε = 2.2204e− 016

>> epsans =2.2204e-016

7

Page 12: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

MATLAB’A GIRIS

Nan: Herhangi bir sayıya esit olmayan ifadeler için kullanılır. (Not a number)Örnegin 0/0 bir belirsizliktir ve herhangi bir sayıya esit degildir.

>> 0/0ans =NaN

MATLAB programında % isaretinden sonra yazılan yazılar kod olarak algılan-maz. % isaretinden sonra açıklayıcı ifadeler yazılabilir.

>> x=5; %x degiskenine 5 degeri atanmıstır.

Iliskisel Operatörler

Operatör Anlamı Örnek> ...den küçük 5 < 8

> ...den büyük 9 > 3

≤ ...den küçük veya esit 5 ≤ 8

≥ ...den büyük veya esit 9 ≥ 3

== esit 9 == 9

∼= esit degil 3 ∼= 5

Eger sonuç dogru ise cevap 1 yanlıs ise cevap 0 olarak alınır.

>> 5<8ans =1>> 5>8ans =0>> 9==9ans =1

Mantıksal Operatörler

A ve B mantık önermeleri olmak üzere asagıdaki mantıksal operatörler ta-nımlıdır.

Operatör Simge Örnek& ve A & B| veya A|B

~ veya not degil ~ A

| (veya): Eger verilen kosullardan biri dogru ise sonuç dogru olur, hepsi yanlısise sonuç yanlıstır.

8

Page 13: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

MATLAB’A GIRIS

& (ve): Eger verilen ifadelerin tamamı dogru ise sonuç dogru bir tanesi yanlısise tamamı yanlıstır.

~ (degil) Verilen kosulun tersi alınır. Yani dogru ise yanlıs, yanlıs ise dogruyapar.

>> a=1; b=2; c=3;>> a>b | c>bans =1

Burada a>b yanlıs, c>b dogru bir ifadedir. Arada veya oldugu için sonuçdogrudur.

>> a>b & c>bans =0

Aynı ifade & (ve) ile kullanıldıgında sonuç yanlıs olur.

>> not(a>b & c>b)ans =1

Aynı ifadenin önüne not degil operatörü getirildiginde önceki ifade yanlısoldugundan degili, dogru olmustur.

>> a>b | (a>b & c>b)ans =0

Üç ifade vardır, önce parantez içi sonuçlanır. Parantez içi yanlıstır, a>b ifade-side yanlıs oldugu için, veya operatör sonucu yanlıstır, yani sıfırdır.

Eger ikiden fazla kosul ifadesi parantez kullanılmadan birlestirilirse kosullarislem önceligine göre sıralanır. Islem sırası ~, & ve | seklindedir.

Vektör Olusturma

MATLAB programında vektör olusturma 3 yolla yapılabilir.

1. Dogrudan: köseli parantez kullanılır:

>> v=[1 7 -9 3]v =1 7 -9 3

Burada v satır vektörü olusturulmustur.

9

Page 14: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

MATLAB’A GIRIS

>> v=[1;7;-9;3]v =17-93

Burada v sütun vektörü olusturulmustur.

2. Esit aralıklı elemanlar kullanarak:

: iki nokta üst üste isaretiyle vektör elemanları sabit miktarda artan veyaazalan degerler alarak vektör olusturulabilir.

>> v=1:4v =1 2 3 4

v vektörü 1 den baslayıp 4 e kadar tamsayıları verir. Genel olarak

v=a:h:b

burada h artıs miktarıdır, a ve b noktaları arasında h artıs miktarı ile noktalarolusturulur. Artıs miktarı h istenildigi gibi alınabilir, alınmazsa 1 birim olarakkabul edilir.

>> v=1:2:7v =1 3 5 7

v vektörü 1 den baslayıp 2 artıs miktarı ile 7 ye kadar olan sayılardan olus-mustur.

3. linspace veya logspace komutlarıyla:

Bu durumda baslangıç ve bitis noktaları arasında kaç nokta olacagı belirle-nir.

v=linspace(a,b,n)

burada n istenen nokta sayısıdır. Bu komutla v vektörünün elemanları ave b noktaları arasında esit aralıklı n noktadır. Eger n belirtilmezse a ve bnoktaları arasında esit aralıklı 100 nokta alınır.

>> v=linspace(1,2,5)v =1.0000 1.2500 1.5000 1.7500 2.0000

10

Page 15: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

MATLAB’A GIRIS

v=logspace(a,b)

komutu ile 10a ve 10b arasında 50 tane logaritmik olarak esit aralıklı noktalarolusturur.

v=logspace(a,b,n)

komutu ile 10a ve 10b arasında n tane logaritmik olarak esit aralıklı noktalarolusturur.

4. Özel fonksiyonlar kullanarak: (rand, randn, ones, zeros)

rand: Bu komut ile 0 ile 1 arasında rasgele bir reel sayı üretir.

v=a+(b-a)*rand(m,n)

a ve b arasında esit olarak dagıtılmıs rasgele sayılardan olusan m× n matrisüretir. Satır vektöründe m = 1 sütun vektöründe n = 1 olur.

rand veya randn fonksiyonları bazı durumlarda yalnızca bir özelligi veya birseyi denemek ve durumunu gözlemek için rasgele sayılardan olusmus birmatris olusturmak için kullanılır. rand düzenli olarak dagılmıs randn isenormal olarak dagılmıs rasgele sayı üretir.

Örnegin; a = 2 ile b = 8 arasında rasgele sayılı 1×5 bir vektör üretmek istenirse

>> v=2+6*rand(1,5)v =6.8883 7.4348 2.7619 7.4803 5.7942

Vektörlerle ilgili özel islemler yapan hazır fonksiyonlar vardır.

>> v=[4 7 9 11 3 5 8]v =4 7 9 11 3 5 8>> min(v) %vektörün en küçük elemanını bulur.ans =3>> max(v) %vektörün en büyük elemanını bulur.ans =11>> mean(v) %elemanların ortalamasını bulurans =6.7143>> sum(v) %elemanların toplamını bulurans =47>> length(v) %vektörün uzunlugunu bulurans =7>> prod(v) %elemanların çarpımını bulurans =332640>> sort(v) %elemanları küçükten büyüge sıralarans =3 4 5 7 8 9 11

11

Page 16: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

MATLAB’A GIRIS

Karmasık Sayılar

Genel formatı a+ ib, a− ib olan ifadelerdir.

>> 3-2ians = 3.0000 - 2.0000i

Karmasık sayıların tanımında complex fonksiyonu da kullanılabilir. Bu fonk-siyon karmasık sayının gerçel ve sanal kısımlarını verir.

>> x=3; y=4;>> complex(x,y)ans = 3.0000 + 4.0000i

Karmasık Sayı islemleri

abs: Mutlak deger alır (Genlik bilgisi).

angle: Faz açısı.

conj: Karmasık eslenik.

imag: Karmasık sanal kısım.

real: Karmasık gerçel kısım.

Temel Istatistiksel Islemler

Özellikle gürültü gibi stokastik veriler üzerinde yapılacak analizler ve deger-lendirilmeler için istatistiksel yöntemleri MATLAB da kullanmak mümkün-dür. Bilinen en temel komutlar;

max: Veri kümesindeki en büyük degeri bulur.

min: Veri kümesindeki en küçük degeri bulur.

length: Küme içinde kaç eleman oldugunu verir.

sum: Kümenin içindeki elemanların toplamını verir.

prod: Verilerin çarpımını hesaplar.

median: Verilerin ortanca degerini hesaplar.

std: Standart sapma.

mean: Ortalama deger ya da aritmetik ortalama.

geomean: Geometrik ortalama.

harmmean: Harmonik ortalama.

sort: Küme elemanlarını azalan sırada hazırlar.

12

Page 17: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

MATLAB’A GIRIS

Yuvarlatma Islemleri

fix(x): x’in sıfıra dogru en yakın tamsayısını verir.

>> fix(3.44)ans =3

floor(x): x’ ten küçük veya esit en yakın tam sayıya dogru yuvarlatır.

>> floor(5.21)ans =5

ceil(x): x’ten büyük veya esit en yakın tam sayıya dogru yuvarlatır.

>> ceil(5.21)ans =6

round(x): x’e en yakın tamsayıya yuvarlatır.

>> round(2.49)ans =2>> round(2.5)ans =3

Matrisler

Matris olusturmak için köseli parantez kullanılır ve ; ile satırlar ayrılır.

>> A=[1 2 1 0;-2 1 0 3;0 -1 2 1 ]A =1 2 1 0-2 1 0 30 -1 2 1

Sonuç verecek olan bir komut satırı sonuna ; konulursa komut penceresindeo komutun olusturdugu degiskenin degeri yazılı olarak görünmez.

>> B=[1 -1 0; 2 0 1];

Matrisin transpozu ’ ile alınır.

13

Page 18: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

MATLAB’A GIRIS

>> A=[1 2 1 0;-2 1 0 3;0 -1 2 1 ];>> A’ans =1 -2 02 1 -11 0 20 3 1

n bir skaler olmak üzere A^n , A matrisinin n kere çarpımını ifade eder. Bununiçin A kare matris olmalıdır.

>> A=[1 2;-1 3];>> A^3ans =-9 22-11 13

Matrislerle Islemler

Toplama Islemi: A ve B matrisleri m × n matrisler ise matris toplamı elemaneleman yapılır.

>> A=[2 5;8 9];>> B=[4 7;2 5];>> A+Bans =6 1210 14

Çıkarma Islemi: A ve B matrisleri m× n matrisler ise matriste çıkarma islemieleman eleman yapılır.

>> A=[2 5;8 9];>> B=[4 7;2 5];>> A-Bans =-2 -26 4

Çarpma Islemi: A matrisi m× n ve B matrisi n× p olsun.

14

Page 19: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

MATLAB’A GIRIS

>> A=[2 5;8 9];>> B=[4 7;2 5];>> A*Bans =18 3950 101

Matrislerde asagıdaki komutlar kullanılarak istenilen elemanlara veya altblok matrislere ulasılabilir.

(a) A(i,j) gösterimi i. satır j. sütun elemanını gösterir.

(b) A(i:j) gösterimi ilk sütundan baslayarak i. eleman ile j. eleman arasın-daki elemanları [A(i) A(i+1)... A(j)] seklinde bir vektörü verir.

(c) A(:,j) gösterimi A matirisinin j. sütununu verir.

(d) A(:, i:j) gösterimi [A(:,i);A(:,i+1);...;A(:,j)] seklinde i. sü-tundan j. sütuna kadar sütunlardan olusan bir alt matrisi verir.

(e) A(i,:) gösterimi A matirisinin i. satırını verir.

(f) A(i:j,:) gösterimi [A(i,:);A(i+1,:);...;A(j,:)] seklinde i. satır-dan j. satıra kadar satırlardan olusan bir alt matrisi verir.

>> A=[3 5 1 -2 7;4 7 5 6 3;2 1 7 8 2]A =3 5 1 -2 74 7 5 6 32 1 7 8 2>> A(2,3)ans =5>> A(1:6)ans =3 4 2 5 7 1% A matrisinin 1. elemandan 6. elemana kadar olan elemanlar verir.>> A(3,:)ans =2 1 7 8 2>> A(2:3,:)ans =4 7 5 6 32 1 7 8 2>> A(:,3)

15

Page 20: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

MATLAB’A GIRIS

ans =157>> A(:,2:3)ans =5 17 51 7

find komutu: Bu komut ile verilen bir kosulu saglayan elemanların yerlerigösterilir.

>> A=[-2 3 4 4;0 5 -1 6;6 8 0 1]A =-2 3 4 40 5 -1 66 8 0 1>> k=find(A==0)k =29

Yani A matrisinin 0 olan elemanları 2 ve 9. elemanlarıdır. find komutu Amatrisini sütun vektörü gibi alır ve A matrisinin elemanları asagıdaki gibinumaralandırılmıs olur.

1 4 7 102 5 8 113 6 9 12

>> A=[-2 3 4 4;0 5 -1 6;6 8 0 1]A =-2 3 4 40 5 -1 66 8 0 1>> n=find(A<=0)n =128

16

Page 21: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

MATLAB’A GIRIS

9>> A(n)ans =-20-10

A matrisinin pozitif olmayan elemanlarının bulundugu yerler bulunmustur,A(n) komutuyla ise elemanların degerlerini verir.

>> m=find(A’==0)m =511

Burada A’ oldugundan elemanlar satır olarak yerlestirilmistir.

Dizilerin Eleman Eleman Islemleri

a = [3 7 − 3 4], b = [1 4 − 2 − 2] dizileri verilsin. Eleman eleman çarpıma.*b seklinde gösterilir. Burada . eleman-eleman islemi göstermektedir. Budurumda a nın her bir elemanı sırasıyla b dizisinin karsılık gelen her birelemanı ile çarpılır.

>> a=[3 7 -3 4];>> b=[1 4 -2 -2];>> a.*bans =3 28 6 -8

Saga Bölme: a./b komutu ile a nın her bir elemanı sırasıyla b dizisinin kar-sılık gelen her bir elemanı ile bölünür.

>> a=[3 7 -3 4];>> b=[1 4 -2 -2];>> a./bans =3.0000 1.7500 1.5000 -2.0000

Sola Bölme: a.\b komutu ile b nın her bir elemanı sırasıyla a dizisinin kar-sılık gelen her bir elemanı ile bölünür.

>> a=[3 7 -3 4];>> b=[1 4 -2 -2];>> a.\bans =0.3333 0.5714 0.6667 -0.5000

17

Page 22: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

MATLAB’A GIRIS

Üs alma: a.^b komutu ile a nın her bir elemanı sırasıyla b dizisindeki karsılıkgelen elemanların üssüne yükseltilir.

>> a=[3 7 -3 4];>> b=[1 4 -2 -2];>> a.^bans =1.0e+003 *0.0030 2.4010 0.0001 0.0001

Bu islemler kullanılarak fonksiyon degerleri istenilen aralıkta hesaplanabilir.Örnegin

>> x=0:0.1:10;>> y=2*x.^2+3*x+5;

komutlarıyla y = 2x2 + 3x+ 5 fonksiyonunun [0, 10] aralıgında x degiskenindeadım uzunlugu 0.1 alınarak hesaplanmıs olur.

Nokta Çarpımı

MATLAB dilinde vektörlerle yapılan islemler çarpma ’.’, nokta çarpım ’.*’,Bölme ’./’ veya ’.\’, Üst alma ’.^’ olarak kullanılır. Yani nokta isaretli is-lemler elemanter islem yapılacagını gösterir. n bir skaler olmak üzere A.^n,A matrisindeki her bir elemanın n. kuvvetinin alınacagını ifade eder. Vektör-lerin nokta çarpımında, karsılıklı her eleman çarpılır ve birikmis toplam eldeedilir. Nokta çarpım simetriktir aynı sonuç alınır.

>> A=[1 2;-1 3];>> A.^3ans =1 8-1 27>> v=[1;-1;3];>> w=[1;2;-1];>> v.*wans =1-2-3>> dot(v,w)ans =-4

Bir vektörün boyu ‖v‖ =√v.v

18

Page 23: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

MATLAB’A GIRIS

>> v=[1;-1;3];>> vlength=sqrt(dot(v,v))vlength = 3.3166

Vektörün boyu için norm komutu da kullanılabilir.

>> norm(v)ans =3.3166

Iki vektör arasındaki açı θ su seklide bulunabilir. v.w = ‖v‖‖w‖ cos θ oldugun-dan θ = arccos

(v.w‖v‖‖w‖

)olur.

>> v=[1;-1;3];>> w=[1;2;-1];>> theta=acos(dot(v,w)/(norm(v)*norm(w)))theta =2.0856>> theta=theta*180/pitheta = 119.4962 (Radyan çıkan sonucun derece karsılıgı)

MATLAB programında matrislerle ilgili pek çok islem yapılabilir. Bunlardanbazıları determinant bulma, ters matris bulma, matrisi alt ve üst üçgenlerseklinde çarpanlara ayırma, matrisin özdegerlerini ve özvektörlerini bulmavb. Asagıda bu islemler için komutlar verilmistir.

det(A): A, n× n matrisinin determinantını bulur.

inv(A): A n × n matrisinin eger tersi varsa tersini bulur. A−1 komutu dakullanılabilir.

[L,U]=lu(A): A matrisini A=L*U olacak sekilde çarpanlara ayırır. Burada Lalt üçgen matris, U üst üçgen matristir.

eig(A): A matrisinin özdegerlerini bulur (Özdegerler det(A− λI)(x) = 0 denk-leminin çözümleridir). [V,D]=eig(A) seklinde kullanılırsa D kösegen matri-sin kösegen elemanları özdeger, V matrisinin sütunları özvektörleri verir. YaniX*V=V*D veya V−1*X*V=D esitlikleri saglanır.

diag(A): Bir matrisin kösegenindeki elemanları verir.

Simdi örnek üzerinden hazır fonksiyonların kullanımını görelim.

>> A=[1 1 1;2 2 2;1 -1 3];>> det(A)ans =0>> [L,U]=lu(A)

19

Page 24: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

MATLAB’A GIRIS

L =0.5000 0 1.00001.0000 0 00.5000 1.0000 0U =2 2 20 -2 20 0 0>> eig(A)ans =-0.00003.0000 + 1.0000i3.0000 - 1.0000i>> [v,d]=eig(A)v =-0.8165 -0.4082 - 0.0000i -0.4082 + 0.0000i0.4082 -0.8165 -0.81650.4082 -0.0000 - 0.4082i -0.0000 + 0.4082id =-0.0000 0 00 3.0000 + 1.0000i 00 0 3.0000 - 1.0000i>> diag(A)ans =123

Eger yukarıda verilen A matrisinin tersini bulmak istersek, A matrisinin tersiolmadıgı için

>> inv(A)Warning: Matrix is singular to working precision.ans =Inf Inf InfInf Inf InfInf Inf Inf

ile karsılasılır.

>> A=[1 1 1;2 1 2;1 -1 3];>> inv(A)

20

Page 25: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

MATLAB’A GIRIS

ans =-2.5000 2.0000 -0.50002.0000 -1.0000 01.5000 -1.0000 0.5000

Sonucun saglanması için tersi ile kendisinin çarpımı birim matrisi vermelidir.Yani A*A−1=A−1*A=In esitligi saglanmalıdır. Burada In, n×n birim matrisdir.

Bir matrisin tüm karesel alt matrislerinden, determinantı sıfırdan farklı olanen yüksek boyutlusunun boyutuna A matrisinin rankı denir. size komutu Amatrisinin boyutlarını verir, satır ve sütun sayısını verir.

>> A=[1 1 1;2 2 2;1 -1 3]A =1 1 12 2 21 -1 3>> rank(A)ans =2>> size(A)ans = 3 3

MATLAB programında bazı özel matrisler ve vektörler tanımlanmıstır.

zeros(m,n): Bu komut elemanları sıfır olan boyutu m × n olan bir matrisolusturur.

>> zeros(2,3)ans =0 0 00 0 0

ones(m,n): Bu komut elemanları bir olan boyutu m×n olan bir matris olus-turur.

>> ones(3,1)ans =111

eye(n): Bu komut boyutu n× n olan birim matris olusturur.

21

Page 26: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

MATLAB’A GIRIS

>> eye(3)ans =1 0 00 1 00 0 1

MATLAB’ da özel matrisler olan pek çok elemanı sıfır olan matrisler sparsekomutu ile olusturulabilir.

Örnek 1.0.1 S(1, 2) = 10, S(3, 3) = 11 ve S(5, 4) = 12 ve diger elemanları sıfırolan 5× 4 lük bir S matrisi olusturalım.

>> i=[1,3,5];>> j=[2,3,4];>> v=[10 11 12];>> S=sparse(i,j,v)S =(1,2) 10(3,3) 11(5,4) 12>> T=full(S)T =0 10 0 00 0 0 00 0 11 00 0 0 00 0 0 12

Örnek 1.0.2 Verilen n degeri için asagıdaki seyrek (sparse) matrisi olusturanbir kod yazalım. Bu matrise üç kösegenli matris denir.

B =

1 n−2 2 n− 1

−3 3 n− 2. . . . . . . . .

−n+ 1 n− 1 1−n n

22

Page 27: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

MATLAB’A GIRIS

Kod asagıdaki gibi yazılabilir:

>> n=5;>> l=-(2:n+1)’; d=(1:n)’; u=((n+1):-1:2)’;>> B=spdiags([l d u],-1:1,n,n);>> full(B)ans =1 5 0 0 0-2 2 4 0 00 -3 3 3 00 0 -4 4 20 0 0 -5 5

Grafik Çizimi

MATLAB programında

• iki boyutlu grafikler: plot, ezplot, fplot, semilogx, semilogy,

loglog, plotyy

• dilim, bar grafikleri: bar, barh, pie

• üç boyutlu grafikler: plot3, ezplot3, pie3, mesh, surface

komutları ile çizilebilir. MATLAB ile istenilen çizgi türünde, renkte veya se-kilde grafik çizilebilir. Asagıdaki tabloda kullanılan çizgi türü, sekil ve renklerverilmistir. hold on komutu yazıldıktan sonra çizilen tüm grafikler aynı pen-

Renk Isaret Çizgiy sarı ∗ yıldız : noktam magenta s kare .- nokta süreklic pembe d elmas - süreklir kırmızı v üçgen asagı – kesiklig yesil ^ üçgen yukarıb mavi < üçgen solak siyah > üçgen saga

cerede çizilir. hold off komutu yazıldıktan sonra bu özellik kaldırılır. Çizi-len grafige baslık title, x-ekseni etiketi xlabel, y-ekseni etiketi ylabel veaçıklayıcı bilgi legend komutlarıyla eklenir. grid komutu ile grafige ızgaraçizgileri eklenir. Kaldırmak için grid off komutu kullanılır. Varolan çizilmisgrafikleri kaldırmak için clf komutu kullanılır.

23

Page 28: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

MATLAB’A GIRIS

Örnek 1.0.3

y=sin x fonksiyonunun grafigini [0,2π] aralıgında çizelim. Ilk olarak adımuzunlugunu h=0.5 alalım.

>> x=0:0.5:2*pi;>> y=sin(x);>> plot(x,y)>> title(’y=sin x, h=0.5’)>> xlabel(’x ekseni’)>> ylabel(’y ekseni’)>> legend(’sinüs grafigi’)>> grid

Sekil 1.1 de grafik çizilmistir. Buradan da görüldügü gibi bu h degeri büyük-tür.

0 1 2 3 4 5 6

x ekseni

-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

y ek

seni

y=sin x, h=0.5

Sekil 1.1: y = sinx fonksiyonunun grafigi, h = 0.5

Simdi adım uzunlugunu h = 0.1 alalım ve yeniden grafigi çizelim.

>> x=0:0.1:2*pi;>> y=sin(x);>> plot(x,y)>> title(’y=sin x, h=0.1’)>> grid on

24

Page 29: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

MATLAB’A GIRIS

0 1 2 3 4 5 6 7

x ekseni

-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

y ek

seni

y=sin x, h=0.1

Sekil 1.2: y = sinx fonksiyonunun grafigi, h = 0.1

Asagıda Sekil 1.2’de grafik verilmistir.Matrislerde gördügümüz find komutu ile grafikte istenen degerler isaretle-nebilir. Sekil 1.3 de bir örnek çizilmistir.

>> x=0:0.1:2*pi;>> y=sin(x);>> plot(x,y,’:’)>> k=find(y>0.5)k =Columns 1 through 117 8 9 10 11 12 13 14 15 16 17Columns 12 through 2118 19 20 21 22 23 24 25 26 27>> hold on>> plot(x(k),y(k),’o’)>> grid on>> title(’y=sin x grafigi, y>0.5 noktaları’)

subplot komutu ile birden fazla grafik aynı ekranda çizilebilir. subplot ko-mutu ile grafik penceresi istenen grafik penceresine bölünebilir ve her grafikpenceresine istenen grafik çizilebilir.subplot(M,N,P) seklinde kullanılır. Grafik penceresi pencerelere bölünür.Daha sonra sırasıyla plot komutuyla grafikler çizilir.

25

Page 30: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

MATLAB’A GIRIS

0 1 2 3 4 5 6 7-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

Sekil 1.3: y = sinx fonksiyonunun grafigi, y > 0.5 olan noktalar

Pencereler M tane satır, N tane sütun olur ve grafik P ninci pencereye çizilir.Birinci pencere sol üst kösededir.

Örnek 1.0.4

y=x^2, y=-x, y=x^3 ve y=ex fonksiyonlarını [-10,10] aralıgı için aynı pen-cereye çizelim. Örnek çizim Sekil 1.4’de verilmistir.

>> x=-10:.1:10;>> y1=x.^2;>> y2=-x;>> y3=x.^3;>> y4=exp(x);>> subplot(2,2,1); plot(x,y1);>> title(’y=x^2’);>> subplot(2,2,2); plot(x,y2);>> title(’y=-x’);>> subplot(2,2,3); plot(x,y3);>> title(’y=x^3’);>> subplot(2,2,4); plot(x,y4);>> title(’y=e^x’);

26

Page 31: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

MATLAB’A GIRIS

-10 -5 0 5 100

50

100y=x2

-10 -5 0 5 10-10

-5

0

5

10y=-x

-10 -5 0 5 10-1000

-500

0

500

1000y=x3

-10 -5 0 5 100

1

2

3#104 y=ex

Sekil 1.4: Subplot komutu

semilogx, semilogy komutları: plot komutundan farklı olarak (plot ko-mutunda eksenler dogrusaldır), bu komutlarda eksenlerden biri logaritmikölçege göre çizilir. semilogx komutu ile x ekseni, semilogy komutu ile y ek-seni logaritmik ölçege göre çizilir. Bunun dısında kullanımı plot komutu ileaynıdır. Asagıdaki komut dizisi ile elde edilen çizim Sekil 1.5’de gösterilmistir.

>> x=1:100;>> y=x.^2;>> subplot(1,2,1); semilogx(y);>> title(’y=x^2;x-ekseni logaritmik’)>> subplot(1,2,2); semilogy(y);>> title(’y=x^2;y-ekseni logaritmik’)

loglog komutu: Grafigin x ve y ekseninde logaritmik olarak gösterildigi gra-fik türüdür. Kullanımı plot ile aynıdır. Tek fark eksen degerlerinin logaritmikartısıdır.

plotyy komutu: Iki farklı fonksiyonun çizimi için kullanılabilir. Kullanımıplotyy(x1,y1,x2,y2,’fonk1’,’fonk2’) seklindedir.

>> x=1:10;>> y1=x.^2+1;>> y2=x.^5+x.^3+1;

27

Page 32: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

MATLAB’A GIRIS

100 101 1020

1000

2000

3000

4000

5000

6000

7000

8000

9000

10000y=x2;x-ekseni logaritmik

0 50 100100

101

102

103

104y=x2;y-ekseni logaritmik

Sekil 1.5: Semilog komutu

>> plotyy(x,y1,x,y2)>> legend(’y1=x^2+1’,’y2=x^5+x^3+1’)>> title(’plotyy komutu’)

Sekil 1.6’de soldaki grafik y1 fonksiyonunun, sagdaki grafik y2 fonksiyonu-nun grafigidir. plotyy komutu yerine hold on komutu da kullanılabilir.

Fonksiyon Tanımlama ve Grafikleri

Bir fonksiyonun önceden tanımlanıp sonra grafiginin çizildigi grafik seklidir.Fonksiyonu saglayan noktaların bulunmasına gerek yoktur.fplot komutu: Kullanım sekli fplot(fonksiyon, limitler, ’çizgi türü’)seklindedir. Fonksiyon dört sekilde tanımlanabilir. Örnek olarak sin(x+1)fonksiyonunun dört farklı sekilde tanımlanmasına bakalım.1. fplot(@(x) sin(x+1),... olarak tanımlanabilir. Örnegin sin(x+1) fonk-siyonunun grafigini [2π,10π] aralıgında fplot komutu ile çizdirelim.

>> fplot(@(x)sin(x+1),[2*pi 10*pi])>> title(’y=sin(x+1)’)

Sekil 1.7 de grafik çizilmistir.2. Fonksiyon için M-dosyası olusturulur. Bunun için MATLAB ana pancere-sinde File menüsünden New veya New Function File seçilir, bu sekildeEditör açılmıs olur. Açılan sayfaya asagıdaki kod yazılır:

28

Page 33: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

MATLAB’A GIRIS

1 2 3 4 5 6 7 8 9 100

20

40

60

80

100

120plotyy komutu

0

2

4

6

8

10

12#104

y1=x2+1

y2=x5+x3+1

Sekil 1.6: plotyy komutu

10 15 20 25 30-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1y=sin(x+1)

Sekil 1.7: fplot komutu

function f=fonk(x)f=sin(x+1)

29

Page 34: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

MATLAB’A GIRIS

Burada function komutu ile çıktısı f olan ve girdisi x olan fonksiyon olus-turulmus olur. Fonksiyonun ismi fonk olarak verilmistir. f çıktısının tanımısin(x+1) olarak yapıldıgı için istenilen fonksiyon olusturulmus olur. Bu M-dosyası fonk olarak MATLAB programının oldugu klasöre kaydedilir.

a) f=@fonk; fplot(f,...) olarak kullanılabilir. Örnegin

>> f=@fonk;>> fplot(f,[2*pi 10*pi]);

b) fplot(’fonk’,...) olarak kullanılabilir.

>> fplot(’fonk’,[2*pi 10*pi])

3. Fonksiyon inline komutu ile tanımlanabilir.

fonk=inline(’sin(x+1)’)fplot(fonk,...)

olarak grafik çizilir. Örnegin

>> fonk=inline(’sin(x+1)’)fonk =Inline function:fonk(x) = sin(x+1)>> fplot(fonk, [2*pi 10*pi])

4. fplot(’sin(x+1)’,...) seklinde grafik çizilir. Örnegin

>> fplot(’sin(x+1)’,[2*pi 10*pi])

ezplot komutu: Verilen fonksiyonu varsayılan aralık olan −2 ∗ pi < x < 2 ∗ piiçin çizdirir. ezplot(fonksiyon, [min max]) komutu ile verilen fonksiyonverilen aralıkta min<x<max için çizdirir.

ezplot(fonksiyon, [xmin xmax ymin ymax]) kapalı olarak verilen fonk-siyon verilen aralıklar için çizdirir. x degerleri xmin<x<xmax ve y degerleriymin<y<ymax için çizilir. Örnegin x^2+y^2=1 kapalı olarak tanımlanmıs fonk-siyonun grafigini çizelim. Sekil 1.8 de grafik çizilmistir.

>> ezplot(’x.^2+y.^2-1’,[-2 2 -2 2])>> grid on>> title(’x^2+y^2-1=0’)

30

Page 35: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

MATLAB’A GIRIS

Sekil 1.8: ezplot komutu

Sekil 1.9: bar komutu

31

Page 36: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

MATLAB’A GIRIS

Çubuk Grafikleri: bar, barh komutları kullanılır. Sekil 1.9 de çubuk grafi-gine örnek verilmistir.

>> y=[75, 91, 105, 123,131, 150, 179, 203, 226, 249, 281];>> figure; bar(y);

barh komutu ile yatay çubuklar çizilir.Dilim Grafikleri: pie komutu ile çizilir. pie(x), pie(x, Ayri) olarak kul-lanılır. Örnegin

>> X=[2 3 4 5 6];>> pie(X);

Bitisik olarak dilim grafigi çizer.

>> X=[2 3 4 5 6];>> Ayri=[0 1 0 0 1];>> pie(X, Ayri)

1 olanlar ayrık, 0 olanlar bitisik olarak çizilir. Sekil 1.10 de dilim grafigi çizil-mistir.

Sekil 1.10: pie komutu

pie(X,{’D1’,’D2’,’D3’,’D4’,’D5’}) olarak yazılırsa dilimlere isimlendirmeyapılmıstır. MATLAB programında üç boyutlu olarak da çizilebilir.pie3(X), pie3(X,Ayri), pie3(X,isimler) seklinde üç boyutlu dilim gra-fikleri çizilebilir. Sekil 1.11 de üç boyutlu dilim grafigi çizilmistir.

32

Page 37: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

MATLAB’A GIRIS

Sekil 1.11: pie3 komutu

>> pie3([14 18 23 8 3 5 2], [0 0 0 0 0 1 0])

Üç Boyutlu Grafikler:mesh(Z), mesh(X,Y,Z) olarak kullanılabilir. Öncelikle X,Y degerleri olustu-rulur. Sonra karsılık gelen Z degerleri olusturulur.

Örnek 1.0.5 f(x, y) = e(−0.1(x2+y2)) cos(x2 + y2) fonksiyonunun grafigini

[x,y]=[-5,5]x[-5,5] degerleri için çizelim.

>> [X,Y]=meshgrid(-5:0.1:5);>> Z=exp(-1/10*(X.^2+Y.^2)).*cos(X.^2+Y.^2);>> mesh(Z)>> title(’f(x,y)=e^{-0.1(x^2+y^2)}cos(x^2+y^2)’)

Sekil 1.12 da fonksiyonun grafigi verilmistir. contour komutu ile yüzeyinseviye (es yükselti) egrileri çizilir.

figure[X,Y]=meshgrid(-2:0.05:2);f=-X.*Y.*exp(-2*(X.^2+Y.^2));[C,h]=contour(X,Y,f);clabel(C,h)title(’f(x,y)=-xye^{-2(x^2+y^2)} fonksiyonunun seviye egrileri’)grid on

33

Page 38: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

MATLAB’A GIRIS

Sekil 1.12: mesh komutu

Sekil 1.13: contour komutu

34

Page 39: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

MATLAB’A GIRIS

Sekil 1.13 de fonksiyonun seviye egrileri çizilmistir.

figure komutu ile yeni bir grafik penceresi açılır.

Yüzey Grafikleri: surface komutu ile çizilebilir. f(x, y) = y sinx− x cos y fonk-siyonu ile belirlenen yüzeyin grafigini örnek olarak çizelim.

>> [X,Y]=meshgrid(-2*pi:0.1:2*pi);>> Z=Y.*sin(X)-X.*cos(Y);>> surf(Z)>> title(’f(x,y)=ysinx-xcosy’)

Sekil 1.14 de yüzeyin grafigi çizilmistir.

Sekil 1.14: surf komutu

Üç Boyutlu Çizgi Grafikleri: plot3, ezplot3 komutlarıyla çizilir.

plot3 komutu: Kullanımı plot ile aynıdır.

Örnek 1.0.6

>> x=0:.01:10*pi;>> y=cos(x);>> z=sin(x);>> plot3(x,y,z)>> grid on>> xlabel(’x’); ylabel(’y=cosx’);zlabel(’z=sinx’)

35

Page 40: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

MATLAB’A GIRIS

Sekil 1.15: plot3 komutu

Sekil 1.15 de çizgi grafigi çizilmistir.

ezplot3 komutu:

ezplot(fonk_x,fonk_y,fonk_z)ezplot(fonk_x,fonk_y,fonk_z, [tmin, tmax])ezplot(fonk_x,fonk_y,fonk_z, animate)

animate ifadesi ile çizgi grafigi üzerinde hareket eden parlak bir yıldız sek-linde animasyon grafige eklenir. Tanımlanan fonksiyonların hepsi aynı degis-kene baglı olmalıdır.

>> ezplot3(’cos(t)’,’sin(t)’,’t’,[0 10*pi],’animate’)

Sekil 1.16 da animasyonlu çizgi grafigi çizilmistir.

Polinomlar

p : R→ R derecesi n olan polinom

p(x) = anxn + an−1x

n−1 + · · ·+ a1x+ a0

seklinde tanımlıdır. Burada ai ∈ R, i = 0, · · · , n. MATLAB programında poli-nomlar katsayıların azalan sırada sıralandıgı birer satır vektörü olarak gös-terilir. Örnegin p=[8 0 4 -2 0 1 0 10] satır vektörü

36

Page 41: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

MATLAB’A GIRIS

Sekil 1.16: ezplot3 komutu

p(x) = 8x7 + 4x5 − 2x4 + x2 + 10

polinomu için kullanılır. Polinom islemleri için pek çok hazır fonksiyon vardır.

polyval komutu: p(x) = 8x3 + 4x2 − 2x − 3 polinomunun x = 2 noktasındaaldıgı degeri hesaplatalım.

>> p=[8 4 -2 -3]p =8 4 -2 -3>> x=2;>> b=polyval(p,x)b =73

Aynı polinomun x = [2 4 1 1] noktalarındaki degerlerini bulalım.

>> p=[8 4 -2 -3];>> x=[2 4 1 1];>> b=polyval(p,x)b =73 565 7 7

Aynı polinomun matris seklinde verilmis x degerlerinde hesaplayalım.

37

Page 42: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

MATLAB’A GIRIS

>> p=[8 4 -2 -3];>> x=[1 2 3 4;1 4 7 8]x =1 2 3 41 4 7 8>> b=polyval(p,x)b =7 73 243 5657 565 2923 4333

Aynı polinomu x = [1, 5] aralıgında hesaplatalım.

>> p=[8 4 -2 -3];>> x=linspace(1,5,10);>> b=polyval(p,x);>> plot(x,b,’k-’)>> grid on

Sekil 1.17 de polinomun grafigi çizilmistir.

Sekil 1.17: polyval komutu

roots komutu: p(x) = 0 yapan noktaları yani polinomun köklerini bulur.p(x) = x3 + 4x2 − 3x− 7 polinomunun köklerini bulalım.

38

Page 43: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

MATLAB’A GIRIS

>> p=[1 4 -3 -7];>> r=roots(p)r =-4.31941.4427-1.1233

poly(roots) komutu kökleri roots satır vektöründe verilen polinomu olus-turur.

>> roots=[3 5];>> p=poly(roots)p =1 -8 15

Yani kökleri 3 ve 5 olan polinom p(x) = x2 − 8x + 15 olarak bulunmus olur.Polinomlarda çarpma islemine bakalım. p(x) = 4x3 − 4x2 + 5 polinomunu 9 ileçarpalım.

>> p=[4 -4 5];>> pp=9*ppp =36 -36 45

Simdi iki polinomun çarpımına bakalım. conv komutu ile polinomlarda çarpmaislemi yapılır. Örnegin p1(x) = 3x3 + 7x2 + 2x+ 4 ve p2(x) = x2 + x+ 1 polinom-larının çarpımlarını yapalım.

>> p1=[3 7 2 4];>> p2=[1 1 1];>> pp=conv(p1,p2)pp =3 10 12 13 6 4

Yani çarpım polinomu pp(x) = 3x5 + 10x4 + 12x3 + 13x2 + 6x+ 4 olarak bulunur.

deconv komutu ile polinomların bölümü yapılır. [d,r]=deconv(p1,p2) ko-mutu ile p1 polinomu p2 polinomuna bölündügünde bölüm d kalan r olur.p1 = 5x3 + 3x2 + 2x+ 1, p2(x) = x2 + 2x+ 1 ise p1/p2 bölümünü yapalım.

>> p1=[5 3 2 1];>> p2=[1 2 1];>> [d,r]=deconv(p1,p2)d =5 -7r =0 0 11 8

39

Page 44: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

MATLAB’A GIRIS

Yani bölüm d(x) = 5x− 7 kalan r(x) = 11x+ 8 olur.

polyder komutu: Polinomun türevini bulur. p(x) = x4 + 5x3 + 4x2 + 3 olsun,birinci türevini bulalım.

>> p=[1 5 4 0 3];>> pd=polyder(p)pd =4 15 8 0

Yani türev p′(x) = 4x3 + 15x2 + 8x olur.

residue komutu ile P (x) polinomunun Q(x) polinomuna bölümünü basitkesirlere ayırır. [r,p,k]=residue(P,Q) komutu ile basit kesirlere ayrılmayapılır, burada r pay katsayılarını, p bu katsayılara karsılık gelen payda kök-lerini, k ise bölümden kalanı gösterir. Benzer sekilde [P,Q]=residue(r,p,k)komutu ile basit kesirlerden olusan polinom bölmesi elde edilir.

Interpolasyon, Ekstrapolasyon ve Regresyon

Tablo halinde verilen sayısal verilerin ara degerini bulmaya interpolasyon, dısdegerlerini bulmaya ekstrapolasyon denir. Gerek interpolasyon gerekse ekst-rapolasyon yapmada en uygun yol o degerlerden geçen en uygun polinomundenklemini bulmak ve onu kullanmaktır. Tablo halinde verilen degerlerdengeçen en uygun polinomu bulma islemine ise regresyon denir.

interp1 komutu: x ve y iki vektör için y_i=interp1(x,y,x_i) verilen xvektörlerindeki x_i ara degerine karsılık gelen y_i degerini verir.

y_i=interp1(x,y,x_i,’metod’) komutunda metod: lineer, spline veya kü-bik seklinde olabilir. interp1 komutu aynı zamanda ekstrapolasyon içindekullanılabilir.

Örnek olarak asagıdaki verilere bakalım.

x=[3 5 8 12], y=[45 67 92 150] olsun. x=13 iken y nin degerini yakla-sık olarak spline eksrapolasyonu ile bulalım.

>> x=[3 5 8 12];>> y=[45 67 92 150];>> y13=interp1(x,y,13,’spline’)y13 =175.1905

Regresyon: Tablo halinde verilen degerlerden geçen en uygun polinomu bulmaislemidir. MATLAB’da verilere egri uydurma islemi polyfit komutu kullanı-larak yapılır.

40

Page 45: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

MATLAB’A GIRIS

polyfit komutu: Verilen degerlere uyan polinomu bulur. polyfit(x,y,n)seklinde kullanılır. Burada x ve y vektörleri n ise polinomun derecesidir. Egern=1 seçilirse polinom lineer, n=2 seçilirse kuadratik (ikinci dereceden) poli-nom olur. Egri uydurmada sahip olunan veri uzunlugu n ile tanımlandıgındaegri uydurumunda kullanılacak polinomun maksimum derecesi n-1 olun-caya kadar arttırılabilir.

Örnek 1.0.7

x=1:8;y=[0.5 0.8 0.95 1.2 1.5 1.7] verilsin. n=1 dereceli polinom, yanidogru ile yaklasım yapalım. Polinomu ve verileri aynı grafige çizelim.

>> x=1:6;>> y=[0.5 0.8 0.95 1.2 1.5 1.7];>> p=polyfit(x,y,1)p =0.2386 0.2733>> f=poly2str(p,’x’)f =0.23857 x + 0.27333>> xx=1:0.01:6;>> yy=polyval(p,xx);>> plot(x,y,’s’,xx,yy,’r-’)>> plot(x,y,’s’,xx,yy,’r-’)>> title(’Polinom interpolasyonu’)>> grid on

Sekil 1.18 de n=1 dereceli polinom (dogru) ve veriler kare seklinde çizil-mistir. Simdi x=1:7, y=[1 3.5 5 5.5 5.7 6.2 6.5] olsun, verilere uyan1.,2.,3. ve 4. dereceden polinom uydurma yapalım ve grafiklerini çizelim.

>> x=1:7;>> y=[1 3.5 5 5.5 5.7 6.2 6.5];>> p1=polyfit(x,y,1); %1. dereceden polinom>> xx=0:0.1:10;>> y1=polyval(p1,xx);>> subplot(2,2,1);plot(x,y,’s’,xx,y1,’-’); grid on>> title(’1. derece’);>> p2=polyfit(x,y,2); %2. dereceden polinom>> y2=polyval(p2,xx);>> subplot(2,2,2);plot(x,y,’s’,xx,y2,’:’); grid on>> title(’2. derece’);>> p3=polyfit(x,y,3); %3. dereceden polinom>> y3=polyval(p3,xx);

41

Page 46: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

MATLAB’A GIRIS

Sekil 1.18: polyfit komutu

>> subplot(2,2,3);plot(x,y,’s’,xx,y3,’--’); grid on>> title(’3. derece’);>> p4=polyfit(x,y,4); %4. dereceden polinom>> y4=polyval(p4,xx);>> subplot(2,2,4);plot(x,y,’s’,xx,y4,’.-’); grid on>> title(’4. derece’);

Egri uydurmada kullanılacak olan polinomun verilere uygunlugu derecesi rile tanımlanan regresyon katsayısı ile ortaya konur. Elde edilen regres-yon katsayısı 0 < r ≤ 1 aralıgında bir deger alması istenir. Eger bu degerr ≈ 0 ise uydurulan fonksiyonun iyi olmadıgı, r ≈ 1 ise uydurulan fonksiyon-nun iyi oldugu anlasılır. Regresyon katsayısının hesabı için öncelikle ölçümsonucundan elde edilen sayısal degerlerin aritmetik ortalaması bulunur.

y =1

n

n∑i=1

yi

Sonra ölçüm degerleri ve uydurulan fonksiyona ait hata hesabı için asagıda-kiler bulunur:

δy =

n∑i=1

[yi − y]2, ve δf =

n∑i=1

[f(xi)− y]2

42

Page 47: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

MATLAB’A GIRIS

Sekil 1.19: polyfit komutu kullanımı

Elde edilen bu degerlere göre regresyon katsayısı

r =δfδy

seklinde bulunur.

Iki boyutlu interpolasyon: griddata ve interp2 komutları kullanılır.

z_i=griddata(x,y,z,x_i,y_i) veya z_i=interp2(x,y,z,x_i,y_i) sek-linde kullanılır.

Örnegin rüzgar hızı v=[4 6 12 15] (m/s), Günes radyasyon enerjisi

I=[15 20 35 21] (w/m^2); Üretilen enerji E=[18 20 35 29] olsun. Rüz-gar hızı 10 m/s günes radyasyonu 25 w/m^2 iken üretilen enerji E bulalım.

>> v=[4 6 12 15]; I=[15 20 35 21]; E=[18 20 35 29];>> E10_25=griddata(v,I,E,10,25)E10_25 =26.8605

polyint komutu: Polinomun integralini alır. Örnegin p(x) = 9x2 − 2x− 3 poli-nomunun integralini bulalım.

>> p=[9 -2 -3];>> pint=polyint(p)pint =3 -1 -3 0

43

Page 48: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

MATLAB’A GIRIS

Yani polinomun integrali∫

(9x2 − 2x− 3)dx = 3x3 − x2 − 3x olarak bulunur.

Sembolik Hesaplamalar

MATLAB ortamında sayısal deger yerine harfli ifadelerin kullanıldıgı matema-tiksel islemlere sembolik islemler denir. Sembolik hesaplamalar için Sembolikaraç kutusunda pek çok fonksiyon vardır.

Sembolik degisken tanımlamak için syms komutu kullanılır. Kullanımı

syms degisken1 degisken2...degisken3

seklindedir.

Sembolik sayı olusturalım ve kayan nokta gösterimi ile karsılastıralım.

sym(1/3)1/3ans =1/3ans =0.3333

Sembolik sayı rasyonel sayıyı tam olarak verir, kayan nokta gösterimi ise yak-lasık sayı verilmektedir. Sembolik sayılar ile hesaplamalar tam sonucu verir.Bunu görmek için sinπ degerini sembolik ve sayısal olarak hesaplayalım.

sin(sym(pi))sin(pi)ans =0ans =1.2246e-16

Sembolik hesaplama tam sonucu vermistir. Sayısal hesaplama ise yaklasıkolarak sonucu vermistir.

x ve y sembolik degiskenlerini olusturalım.

syms xy = sym(’y’)

Iki komutta aynı sekilde çalısır. Birden fazla sembolik degisken olusturalım.

syms a b c

44

Page 49: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

MATLAB’A GIRIS

komutu ile a,b,c sembolik degiskenleri olusturulur. Sembolik degiskenlera1,...,a20 olusturmak için

A = sym(’a’, [1 20])A =[ a1, a2, a3, a4, a5, a6, a7, a8, a9, a10,...a11, a12, a13, a14, a15, a16, a17, a18, a19, a20]

komutu kullanılır.

Sembolik fonksiyon olusturalım.

syms x yf(x, y) = x^3*y^3f(x, y) =x^3*y^3

Sembolik fonksiyon olusturulduktan sonra türevini alabilir, integralini bula-bilir, degerler verebilirsiniz. Örnegin x degiskenine göre birinci türevini bul-mak için

d1x=diff(f)d1x=3*x^2*y^3

bulunur. Örnegin y degiskenine göre ikinci türevini bulmak için

d2fy = diff(f, y, 2)d2fy(x, y) = 6*x^3*y

f(x,y) fonksiyonunu x=y+1 için hesaplayalım.

f(y + 1, y)ans = y^3*(y + 1)^3

Birden fazla degisken oldugunda belirtilmediginde MATLAB, x degiskeninegöre türev alır.

syms x nf=x^ndiff(f)ans=n*x^(n-1)

sin2 x fonksiyonunun türevini bulmak için

45

Page 50: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

MATLAB’A GIRIS

syms xf = sin(x)^2;diff(f)ans =2*cos(x)*sin(x)

yazılır. Kısmi türev almak için

syms x yf = sin(x)^2 + cos(y)^2;diff(f)ans =2*cos(x)*sin(x)

Aynı fonksiyonun y degiskenine göre türevini almak için

syms x yf = sin(x)^2 + cos(y)^2;diff(f, y)ans =-2*cos(y)*sin(y)

y degiskenine göre ikinci türevini bulmak için

syms x yf = sin(x)^2 + cos(y)^2;diff(f, y, 2)ans =2*sin(y)^2 - 2*cos(y)^2

yazılır. Bu sonuçlar diff(diff(f,y)) komutu ile de bulunur. Karısık türevibulmak için

syms x yf = sin(x)^2 + cos(y)^2;diff(diff(f, y), x)ans =0

bulunur. Jakobyen matrisi hesabı için jacobian komutu kullanılır.

46

Page 51: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

MATLAB’A GIRIS

syms x yf=x^2+y^2;g=x^3+y^3;J=jacobian([f;g],[x;y])J =[ 2*x, 2*y][ 3*x^2, 3*y^2]

Integral bulmak için int komutu kullanılır.∫

sin2 xdx integralini bulalım.

syms xf = sin(x)^2;int(f)ans =x/2 - sin(2*x)/4

Eger birden fazla sembolik degisken var ise, MATLAB ilk olarak x degiskeninegöre integral alır.

syms x y nf = x^n + y^n;int(f)ans =x*y^n + (x*x^n)/(n + 1)

Aynı fonksiyonun y degiskenine göre integralini almak için asagıdaki kodyazılır.

syms x y nf = x^n + y^n;int(f, y)ans =x^n*y + (y*y^n)/(n + 1)

syms uf=1/(1+u^2);int(f)ans= atan(u)

syms yf=y^(-1)int(f)ans= log(y)

47

Page 52: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

MATLAB’A GIRIS

∫ ba f(x)dx belirli integralini bulmak için int(f,a,b) komutu kullanılır.

syms xf=x;int(f,0,1)ans=1/2

bulunur.

syms xint(sin(2*x),0,pi/2)ans=1

bulunur.

Katlı integral bulmak için int komutu iki kere kullanılır.∫ 10

∫ 20 (x + y)dxdy

integralini bulalım.

syms x yf=x+yint(int(f,x,0,2),y,0,1))ans= 3

Sembolik degiskenler kullanılarak denklem çözümü yapılabilir.

syms xsolve(x^3 - 6*x^2 == 6 - 11*x)ans =123

Eger sag taraf belirtilmezse MATLAB sag tarafı sıfır olarak alır.

syms xsolve(x^3 - 6*x^2 + 11*x - 6)ans =123

Birden fazla degisken içeren denklemlerde, hangi degisken için denkleminçözülecegi belirtilmelidir.

48

Page 53: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

MATLAB’A GIRIS

syms x ysolve(6*x^2 - 6*x^2*y + x*y^2 - x*y + y^3 - y^2 == 0, y)ans =12*x-3*x

Eger belirtilmezse MATLAB x degiskenine göre denklemi çözer. Birden fazladenklem çözülebilir.

syms x y z[x, y, z] = solve(z == 4*x, x == y, z == x^2 + y^2)x =02y =02z =08

Sembolik degiskenler simplify komutu ile sadelestirme yapılabilir.

phi = (1 + sqrt(sym(5)))/2;f = phi^2 - phi - 1returnsf =(5^(1/2)/2 + 1/2)^2 - 5^(1/2)/2 - 3/2simplify(f)ans=0

Benzer sekilde expand komutu ile parantez içleri çarpılıp polinom bulunabi-lir.

syms xf = (x ^2- 1)*(x^4 + x^3 + x^2 + x + 1)*(x^4 - x^3 + x^2 - x + 1);expand(f)ans =x^10 - 1

factor komutu ile polinomun kökleri bulunur.

49

Page 54: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

MATLAB’A GIRIS

syms xg = x^3 + 6*x^2 + 11*x + 6;factor(g)ans = [ x + 3, x + 2, x + 1]

subs komutu ile sembolik degisken yerine istenen deger konulabilir.

syms xf = 2*x^2 - 3*x + 1;subs(f, 1/3)ans =2/9

Birden fazla degisken var ise hangi degisken yerine konulacagı belirtilmelidir.

syms x yf = x^2*y + 5*x*sqrt(y);subs(f, x, 3)ans =9*y + 15*y^(1/2)

Birden fazla degisken için deger koyabiliriz.

syms x yf = x^3+y^3;subs(f, {x,y}, {3,3})ans =54

Bir matrisi bir fonksiyona yazılabilir.

syms xf = x^3 - 15*x^2 - 24*x + 350;A = [1 2 3; 4 5 6];subs(f,A)ans =[ 312, 250, 170][ 78, -20, -118]

Sembolik matris olusturulabilir.

50

Page 55: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

MATLAB’A GIRIS

syms a b cA = [a b c; c a b; b c a]A =[ a, b, c][ c, a, b][ b, c, a]

A matrisinin (2, 1) elemanını alpha ve b degiskeni olan yerlere beta degiskeniyazalım.

alpha = sym(’alpha’);beta = sym(’beta’);A(2,1) = beta;A = subs(A,b,alpha)A =[ a, alpha, c][ beta, a, alpha][ alpha, c, a]

Sembolik fonksiyonların çiziminde fplot, fplot3, ezpolar, fsurf,

fcontour ve fmesh komutları kullanılır.

f(x) = x3 − 6x2 + 11x− 6 fonksiyonunun grafigi Sekil 1.20 verilmistir.

syms xf = x^3 - 6*x^2 + 11*x - 6;fplot(f)xlabel(’x’)ylabel(’y’)title(texlabel(f))grid on

Polar koordinatlarda grafik çizmek için ezpolar komutu kullanılır. Sekil 1.21de bir örnek verilmistir.

syms tezpolar(sin(6*t))

Kapalı fonksiyon çizimi ezplot komutu ile yapılır. Sekil 1.22 te bir örnekverilmistir.

syms x yeqn = (x^2 + y^2)^4 == (x^2 - y^2)^2;ezplot(eqn, [-1 1])

51

Page 56: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

MATLAB’A GIRIS

Sekil 1.20: Sembolik fonksiyon

Sekil 1.21: Polar koordinatlar

52

Page 57: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

MATLAB’A GIRIS

Sekil 1.22: Kapalı fonksiyon

Bir fonksiyonda, matriste veya ifadede bulunan sembolik degiskenleri bul-mak için symvar komutu kullanılır.

syms a b n t xf = x^n;g = sin(a*t + b);symvar(f)ans =[ n, x]

Bir fonksiyonun istenilen noktada limit hesabı limit komutu ile yapılır.limx→1 x

2 limitini hesaplayalım.

syms xlimit(x^2, 1)ans =1

Örnegin limx→2x−2x2−4 limitini bulalım.

syms xlimit((x-2)/(x^2-4), 2)ans =1/4

53

Page 58: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

MATLAB’A GIRIS

Bir fonksiyonun türevi f ′(x) = limh→0f(x+h)−f(x)

h olarak tanımlanır.

(cosx)′ = − sinx oldugu limit esitliginden dogrulayalım.

syms h n xlimit((cos(x+h) - cos(x))/h, h, 0)ans =-sin(x)

limit((1 + x/n)^n, n, inf)ans = exp(x)

Tek taraflı limit hesabı soldan limit için limit(f,a,’left’), sagdan limitiçin limit(f,a,’right’) seklinde kullanılır. f(x) = x

|x| fonksiyonunun sıfırnoktasındaki sagdan ve soldan limitlerine bakalım.

syms xlimit(x/abs(x), x, 0, ’left’)ans = -1

Sagdan limit bulalım.

syms xlimit(x/abs(x), x, 0, ’right’)ans = 1

Bu durumda f(x) = x|x| fonksiyonunun sıfır noktasındaki limiti yoktur.

syms xlimit(x/abs(x), x, 0)ans = NaN

taylor komutu ile Taylor serisi bulunabilir. f(x) fonksiyonu türevlenebilirbir fonksiyon olsun. x = a etrafında Taylor serisi

f(x) =

∞∑n=0

(x− a)nf (n)(a)

n!

olarak tanımlıdır. Burada f (n), f(x) fonksiyonunun n. mertebeden türevidir.

syms xf = 1/(5 + 4*cos(x));T = taylor(f, ’Order’, 8)

54

Page 59: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

MATLAB’A GIRIS

returnT =(49*x^6)/131220 + (5*x^4)/1458 + (2*x^2)/81 + 1/9pretty(T)6 4 249 x 5 x 2 x 1------ + ---- + ---- + -131220 1458 81 9

f(x) = ex sinx fonksiyonu için x = 2 etrafında Taylor serisinin ilk 12 terimi ileelde edilen Taylor polinom yaklasımı ile gerçek fonksiyonunun grafigini aynıpencerede çizelim. Sekil 1.23 te Taylor polinomu ve fonksiyon çizilmistir.

syms xg = exp(x*sin(x));t = taylor(g, ’ExpansionPoint’, 2, ’Order’, 12);t = simplify(t);xd = 1:0.05:3;yd = subs(g,x,xd);fplot(t, [1, 3])hold onplot(xd, yd, ’r-.’)title(’Taylor yaklasımı ve gerçek fonksiyon’)legend(’Taylor yaklasımı’,’Fonksiyon’)grid on

MATLAB’da Programlama

Programlama isleminde en önemli süreç tasarım bölümüdür, buna algoritmaolusturma denir. Dogru algoritmayı kurmak gereklidir. Programın algoritmasıhazırlandıktan sonra bir programlama dili (FORTRAN, C, C++, Pascal, Basicgibi) kullanılarak kodlama yani program yazma islemine geçilir. MATLAB ko-mut penceresinde ve özellikle MATLAB editöründe programlar yazılır.

M-dosyaları satır sayısı fazla karmasık programlarda komut penceresi ve ko-mut geçmisi yeterli olmaz. Bu durumlarda komutlar m-uzantılı dosyalarayazdırılır ve tekrar tekrar kullanılabilir. Yeni bir M-dosyası olusturmak içinFile menüsünden New oradan M-file seçilir. Yazılacak kodlar yazılır vedosya dosya_adı.m seklinde kaydedilir. Daha sonra komut penceresindendosya adı yazılarak Enter tusuna basılarak çalıstırılır. Dosyanın çalıstırıla-bilmesi için dosyanın aktif MATLAB klasöründe olması gerekir. Dosya için-deki komutlar komut penceresinde görülmez. Sadece islem sonuçları görülür.

Eger komutların komut penceresinde gösterilmesi isteniyorsa echo komutukullanılır. echo on yazılırsa komutlar görülür, echo off yazılırsa görülmez.

55

Page 60: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

MATLAB’A GIRIS

Sekil 1.23: Taylor polinomu

MATLAB programında iki tür M-dosyası ousturulabilir: 1. Düz yazı dosyası(script file), 2. Fonksiyon dosyası (function file)

1. Düzyazı Dosyaları: Komut penceresine yazılabilecek komutlar dogrudanM-dosyasına yazılarak olusturulur. Böylece kullanılan komutlar saklanabilirve tekrar tekrar kullanılabilir.

2. Fonksiyon Dosyaları: Düzyazı dosyalarından farklı olarak fonksiyon dosya-ları girdi degerleri alıp çıktı degerler üretebilirler. Fonksiyon dosyaları olus-turulurken komutlar yazılmadan önce M-dosyasının bir fonksiyon dosyasıoldugunu MATLAB’ta function fonksiyon_adı: Hiçbir girdi degeri almazve çıktı üretmez. Düz yazı dosyası ile aynı islevi görür.

function fonksiyon_adı(a): Fonksiyon bir tane girdi a degeri alır.

function fonksiyon_adı(a,b,c): Fonksiyon üç tane girdi degeri alır.

function x=fonksiyon_adı(a,b,c): Girdi degerleri olarak (a,b,c) deger-lerini alınmıstır, çıktı degeri ise sadece x üretir.

function [x,y,z]=fonksiyon_adı(a,b,c): Girdi degerleri olarak (a,b,c)degerlerini alınmıstır, üç tane çıktı üretilir, x,y,z üretir.

Fonksiyonun türüne göre girdi ve çıktı sayıları belirlenir. Burada önemli olandosya adı ile fonksiyon-adı ile gösterilen fonksiyon adının aynı olmasıdır.

Fonksiyon türüne göre komut penceresinde kullanımıda degisir. Ilk tür içinsadece fonksiyon adını yazmak yeterlidir.

56

Page 61: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

MATLAB’A GIRIS

>>fonksiyon_adı

Ikinci kullanımda ise fonksiyon girdi degerleri aldıgından, bu degerlerin pa-rantez içinde fonksiyon adından sonra verilmesi gerekir.

>>fonksiyon_adı(a-degeri)

Üçüncü kullanımda üç tane girdi degeri oldugu için

>>fonksiyon_adı(a-degeri,b-degeri,c-degeri)

Dördüncü kullanımda bir çıktı degeri oldugundan fonksiyonun çıktısını birdegiskene atanır.

>>x=fonksiyon_adı(a-degeri,b-degeri,c-degeri)

En son kullanımda üç çıktı degeri oldugundan fonksiyonun her çıktısı birdegiskene atanır.

>>[x,y,z]=fonksiyon_adı(a-degeri,b-degeri,c-degeri)

Fonksiyon Olusturma:

File menüsünden New oradan M-file seçilir. MATLAB Editör programı açı-lır.

Örnek 1.0.8

Yarıçapı ve yüksekligi verilen silindirin hacmini bulan bir program yazımınabakalım.

%Bu program yarıçapı r ve yüksekligi h olan bir silindirinhacmini hesaplar.r=input(’Silindir yarıçapını giriniz (cm): ’);h=input(’Silindir yüksekligini giriniz (cm): ’);%Program çalıstırıldıgında r ve h’nin degerlerini sorar.V=pi*r^2*h; %Burada hacim hesaplanır.fprintf(’Silindirin hacmi:%gcm3\n’, V)%Burada virgülden sonra yazılan V, metinde gösterilen %g ile gösterilenyere yazılır. \n komutu metnin yeni bir satıra yazılmasını saglar.

57

Page 62: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

MATLAB’A GIRIS

Bu dosyayı silindir.m olarak kaydedelim. Programı MATLAB Editörde F5tusuna basarak veya komut penceresinde silindir.m yazarak çalıstırılabi-lir. Yarıçapı r=6 yüksekligi h=9 cm olan silindirin hacmini bulalım.

>> silindir.mSilindir yarıçapını giriniz (cm): 6Silindir yüksekligini giriniz (cm): 9Silindirin hacmi:1017.88cm3

Programda bir degisiklik yapmak için-Komut penceresinde Edit silindir.m veya-MATLAB Editör kullanılarakyapılabilir. Bir sonraki adımda silindirin hacmini hesaplayan fonksiyon dos-yası yazımını görelim. Fonksiyon için function V=silindirhacim(r,h) kul-lanılır. Burada silindirhacim fonksiyonun adı, V çıktı degeri, (r,h) deger-leri girdi degerleridir.File menüsünden New oradan M-file seçilir. MATLAB Editör programı açı-lır.

function V=silindirhacim(r,h)

% Bu fonksiyon yarıçapı r(cm) ve yüksekligi h(cm) olan bir silindirin

hacmini hesaplar.% Kullanımı:% Hacim=silindirhacim(r,h)

V=pi*r^2*h;

Fonksiyonu çalıstırmak için komut penceresine gelinir.

>> Hacim=silindirhacim(1,5) %yarıçapı 1cm, yüksekligi 5cm olan

silindirin hacmiHacim =15.7080

Fonksiyon ile ilgili bilgiye help komutu ile ulasılabilir.

>> help silindirhacimBu fonksiyon yarıçapı r(cm) ve yüksekligi h(cm) olan bir silindirin

hacmini hesaplar.Kullanımı:Hacim=silindirhacim(r,h)

58

Page 63: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

MATLAB’A GIRIS

silindirhacim kendi basına çalıstırılırsa sonuç ans degiskenine atanır.

>> silindirhacim(1,5)ans =15.7080

Kosul Ifadeleri

MATLAB’da if, elseif, else ve switch kosul ifadeleri kullanılır.

if deyimi

if (kosul veya kosullar)kod bloguend

Eger if deyiminden sonra parantez içinde verilen kosulu veya kosullar sagla-nıyorsa kod blogu ile gösterilen islemler end ifadesi gelene kadar yapılır. Egersaglanmıyorsa dogrudan end deyiminden sonraki satıra gidilir.

end ile MATLAB’a if ifadesinin bittigi ile bildirilir. Eger if ifadesinin kosulbölümüne sonucu sıfır yapacak (mantıksal ve iliskisel opretörler kullanılarakyapılan) ifade yazılırsa, if deyimi ile end arasında kalan islemler yapılmaz.Eger sounucu bir olan bir kosul ifadesi yazılacak olursa, if ile end arasındakalan tüm islemler yapılır.

>> a=3; b=4;>> if (a<b)a=a+1;end>> aa =4

a<b saglandıgı için (a<b ifadesinin sonucu bir) a=a+1 islemi yapılmıs, a de-giskeninin degeri 1 birim arttırılmıstır. end ifadesinden sonra a degerine ba-kılmıs ve degerin 1 arttıgı görülmüstür.

>> a=3; b=4;>> if (a==b)a=a+1;end>> aa =3

59

Page 64: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

MATLAB’A GIRIS

Yanlıs bir kosul ifadesi oldugundan (a==b ifadesinin sonucu sıfır) a degerindebir degisiklik yapılmamıstır. Kosul ifadeleri yazılırken her türlü ifade kullanı-labilir. Kosul ifadeleri tanımlanırken bazen bir tek kosul yeterli olmayabilir.Iki veya daha fazla kosulu bir arada kullanmak gerekebilir. Bunun için man-tıksal operatörler | (veya), & (ve), ~ (degil) operatörleri kullanılır.

Örnek 1.0.9 Bir ögrencinin sınavları 69, 87 ve 83 olarak verilmistir. Ögrencinindönem sonu aldıgı puan=0.3∗(sınav 1+sınav 2)+0.4∗final olarak hesaplanıyorsave harf notları

A: 100− 90 B: 80− 89 C : 70− 79 D : 60− 69 F: < 60

seklinde veriliyorsa, ögrenci hangi harf notunu alır? Bunun için gereken prog-ramı yazalım.

>> not1=69; not2=87; final=83;>> puan=0.3*(not1+not2)+0.4*finalpuan =80>> if (puan>=90)not=’A’end>> if (puan>=80 & puan<90)not=’B’endnot =B>> if (puan>=70 & puan<80)not=’C’end>> if (puan>=60 & puan<70)not=’D’end>> if (puan<90)end>> if (puan<60)not=’F’end>> notnot =B

Ögrencinin puanı 80 oldugu için notu B olur.

else if deyimi: Ardarda yazılan if deyimlerinde, MATLAB her deyimini ayrıayrı inceler. Yukarıdaki örnekte MATLAB kullanılan bes tane if deyimini deinceler. Halbuki not degerine ikinci if deyiminde ulasılmıstır.

60

Page 65: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

MATLAB’A GIRIS

Yani sonradan incelenen üç if gereksizdir ve kodun çalısma süresini uzatır.Bu nedenle MATLAB’da elseif isimli baska bir deyim tanımlanmıstır. Bukomut if deyiminin devamında kullanılır.

if (kosul veya kosullar)komutlar 1elseif (kosul veya kosullar)komutlar 2...elseif (kosul veya kosullar)komutlar nend

Eger if deyimi içindeki ifade dogru ise komutlar 1 islemleri yapılır ve ende gidilir. Dogru degilse birinci elseif deyimine gidilir. Eger birinci elseifkosulları dogru ise komutlar 2 deki islemler yapılır ve end e gidilir, dogrudegilse ikinci elseif deyimine gidilir. Eger ikinci elseif deyimindeki kosul-lar dogru ise komutlar 3 islemleri yapılır ve end e gidilir, degilse üçüncüelseif deyimine gidilir, bu sekilde devam edilir. Yani herhangi bir if veyaelseif deyimleri içinde aranan kosul saglanırsa komutlar uygulanır ve kalanelseif deyimlerine bakılmadan dogrudan end e gidilir. Böylece bakılmasınagerek kalmayan kısımlar atlanmıs olur ve kısa sürede sonuca varılır. Örnek1.0.9 not sorusunu elseif deyimi ile tekrar çözelim.

>> not1=69; not2=87; final=83;>> puan=0.3*(not1+not2)+0.4*final;>> if (puan>=90)not=’A’;elseif (puan>=80)not=’B’;elseif (puan>=70)not=’C’;elseif (puan>=60)not=’D’;elseif (puan<60)not=’F’;end>> notnot =B

61

Page 66: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

MATLAB’A GIRIS

if deyimindeki sart saglanmadıgı için birinci elseif deyimine gidilir, buradapuan<90 birinci kosul yanlıstır ve puan=80 oldugu için not=’B’ olur ve ende gidilir.

else deyimi

if (kosul veya kosullar)komutlar 1elseif (kosul veya kosullar)komutlar 2...elsekomutlarend

Burada else ile yukarıdaki kosullar saglanmıyorsa komutlar ile verilen is-lemler yapılır.

>> not1=69; not2=87; final=83;>> puan=0.3*(not1+not2)+0.4*final;>> if (puan>=90)not=’A’;elseif (puan>=80 & puan<90)not=’B’;elseif (puan>=70 & puan<80)not=’C’;elseif (puan>=60 & puan<70)not=’D’;elsenot=’F’;end>> notnot =B

Burada kullanılan else ile yukarıdaki kosullar saglanmıyorsa, diger bir ifadeile puan<60 ise, notun F olur.

switch deyimi

Sadece esit kosulunun arandıgı kosul ifadeleri için kullanılır.

62

Page 67: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

MATLAB’A GIRIS

switch ifadecase kosul 1komutlar 1case {kosul 2.1, kosul 2.2}komutlar 2otherwisekomutlar 3end

Ifade yerine bir degisken veya fonksiyon yazılabilir. kosul 1 yerine bir sayıveya ifade yazılabilir. ’A’, ’ABCD’ gibi string ifadeleri tırnak içinde yazılır.Birden fazla kosul yazılabilir, küme parantezi kullanılır. Eger ifade=kosul 1ise komutlar 1 yapılır. Iki kosul oldugunda ifade=kosul 2.1 veya

ifade=kosul 2.2 ise komutlar 2 yapılır. Sondaki otherwise deyimi elseile benzerdir. Yukarıdaki case deyimiyle verilen sartlar saglanmazsa komutlar 3yapılır.

Ödevlerin notları su seklide sınıflandırılmıs olsun.

10 : mükemmel 9−8 : çok iyi 7−6 : iyi 5−4 : idare eder 3−2 : kötü 1 : çok kötü

>> Not=7;>> switch Notcase 10disp(’mükemmel’)case {9,8}disp(’çok iyi’)case {7,6}disp(’iyi’)case {5,4}disp(’idare eder’)case {3,2}disp(’kötü’)otherwisedisp(’çok kötü’)endiyi

Ögrencinin notu 7 oldugu için iyi olarak sonuç çıkmıstır. Kosul saglandıgın-dan itibaren diger case deyimleri atlanarak dogrudan end e gidilir.

63

Page 68: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

MATLAB’A GIRIS

Döngü Ifadeleri

Aynı kod parçasının farklı degerler için tekrar tekrar icra edilmesine döngüdenir. Iki sekilde olabilir.

1. Daha önce belirlenen sabit bir sayı kadar (for döngüleri) tekrar edilendöngü

2. Belli bir kosul saglandıgı sürece (while döngüleri) devam eden döngü

for döngüsü

Kullanım sekli

for x=baslangıç:bitiskomutlarend

Komutlar ile gösterilen islemleri, x vektörünün her elemanı için gerçekles-tirilir. Örnegin x=1:10 için komutlar ile tanımlanan islemler x=1,2,...,10olmak üzere 10 kez tekrar edilir.

for x=baslangıç:artıs:bitiskomutlarend

Örnegin x=1:0.5:10 için x=1,1.5,2,...,9.5,10 olmak üzere 19 kez tekrarettirilir.

for x=[x1,x2,x3,...,xn]komutlarend

Komutlar x vektörünün her elemanı için tekrar ettirilir. x vektörü istenirseönceden tanımlanabilir.

x=baslangıç:bitisfor xkomutlarend

Örnegin 1’den 10’a kadar olan sayıların karelerini for döngüsü ile bulalım.

64

Page 69: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

MATLAB’A GIRIS

>> for i=1:10x(i)=i^2;end>> xx =1 4 9 16 25 36 49 64 81 100

Örnek 1.0.10 Ögrencilerin aldıkları notlar asagıdaki gibi verilsin. Harf notla-rını for döngüsü kullanarak hesaplatalım.

Ogr. 1: 87 Ogr. 2: 68 Ogr. 3: 98 Ogr. 4: 75 Ogr. 5: 82 Ogr. 6: 58

>> Puan=[87 68 98 75 82 58];>> Isim=[’1’;’2’;’3’;’4’;’5’;’6’];>> for x=1:6if (Puan(x)>=90)Not(x)=’A’;elseif (Puan(x)>=80)Not(x)=’B’;elseif (Puan(x)>=70)Not(x)=’C’;elseif (Puan(x)>=60)Not(x)=’D’;elseNot(x)=’F’;endend

Sonuçları gösterelim

>> for i=1:6disp([Isim(i),’---->’ Not(i)])end1---->B2---->D3---->A4---->C5---->B6---->F

for döngüsü kullanarak iki matrisin çarpımı islemini yapalım.

65

Page 70: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

MATLAB’A GIRIS

Örnek 1.0.11 A =

1 2 0 12 1 3 20 1 4 1

3×4

, B =

1 2 10 1 20 0 21 3 2

4×3

matrisleri verilsin.

C = A∗B matrisini for döngüsü ile yapalım. Burada C matrisi 3×3 boyutundabir matristir.

>> A=[1 2 0 1;2 1 3 2;0 1 4 1];>> B=[1 2 1;0 1 2;0 0 2;1 3 2];>> for i=1:3for j=1:3C(i,j)=A(i,1)*B(1,j)+A(i,2)*B(2,j)+A(i,3)*B(3,j)+A(i,4)*B(4,j);endend>> CC =2 7 74 11 141 4 12

Burada iki tane for döngüsü vardır ve birinci for döngüsü için

i=1→j=1,j=2,j=3i=2→j=1,j=2,j=3i=3→j=1,j=2,j=3islemleri yapılır. Aynı islem MATLAB’da

>> C=A*BC =2 7 74 11 141 4 12

seklinde yapılabilir.

while döngüsü

Verilen kosul dogru oldugu sürece kodların tekrarlandıgı döngüdür.

while kosul veya kosullarkomutlarend

66

Page 71: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

MATLAB’A GIRIS

>> x=1;>> while x<10disp(x^2)x=x+1;end149162536496481

Burada x = 1 olarak atanmıstır. while döngüsü kurularak x < 10 oldugusürece while ile end arasında verilen islemler tekrarlanır. Her tekrar için x2

ifadesi ekrana yazdırılmıs ve x degeri 1 arttırılmıstır. end deyimine gelindi-ginde ise tekrar while döngüsüne gelinir ve yeni x degeri x + 1 için x < 10kosuluna bakılır. Eger dogru ise tekrar while döngüsüne girilir ve islemleryapılır, yanlıs ise end gelinir. En son olarak 92 = 81 yazdırılmıstır. Çünkü 81yazdırıldıktan sonra x bir artmıs ve degeri 10 olmustur. end komutuna ge-lince tekrar while komutuna gidilmis ve x < 10 kosuluna bakılmıstır. x = 10oldugu için kosul yanlıs olmustur ve döngüye son verilmistir.

Örnek 1.0.12

sinx =∞∑n=0

(−1)nx2n+1

(2n+ 1)!

toplamını x = π2 için mutlak hata 10−10 dan küçük olacak sekilde hesaplayı-

nız. sin π2 gerçek degeri ile seri toplamı sonucunda bulunan farkı hesaplayınız.

Isleme son vermek için |1− sinx| > 10−10 kosulu kontrol edilir.

>> n=0;>> tsinx=0;>> while abs((1-tsinx))>10^(-10)tsinx=tsinx+(-1)^n*((pi/2)^(2*n+1)/(factorial(2*n+1)));n=n+1endn =1n =2n =3

67

Page 72: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

MATLAB’A GIRIS

n =4n =5n =6n =7n =8>> tsinxtsinx =1.0000

Elde edilen sonuç sin π2 = 1 gerçek degeridir.

68

Page 73: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

2 Lineer Denklem Sistemleri

MATLAB’da matrislerle olan islemlere örnekler verelim. Ax = b biçimindekilineer denklem sisteminin çözümüne bakalım. Burada A, nxn matris, x, ntane bilinmeyen içeren nx1 boyutunda olan vektör, b, nx1 sabitlerden olusanvektördür.

MATLAB’da Ax = b denklem sisteminin çözümü

x=A\b, A−1b: eger A matrisinin tersi varsa, mldivide komutlarıyla bulunabi-lir.

Örnek:

A =

1 2 34 5 63 2 2

, b =

140

olsun.

(a) 3(ATA)2 matrisini

(b) A matrisinin tersini (inverse)

(c) A matrisinin determinantını

(d) 5A−1 − 4A2 +A matrisini

(e) A matrisinin 1,2 ve sonsuz normlarını

(f) A matrisinin sonsuz normuna göre kosul sayısını (condition number)

(g) A matrisinin rankını

(h) A matrisinin LU ayrıstırmasını (LU decomposition)

(i) A matrisinin özdeger (eigenvalues) ve özvektörlerini (eigenvectors)

(j) Ax = b dogrusal denklem sisteminin çözümünü bulunuz.

Komut penceresinde

>> A=[1 2 3;4 5 6;3 2 2];b=[1;4;0];B=3*(A’*A)^2C=inv(A)

69

Page 74: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

Lineer Denklem Sistemleri

detA=det(A)D=5*C-4*A^2+Anorm1=norm(A,1)norm2=norm(A,2)norm3=norm(A,inf)kosulsayisi=cond(A,inf)rankA=rank(A)[L,U,P]=lu(A)[ozvektor ozdeger]=eig(A)x=A\bB =7647 8916 107858916 10419 1261210785 12612 15270C =0.666666666666666 -0.666666666666666 1.000000000000000-3.333333333333333 2.333333333333333 -2.0000000000000002.333333333333333 -1.333333333333333 1.000000000000000detA =-3D =1.0e+02 *-0.676666666666667 -0.733333333333333 -0.760000000000000-1.806666666666667 -1.633333333333334 -2.200000000000000-0.533333333333333 -0.846666666666667 -0.930000000000000norm1 = 11norm2 = 10.265561913128545norm3 = 15kosulsayisi = 1.150000000000000e+02rankA = 3L =1.000000000000000 0 00.750000000000000 1.000000000000000 00.250000000000000 -0.428571428571429 1.000000000000000U =4.000000000000000 5.000000000000000 6.0000000000000000 -1.750000000000000 -2.5000000000000000 0 0.428571428571429P =0 1 00 0 11 0 0

70

Page 75: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

Lineer Denklem Sistemleri

ozvektor =-0.345532192256901 -0.655699955691986 0.266734808903318-0.858376046154199 -0.253702663755918 -0.832514876152186-0.379207156449906 0.711120613193486 0.485563098582069ozdeger =9.260803553539535 0 00 -1.479726432728954 00 0 0.218922879189408x =

-2.0000000000000016.000000000000000

-3.000000000000000

Örnek: Verilen dogrusal denkleminin çözümünü MATLAB ile bulunuz.

x1 − x2 + 3x3 = 2−2x1 + x2 + x3 = 4

4x1 − 4x2 + 12x3 = 8

>> A=[1 -1 3;-2 1 1;4 -4 12];b= [2;4;8];x=A\b

Ag=[A b]rref(Ag)Warning: Matrix is singular to working precision.

x =NaNNaNNaNAg =1 -1 3 2-2 1 1 44 -4 12 8ans =1 0 -4 -60 1 -7 -80 0 0 0

Uyarı vermesinin sebebi katsayılar matrisinin tersinin olmamasıdır. Bu du-rumda sistemin ya çözümü yoktur ya da sonsuz çözümü vardır. Bunu ayırt

71

Page 76: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

Lineer Denklem Sistemleri

edebilmek için ilaveli matrisin ([A b] augmented matrix) matrisin indirgen-mis satır eselon formuna (reduced row echelon form-rref komutu ile) bakılır.Elde edilen indirgenmis eselon forma bakılarak sistemin sonsuz çözümü ol-dugu görülmektedir. Sonsuz çözüm kümesi: S = {t ∈ R | (−6 + 4t,−8 + 7t, t)}

72

Page 77: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

3 Sayısal Türev

MATLAB türev için diff isimli bir komut içerir.diff(x) komutu verilen x vektör ise, bitisik iki deger arasındaki farklarınolusturdugu bir vektör olusturur. Sonuç vektörünün eleman sayısı x?inkindenbir azdır. Örnegin, Matlab komut penceresinde

>> x=[1 4 2 4 9 11];>> diff(x)ans = 3 -2 2 5 2

Sayısal Türev Örnekleri:1. Bu örnekte bir cismin konum fonksiyonu verilmis. Yaklasık hız ve ivmehesaplanır, gerçek hız ve ivme ile aynı grafige çizilmistir.

>> konum=inline(’4*t.^3-10*t.^2-t+5’);t=0:0.5:100;x=konum(t);v=diff(x)./diff(t); %hız hesaplandı geri farka göretv=t(2:end); %geri farkta 1. t de türev yoka=diff(v)./diff(tv); %ivme hesaplandıta=tv(2:end);plot(t,x,’:’,tv,v,’--’,ta,a,’g’) %Gerçek hız ve ivme degerleri ile kıyaslama %En büyük mutlak hatayı bulmahiz=inline(’12*t.^2-20*t-1’);ghiz=hiz(tv); %gerçek hiz degerlerihata_hiz=ghiz-v;max(abs(hata_hiz)) %hızdaki en büyük mutlak hata hesaplandıplot(tv,ghiz,’r’,tv,v,’o’) %gerçek hız ve sayısal hız aynı grafige çizildians = 594

Sekil 3.1 gerçek hız ve yaklasık hız degerleri zoom yapılarak gösterilmistir.Gerçek hız degerleri daire ile çizilen noktalardır. Devam edilip ivme degerlerielde edilir.

ivme=inline(’24*t-20’);givme=ivme(ta);hata_ivme=givme-a;max(abs(hata_ivme)) %ivmedeki en büyük mutlak hata hesaplandıplot(ta,givme,’r’,ta,a,’o’) %Gerçek ivme ve sayısal ivme aynı grafige çizildi

73

Page 78: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

Sayısal Türev

42 44 46 48 50 52 54

2

2.2

2.4

2.6

2.8

3

3.2

3.4

3.6

#104 Gercek hiz ve yaklasik hiz

Sekil 3.1: Gercek hiz ve yaklasik hiz

74

Page 79: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

Sayısal Türev

Sekil 3.2 gerçek ivme ve yaklasık ivme degerleri zoom yaılarak verilmistir.Gerçek ivme degerleri daire ile çizilen noktalardır.

2. Bu örnekte bir fonksiyonun [0,4] aralıgındaki geri fark ile hesaplanmıstürevi ve gerçek türevi aynı grafige çizildi.

x=0:.01:4;y=5*cos(10*x)+x.^3-2*x.^2-6*x+10;sturev=diff(y)./diff(x);xd=x(2:end);plot(xd,sturev,’r’)hold ongturev=-50*sin(10*xd)+3*xd.^2-4*xd-6;plot(xd,gturev)hata=gturev-sturev;max(abs(hata))

Sekil 3.3 de gerçek hız ve yaklasık hız degerleri gösterilmistir. Kırmızı renkteçizilen grafik sayısal türev degerleridir. Grafige zoom yapıldıgında Sekil 3.4deki gibi fark daha açık görülür.

3. Bu örnekte verilen x ve karsılık gelen y degerlerine uyan 2. Derece polinombulundu. Polinomun ve verilerin grafigi aynı grafige çizildi. Daha sonra po-linomun türevi ve yaklasık türev degerleri ileri fark kullanılarak aynı grafigeçizildi.

x=0:.1:1;y=[-0.447 1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.30 11.2];p=polyfit(x,y,2) %2. derece polinomun katsayılarıxi=linspace(0,1,100);yi=polyval(p,xi); %polinomun degerleri xi noktalarında hesaplandıplot(x,y,’o’,xi,yi,’--’)

Polinomun ve verilen x-y degerleinin grafigi

pd=polyder(p) %polinomun türevi alındı türev polinomunun katsayılarıdyp=polyval(pd,x); %türevi x noktalarında hesaplandıdy=diff(y)./diff(x);xd=x(1:end-1); %ileri fark yaklasımı ile türev grafikplot(xd,dy,x,dyp,’:’)

4. Bu örnekte sin x fonksiyonunun [0, 2π] arasındaki türevi önce geri farkile hesaplandı gerçek türev ve sayısal türev grafigi çizdirildi. Sonra merkezifarkla hesaplandı ve gerçek türev ve sayısal türev degerleri grafige çizdirildi.Ayrıca en büyük mutlak hatalar hesaplandı.

75

Page 80: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

Sayısal Türev

56 58 60 62 64 66 68

1250

1300

1350

1400

1450

1500

1550

1600

Sekil 3.2: Gercek ivme ve yaklasik ivme

76

Page 81: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

Sayısal Türev

0 0.5 1 1.5 2 2.5 3 3.5 4-60

-40

-20

0

20

40

60

80

Sekil 3.3: Gercek hiz ve yaklasik hiz

77

Page 82: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

Sayısal Türev

1 1.1 1.2 1.3 1.4 1.5 1.6 1.7

5

10

15

20

25

30

Sekil 3.4: Gercek hiz ve yaklasik hiz grafigi zoom

78

Page 83: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

Sayısal Türev

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1-2

0

2

4

6

8

10

12

Sekil 3.5: Verilen noktalar ve polinomun grafigi

79

Page 84: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

Sayısal Türev

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1-5

0

5

10

15

20

25

30

Sekil 3.6: Polinomun türevi ve gerçek türev

80

Page 85: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

Sayısal Türev

x=linspace(0,2*pi); \%0, 2pi arasında 100 noktay=sin(x);dy=diff(y)/(x(2)-x(1)); \%burada h esit h=x(2)-x(1) alınabilirxd=x(2:end); \%geri farkty=cos(x); \%gerçek türevgerturev=cos(xd);plot(xd,dy,’g’,xd,gerturev,’r’) \%kırmızı olan gerçek türev yesil olan yaklasık türevmax(abs(cos(xd)-dy))ans =0.0317

Sekil 3.7 de gerçek türev ve yaklasık türev degerleri verilmistir.

Merkezi fark ve gerçek türevin grafigi

tmerkezi=(y(3:end)-y(1:end-2))/(x(3)-x(1)); %merkezi fark yaklasımıxm=x(2:end-1);gerturevxm=cos(xm);plot(xm,tmerkezi,xm, gerturevxm,’r’) %kırmızı olan gerçek türevmax(abs(cos(xm)-tmerkezi))ans = 6.7086e-004

Sekil 3.8 de merkezi fark ile hesaplanmıs yaklasık türev ve gerçek türev gra-figi verilmistir. Hata çok küçük oldugu için grafikler nerdeyse üst üstedir.

5. Bu örnekte verilen fonksiyonun merkezi fark ile yaklasık türev degerlerihesaplandı. Gerçek türev degerleri ile aynı grafige çizildi.

x=0:.01:0.8;y=0.2+25*x-200*x.^2+675*x.^3-900*x.^4+400*x.^5;saymerkez=(y(3:end)-y(1:end-2))/(x(3)-x(1));xm=x(2:end-1);gerturev=25-400*xm+3*675*xm.^2-4*900*xm.^3+5*400*xm.^4;plot(xm,saymerkez,’o’,xm,gerturev)

Sekil 3.9 de yaklasık türev ve gerçek türev degerleri verilmistir.

81

Page 86: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

Sayısal Türev

0 1 2 3 4 5 6 7-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

Sekil 3.7: Gerçek türev ve yaklasık türev

82

Page 87: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

Sayısal Türev

0 1 2 3 4 5 6 7-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

Sekil 3.8: Merkezi fark ile yaklasık türev ve gerçek türev

83

Page 88: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

Sayısal Türev

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8-25

-20

-15

-10

-5

0

5

10

15

20

25

Sekil 3.9: Yaklasık türev ve gerçek türev

84

Page 89: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

4 Sayısal Integral

Eger integrali alınacak fonksiyonun antitürev fonksiyonu varsa ancak ger-çek integral degeri bulunabilir. Antitürev fonksiyonu yoksa (türevi integralialınacak olan fonksiyon olan bir fonksiyon), integral analitik olarak hesapla-namaz. Ilk olarak sembolik degisken olusturulur. Fonksiyon yazılır.

Örnek olarak ∫ π

0sinxdx

integralinin gerçek degerini bulalım.

>> syms x>> f=sin(x)>> int(f,0,pi)

ans =2

Gerçek integral degeri 2 olarak bulunmustur.

Eger fonksiyon integrallenemiyorsa (antitürev fonksiyonu yoksa, örnegin ex2, cosx2

gibi), sayısal integral yöntemleri ile yaklasık integral degeri bulunabilir.

Yamuk kuralı

Yamugun ingilizcesi ’trapezoid’ kelimesidir. MATLAB’da yamuk kuralı içinMATLAB’ın hazır fonksiyonu trapz fonksiyonu tanımlanmıstır.

Genel kullanımı:

trapz(x,f): f fonksiyonunun integralini yamuk kuralı ile hesaplar. Buradax degerleri olusturulur. Karsılık gelen f degerleri olusturulur. x ve f vektör-lerinin boyutları aynı olmalıdır.

Örnek: ∫ π

0sinxdx

integralini n = 10, 100, 1000 aralık için yamuk kuralı ile hesaplayalım. Gerçekintegral degeri 2’dir. Bagıl hata yüzdelerini bulalım.

85

Page 90: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

Sayısal Integral

>> format long>> x1=linspace(0,pi,10);>> f1=sin(x1);>> A1=trapz(x1,f1)>> Iger=2;>> b1=(abs(Iger-A1)/abs(Iger))*100

A1 = 1.979650811216484b1 = 1.017459439175827

>> x2=linspace(0,pi,100);>> f2=sin(x2);>> A2=trapz(x2,f2)>> b2=(abs(Iger-A2)/abs(Iger))*100

A2 = 1.999832163893993b2 = 0.008391805300367

>> x3=linspace(0,pi,1000);>> f3=sin(x3);>> A3=trapz(x3,f3)>> b3=(abs(Iger-A3)/abs(Iger))*100

A3 = 1.999998351770852b3 = 8.241145739162903e-005

Görüldügü gibi aralık sayısı arttıkça bagıl hata yüzdeleri düsmüstür.

Örnek: ∫ 10

1(ex − x)dx

integralini farklı sayıda aralık kullanarak Yamuk kuralı ile hesaplatalım. Ba-gıl hata yüzdesini bulalım.

>> format long% 10 nokta kullanarak>> x=1:10; %toplam 10 nokta>> f=exp(x)-x;>> A1= trapz(x,f)

A1 = 2.377968180701373e+004%Daha fazla nokta kullanarak>> x=1:0.1:10; %toplam 91 nokta>> f=exp(x)-x;>> A2=trapz(x,f)

A2 =2.199259757778003e+004%Daha fazla nokta kullanarak>> x=1:0.01:10; %toplam 901 nokta

86

Page 91: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

Sayısal Integral

>> f=exp(x)-x;>> A3= trapz(x,f)

A3 = 2.197443104390165e+004

Integralin analitik degeri:

>> syms x;>> f2 =exp(x) - x;>> int(f2,1,10)

ans =exp(10) - exp(1) - 99/2>> Igercek=double(ans)

Igercek =2.197424751297826e+04%Bagıl Hatala Yüzdeleri>> bagil_hata1=(abs(Igercek-A1)/abs(Igercek))*100

bagil_hata1 = 8.216137062118561 %10 nokta kullanılarak>> bagil_hata2=(abs(Igercek-A2)/abs(Igercek))*100

bagil_hata2 = 0.083507136209958 %91 nokta kullanılarak>> bagil_hata3=(abs(Igercek-A3)/abs(Igercek))*100

bagil_hata3 =8.352091387057165e-004 %901 nokta kullanılarak

Sonuç: daha fazla nokta kullanıldıgında hata azalmaktadır.

Simdi Yamuk kuralı için kendi fonksiyonumuzu yazalım.

Yamuk kuralı için MATLAB fonksiyonu

function I=Trap(f,a,b,n)% f fonksiyonunun [a,b] aralıgında integralini n alt aralık kullanarak yamuk kuralı ile %hesaplar.%f inline olarak tanımlanmıs fonksiyon olmalıdır.% I=Trap(@f,a,b,n)h=(b-a)/n;S=f(a);for i=1:n-1x(i)=a+h*i;S=S+2*f(x(i));endS=S+f(b);I=h*S/2;

Örnek: ∫ 2

1

1

xdx

integralini yukarıda yazılan ’Trap’ fonksiyonunu kullanarak n = 2, 4, 8 aralıkiçin hesaplayınız. Yamuk kuralı ile hesaplatalım.

[a, b] = [1, 2] ve f(x) = 1/x olur.

87

Page 92: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

Sayısal Integral

>> format long>> I2=Trap(@(x) 1./x,1,2,2) %n=2 aralık için

I2 = 0.708333333333333>> I4=Trap(@(x) 1./x,1,2,4) %n=4 aralık için

I4 = 0.697023809523809>> I8=Trap(@(x) 1./x,1,2,8) %n=8 aralık için

I8 =0.694121850371850

veya

Öncelikle fonksiyon dosyası olusturulur. MATLAB Editöründe

function f1=func1(x)f1=1./x;

dosyası olusturulur ve ’func1.m’ olarak kaydedilir. MATLAB komut pencere-sinde

>> format long>> I2y= Trap(@func1,1,2,2) %n=2 aralık için

I2y=0.708333333333333>> I4y= Trap(@func1,1,2,4) %n=4 aralık için

I4y = 0.697023809523809>> I8y= Trap(@func1,1,2,8) %n=8 aralık için

I8y = 0.694121850371850 %aynı sonuçları verdi>> syms x>> Igercek=int(1/x,1,2) %gerçek integral degeri

Igercek = log(2)>> Igercek=eval(Igercek) %’eval’ komutu sembolik degiskeni hesapladı

Igercek = 0.693147180559945% n=2, n=4, n=8 aralık için mutlak hatalar:

>> mutlak_hata1=abs(Igercek-I2) %n=2 aralık için mutlak hatamutlak_hata1 = 0.015186152773388

>> mutlak_hata2=abs(Igercek-I4) %n=4 aralık için mutlak hatamutlak_hata2 =0.003876628963864

>> mutlak_hata8=abs(Igercek-I8) %n=8 aralık için mutlak hatamutlak_hata8 =9.746698119050823e-004

Sonuç: aralık sayısı arttıkça hata azaldı.

Aynı aralık sayıları ile MATLAB’ın hazır fonksiyonu trapz(x,y) komutu ilebulursak

88

Page 93: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

Sayısal Integral

>> h=(2-1)/2;>> x=1:h:2;>> y=1./x;>> IT2=trapz(x,y)

IT2 =0.708333333333333 %n=2 aralık için

>> h=(2-1)/4;>> x=1:h:2;>> y=1./x;>> IT4= trapz(x,y)

IT4 =0.697023809523809 %n=4 aralık için

>> h=(2-1)/8;>> x=1:h:2;>> y=1./x;>> IT8=trapz(x,y)

IT8 =0.694121850371850 %n=8 aralık için

Yamuk kuralı için MATLAB’ın hazır fonksiyonu ve kendi yazdıgımız fonksiyo-nun sonuçlarının karsılastırması

>> fark1= I2-IT2fark1= 0

>> fark2=I4-IT4fark2=0

>> fark3= I8-IT8fark3=1.110223024625157e-016

>> I8I8 = 0.694121850371850

>> IT8IT8 = 0.694121850371850

Aynı sonuçlara ulasılmıstır.

Simpson Kuralı: quad, quadl ve quadgk komutları

quad komutu uyarlamalı Simpson kuralı ile integrali bulan MATLAB’ın hazırfonksiyonudur.

quad(’f’,a,b): f fonksiyonunun [a, b] aralıgındaki integralini Simpson yön-temi ile hesaplar.

89

Page 94: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

Sayısal Integral

quad(’f’,a,b,tolerans): Tolerans mutlak hata degerinin alabilecegi enfazla degeri gösterir. Bu deger büyüdükçe sonuçtaki hata da artar. Küçül-dükçe komutun islem süresi artar. Bu deger girilmezse, otomatik olarak1.0e− 6 (yani 10−6 ) olarak alınır.

quadl komutu uyarlamalı Lobatto kareleme yöntemini kullanır.

quadl(’f’,a,b) : f fonksiyonunun [a, b] aralıgındaki integralini uyarlamalıLobatto yöntemi ile hesaplar.

quadl(’f’,a,b,tolerans): Tolerans mutlak hata degerinin alabilecegi enfazla degeri gösterir. Bu deger büyüdükçe sonuçtaki hata da artar. Küçül-dükçe komutun islem süresi artar. Bu deger girilmezse, otomatik olarak1.0e− 6 (yani 10−6 ) olarak alınır.

quadgk komutu Gauss-Kronrod yöntemi ile hesaplar.

quadgk(’f’,a,b) : f fonksiyonunun [a, b] aralıgındaki integralini Gauss-Kronrodyöntemi ile hesaplar. Aralıklar bölümüne sonsuz eklenebilir.

quadgk(’f’,a,b,’AbsTol’,tolerans): Tolerans mutlak hata degerinin ala-bilecegi en fazla degeri gösterir. Bu deger büyüdükçe sonuçtaki hata da artar.Küçüldükçe komutun islem süresi artar. Bu deger girilmezse, otomatik ola-rak 1.0e− 6 (yani 10−6 ) olarak alınır.

Komutlar için fonksiyonlar farklı sekillerde tanımlanabilir:

1. Fonksiyon dogrudan tek tırnakla komutun içinde kullanılabilir quad(’sin(x)’,0,pi)

2. Fonksiyon önceden ’inline’ komutu ile tanımlanabilir.

f=inline(’x+2’)quad(f,a,b)

3. Daha önceden tanımladıgınız m fonksiyon dosyası olarak kaydedilen fonk-siyon kullanılabilir. quad(g,a,b)

4. Fonksiyon @(x) kullanarak tanımlanabilir. quad(@(x) x.^2+1,a,b)

Örnek: ∫ π

0sinxdx

integralini Simpson kuralı ile hesaplatalım. Bagıl hata yüzdesini bulalım.

>> Is=quad(’sin(x)’,0,pi)>> bs=(abs(Iger-Is)/abs(Iger))*100

Is = 1.999999996398431bs = 1.800784521499566e-007

90

Page 95: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

Sayısal Integral

Tolerans degeri verelim. Bagıl hata yüzdesini bulalım.

>> Is2=quad(’sin(x)’,0,pi,1e-11)Is2 = 1.999999999999987

>> bs2=(abs(Iger-Is2)/abs(Iger))*100bs2 = 6.772360450213455e-013

Bagıl hata yüzdesini bulalım.

Örnek: ∫ 10

1

x2

exdx

integralini Simpson kuralı ile hesaplatalım.

>> format long>> Q1=quad(’x.^2./exp(x)’,1,10)

Q1=1.833858417871337>> Q2=quad(’x.^2./exp(x)’,1,10,1.0e-10) %tolerans degeri 10^(-10) alındı.

Q2 =1.833858414426085>> f=inline(’x.^2./exp(x)’)

f = Inline function:f(x) = x.^2./exp(x)

>> Q3=quad(f,1,10)Q3 =1.833858417871337

m fonksiyon dosyası

function y=g(x)y=x.^2./exp(x);

Komut penceresinde

>> Q4=quad(@g,1,10,1.0e-10)Q4 =1.833858414426085

Eger integralin limitlerinde sonsuz varsa o zaman quadgk kullanılır.

Örnek: ∫ ∞1

x2

exdx

integralini hesaplatalım.

91

Page 96: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

Sayısal Integral

>> Qg1=quadgk(@(x) x.^2./exp(x),1,inf)Qg1= = 1.839397205857212

>> Qg2=quadgk(@(x) x.^2./exp(x),1,inf,’AbsTol’,1.0e-10)Qg2 = 1.839397205857212

Örnek: ∫ ∞−∞

e−x2dx

integralini hesaplatalım.

>> I=quadgk(@(x) exp(-x.^2),-inf,inf)I =1.772453850780313

Örnek: ∫ 2

1e−x

2dx

integralini hesaplatalım. Bu integral analitik olarak hesaplanamaz, e−x2

fonk-siyonunun antitürevi yoktur.

>> Ql1=quadl(’exp(-x.^2)’,1,2)Ql1 = 0.13525721565932

Simpson’s 1/3 kuralı için MATLAB fonksiyonu

function I=Simp(f,a,b,n)% f fonksiyonunun [a,b] aralıgında integralini Simpson?s 1/3 kuralı ile n aralık sayısı için (n %çift sayı olmalıdır) hesaplar.%f fonksiyonu inline veya m-dosyası olabilir.

h=(b-a)/n;x(1)=a;S=f(a);for i=1:nx(i+1)=a+h*i; %x1,x2,?,xn noktaları, indis 1’den basladıend

for i=2:2:n %çift indisler toplama eklendiS=S+4*f(x(i));endfor i=3:2:n-1 %tek indisler toplama eklendiS=S+2*f(x(i));endS=S+f(b);I=h*S/3;

92

Page 97: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

Sayısal Integral

Örnek: ∫ 2

0e−x

2dx

integralini yukarda yazılan Simp fonksiyonunu kullanarak n = 6, n = 8, n = 10aralık için hesaplayınız. Aynı integrali MATLAB’ın hazır fonksiyonları quad vequadl ile hesaplayınız.

Burada [a, b] = [0, 2] ve f(x) = exp(−x.2) olur.

>> f=inline(’exp(-x.^2)’);>> I6=Simp(f,0,2,6) %n=6 aralık için

I6 = 0.882031574954721>> I8=Simp(f,0,2,8) %n=8 aralık için

I8 = 0.882065510401331>> I10=Simp(f,0,2,10) %n=10 aralık için

I10 = 0.882074876854494>> Q=quad(f,0,2) %quad komutu ile

Q = 0.882081194911110

Farkları hesaplama

>> f1=Q-I6f1 = 4.961995638885774e-005

>> f2=Q-I8f2 = 1.568450977851299e-005

>> f3=Q-I10f3 = 6.318056615883805e-006

>> I24=Simp(f,0,2,24) %n=24 aralık içinI24 = 0.882081194422939

>> f4=Q-I24f4 = 4.881710591320143e-010

Aralık sayısı arttıkça fark azaldı.

>> Ql=quadl(f,0,2) %quadl komutu ileQl = 0.882082140308872

>> f4=Ql-I24f4 = 9.458859328015379e-007

Gauss Kareleme Yöntemi MATLAB fonksiyonu

93

Page 98: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

Sayısal Integral

function I=GaussQuad(f,a,b,k)% f fonksiyonunun [a,b] aralıgındaki integralini Gauss kareleme yöntemi ile k (k=2,3,4,5) %nokta kullanarak bulur.

t=[-0.5773502692 -0.7745966692 -0.8611363116 -0.9061798459;0.5773502692 0 -0.3399810436 -0.5384693101;0 0.7745966692 0.3399810436 0;0 0 0.8611363116 0.5384693101;0 0 0 0.9061798459];

c=[1 0.5555555556 0.3478548451 0.2369268850;1 0.8888888889 0.6521451549 0.4786286705;0 0.5555555556 0.6521451549 0.5688888889;0 0 0.3478548451 0.4786286705;0 0 0 0.2369268850];

x(1:k)=0.5*((b-a).*t(1:k,k-1)+b+a);%Integral sınırlarının [a,b] den [-1,1]’e dönüstürülmesiy=feval(f,x);cc(1:k)=c(1:k,k-1);integ=y*cc’;I=integ*(b-a)/2;

Örnek: ∫ 2

0e−x

2dx

integralini Gauss kareleme yöntemi ile k = 2, k = 3, k = 5 nokta kullanarakhesaplayınız. Integralin gerçek degerini bulunuz.

>> f=inline(’exp(-x.^2)’);>> I2=GaussQuad(f,0,2,2) %k=2 nokta kullanarak

I2 = 0.919486116645532>> Igercek=int(’exp(-x^2)’,0,2)

Igercek =1/2*erf(2)*pi^(1/2) %integralin gerçek degeri>> Igercek=eval(Igercek)

ans = 0.882081390762422>> I3=GaussQuad(f,0,2,3) %k=3 nokta kullanarak

I3 =0.878864570919364>> I5=GaussQuad(f,0,2,5) %k=5 nokta kullanarak

I5 =0.882078017608442%mutlak hatalar>> mutlak_hata1=abs(Igercek-I2)

mutlak_hata1 =0.037404725883111>> mutlak_hata2=abs(Igercek-I3)

94

Page 99: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

Sayısal Integral

mutlak_hata2 = 0.003216819843057>> mutlak_hata3=abs(Igercek-I5)

mutlak_hata3 =3.373153979469024e-006

Gauss kareleme yönteminde daha fazla nokta kullanıldıgında hata azaldı.Çift Katlı Integral’dblquad’ komutu sayısal olarak çift katlı integrali dikdörtgen üzerinde he-saplar.Genel kullanımı:q = dblquad(fun,xmin,xmax,ymin,ymax)

q = dblquad(fun,xmin,xmax,ymin,ymax,tol)

q = dblquad(fun,xmin,xmax,ymin,ymax,tol,method)

q = dblquad(fun,xmin,xmax,ymin,ymax) : quad fonksiyonu kullanarakxmin <= x <= xmax, ymin <= y <= ymax dikdörtgeni üzerinde fun(x,y) fonk-siyonunun çift integralini hesaplarq = dblquad(fun,xmin,xmax,ymin,ymax,tolerans) tolerans degeri giri-lir, girilmediginde varsayılan tolerans degeri 1e− 06 yani 10−6 olarak alınır.Örnek: ∫ 2π

π

∫ π

0y sinx+ x cos ydxdy

çift katlı integralini hesaplayalım.1. yol:

Q1=dblquad(@(x,y) y*sin(x)+x*cos(y),0,pi,pi,2*pi)Q1 =29.608813157600196

2.yol:Öncelikle fonksiyon dosyası olusturulur:

function z = cift_int_orn(x, y)z = y*sin(x)+x*cos(y);

Komut penceresinde

Q2 = dblquad(@cift_int_orn,0,pi,pi,2*pi)Q2 = -9.869604377254573

Örnek: Dikdörtgen seklindeki bir plakanın ısısı

T (x, y) = 2xy + 2x− x2 − 2y2 + 72

fonksiyonu ile verilmistir. Eger plakanın uzunlugu 8 m ve genisligi 6 m iseortalama ısıyı MATLAB ile hesaplayınız.

>> ort_isi=dblquad(@(x,y) 2*x*y+2*x-x.^2-2*y.^2+72,0,8,0,6 )ort_isi = 2816

95

Page 100: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz
Page 101: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

5 Kısmi Diferansiyel Denklemler

1. Dalga Denklemi Hiperbolik denklem

utt = c2uxx, 0 ≤ x ≤ l, 0 ≤ t ≤ T

Sınır kosullarıu(0, t) = f1(t), u(1, t) = f2(t), 0 ≤ t ≤ T

Baslangıç kosulları

u(x, 0) = g1(x),∂u

∂t(x, 0) = g2(x), 0 ≤ x ≤ l

Girdi olarak:

l = 1, T = 2, c = 1, f1(t) = 0, f2(t) = 0, g1(x) = x(1− x), g2(x) = 0

n: x-eksenindeki nokta sayısı = 10,

m: t-eksenindeki nokta sayısı = 10,

%waveornek.ml=1;t=2;n=10;n1=n+1;m=20;m1=m+1;h=1/n;f=t/m;c=1.0;x(1)=0;

for i=2:n1x(i)=x(1)+(i-1)*h;endt(1)=0;for i=2:m1

97

Page 102: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

Kısmi Diferansiyel Denklemler

t(i)=t(1)+(i-1)*f;endfor i=1:n1y(i,1)=feval(’f1’,x(i));dy(i,1)=0;end

y(1,1:m1)=0;y(n1,1:m1)=0;p=(c*f/h)^2;p2=p/2;p22=2*(1-p);y(2,2)=(1-p)*y(2,1)+p2*y(3,1)+f*dy(2,1);y(3:n-1,2)=p2*y(2:n-2,1)+(1-p)*y(3:n-1,1)+p2*y(4:n,1)+f*dy(3:n-1,1);y(n,2)=p2*y(n-1,1)+(1-p)*y(n,1)+f*dy(n,1);y(2,3)=p22*y(2,2)+p*y(3,2)-y(2,1);y(3:n-1,3)=p*y(2:n-2,2)+p22*y(3:n-1,2)+p*y(4:n,2)+y(3:n-1,1);y(n,3)=p*y(n-1,2)+p22*y(n,2)-y(n,1);

for j=4:m1y(2,j)=p22*y(2,j-1)+p*y(3,j-1)-y(2,j-2);y(3:n-1,j)=p*y(2:n-2,j-1)+p22*y(3:n-1,j-1)+p*y(4:n,j-1)-y(3:n-1,j-2);y(n,j)=p*y(n-1,j-1)+p22*y(n,j-1)-y(n,j-2);end

disp(’Solution of hyperbolic equation’);disp(’ ’);disp(’x-axis: yatay, delta_x=0.1; t-axis:dikey, delta_t=0.1 ’);disp(’ ’);disp(’Column 1 through 6’);disp(y(1:n1, 1:6));disp(’Column 7 through 12’);disp(y(1:n1, 7:12));disp(’Column 13 through 18’);disp(y(1:n1, 13:18));disp(’Column 18 through 21’);disp(y(1:n1, 18:21));mesh(t,x,y)xlabel(’x’);ylabel(’t’);zlabel(’y’);title(’Hyperbolic curve for y=sin(pi*x)’);

98

Page 103: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

Kısmi Diferansiyel Denklemler

function y=f1(x)y=sin(pi*x);

>>wave>> waveSolution of hyperbolic equation

x-axis: yatay, delta_x=0.1; t-axis:dikey, delta_t=0.1

Column 1 through 60 0 0 0 0 0

0.3090 0.2939 0.2500 1.3572 1.7135 1.90210.5878 0.5590 1.6511 1.9635 3.2593 3.61800.8090 0.7694 2.2725 3.5532 3.8680 4.97980.9511 0.9045 2.6715 4.1771 5.2737 5.23611.0000 0.9511 2.8090 4.3920 5.5451 6.15540.9511 0.9045 2.6715 4.1771 5.2737 5.23610.8090 0.7694 2.2725 3.5532 3.8680 4.97980.5878 0.5590 1.6511 1.9635 3.2593 3.61800.3090 0.2939 0.2500 1.3572 1.7135 1.9021

0 0 0 0 0 0

Column 7 through 120 0 0 0 0 0

1.9045 1.7205 1.3680 0.8817 -0.3090 -0.29393.6226 3.2725 2.6022 1.0590 0.5878 -0.55904.9861 4.5043 2.9635 2.3083 0.8090 -0.76945.8615 4.6771 4.2104 2.7135 0.9511 -0.90454.9271 5.5676 4.4271 2.8532 1.0000 -0.95115.8615 4.6771 4.2104 2.7135 0.9511 -0.90454.9861 4.5043 2.9635 2.3083 0.8090 -0.76943.6226 3.2725 2.6022 1.0590 0.5878 -0.55901.9045 1.7205 1.3680 0.8817 -0.3090 -0.2939

0 0 0 0 0 0

Column 13 through 180 0 0 0 0 0

-0.2500 -1.3572 -1.7135 -1.9021 -1.9045 -1.7205-1.6511 -1.9635 -3.2593 -3.6180 -3.6226 -3.2725-2.2725 -3.5532 -3.8680 -4.9798 -4.9861 -4.5043-2.6715 -4.1771 -5.2737 -5.2361 -5.8615 -4.6771

99

Page 104: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

Kısmi Diferansiyel Denklemler

-2.8090 -4.3920 -5.5451 -6.1554 -4.9271 -5.5676-2.6715 -4.1771 -5.2737 -5.2361 -5.8615 -4.6771-2.2725 -3.5532 -3.8680 -4.9798 -4.9861 -4.5043-1.6511 -1.9635 -3.2593 -3.6180 -3.6226 -3.2725-0.2500 -1.3572 -1.7135 -1.9021 -1.9045 -1.72050 0 0 0 0 0

Column 18 through 210 0 0 0

-1.7205 -1.3680 -0.8817 0.3090-3.2725 -2.6022 -1.0590 -0.5878-4.5043 -2.9635 -2.3083 -0.8090-4.6771 -4.2104 -2.7135 -0.9511-5.5676 -4.4271 -2.8532 -1.0000-4.6771 -4.2104 -2.7135 -0.9511-4.5043 -2.9635 -2.3083 -0.8090-3.2725 -2.6022 -1.0590 -0.5878-1.7205 -1.3680 -0.8817 0.3090

0 0 0 0

çalıstırıldıgında sonuçlar ve Sekil 5.1 elde edilir.

2. Isı Denklemi

ut = cuxx, 0 < x < 1, t > 0

Baslangıç ısısıu(x, 0) = f(x), 0 < x < 1

olsun. Sınır kosulları

u(0, t) = g0(t), u(1, t) = g1(t), t > 0

olsun. Burada c = 1, f(x) = 70◦C, g0(t) = 50◦C, g1(t) = 20◦C,∆x = 0.1,∆t = 0.025olsun.

function [u,A]=Heat(t,x,time,length)

n=time/t;m=length/x;u=zeros(m+1, n+1);

for i=1: n+1

100

Page 105: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

Kısmi Diferansiyel Denklemler

-101

-5

2

0y

Hyperbolic curve for y=sin(pi*x)

1.5

5

t

0.5

x

10

10.5

0 0

Sekil 5.1: Dalga denklemi

101

Page 106: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

Kısmi Diferansiyel Denklemler

u(1,i)=50;u(m+1,i)=20;end

s=0.1*t/(x)^2;

for k=2:mu(k,1)=70;end

A=zeros(m-1,m-1);for i=1:m-1for j=1:m-1if j==iA(i,j)=1+2*s;elseif j==i+1A(i,j)=-s;elseif j==i-1A(i,j)=-s;endendend

AA=inv(A);

w=zeros(m-1,n+1);for i=1:m-1for j=1:n+1w(i,j)=u(i+1,j);endend

for j=2:n+1w(1,j-1)=w(1,j-1)+s*50;w(m-1,j-1)=w(m-1,j-1)+s*20;w(:,j)=AA*w(:,j-1);w(1,j-1)=w(1,j-1)-s*50;w(m-1,j-1)=w(m-1,j-1)-s*20;end

for i=2:mfor j=1:n+1

102

Page 107: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

Kısmi Diferansiyel Denklemler

u(i,j)=w(i-1,j);endend

u=u’;

>> >> t=0.025;>> time=1.5;>> x=0.1;>> length=1.0;>> [u,A]=Heat(t,x,time,length)

u =

50.0000 70.0000 70.0000 70.0000 70.0000 70.0000 70.0000 70.0000 70.0000 70.0000 20.000050.0000 66.5685 69.4112 69.8988 69.9814 69.9896 69.9562 69.7474 68.5281 61.4214 20.000050.0000 64.1421 68.5784 69.6834 69.9270 69.9528 69.8314 69.2112 66.4465 55.3553 20.000050.0000 62.3742 67.6767 69.3727 69.8257 69.8740 69.6068 68.4409 64.1938 50.9358 20.000050.0000 61.0480 66.7912 68.9925 69.6728 69.7412 69.2788 67.5043 61.9834 47.6211 20.000050.0000 60.0252 65.9594 68.5661 69.4675 69.5478 68.8544 66.4637 59.9106 45.0659 20.000050.0000 59.2159 65.1942 68.1118 69.2122 69.2916 68.3463 65.3684 58.0094 43.0455 20.000050.0000 58.5600 64.4965 67.6425 68.9110 68.9744 67.7690 64.2544 56.2838 41.4109 20.000050.0000 58.0169 63.8616 67.1667 68.5685 68.6006 67.1372 63.1464 54.7238 40.0613 20.000050.0000 57.5584 63.2825 66.6899 68.1900 68.1761 66.4642 62.0606 53.3137 38.9265 20.000050.0000 57.1642 62.7515 66.2152 67.7805 67.7078 65.7619 61.0068 52.0365 37.9571 20.000050.0000 56.8197 62.2618 65.7446 67.3449 67.2027 65.0401 59.9905 50.8756 37.1173 20.000050.0000 56.5143 61.8067 65.2788 66.8877 66.6676 64.3071 59.0142 49.8163 36.3809 20.000050.0000 56.2396 61.3807 64.8181 66.4129 66.1088 63.5693 58.0786 48.8453 35.7282 20.000050.0000 55.9896 60.9792 64.3627 65.9244 65.5319 62.8320 57.1829 47.9514 35.1440 20.000050.0000 55.7594 60.5981 63.9124 65.4253 64.9420 62.0993 56.3260 47.1247 34.6168 20.000050.0000 55.5453 60.2341 63.4670 64.9186 64.3435 61.3745 55.5059 46.3570 34.1374 20.000050.0000 55.3443 59.8846 63.0266 64.4069 63.7401 60.6598 54.7208 45.6412 33.6984 20.000050.0000 55.1541 59.5472 62.5910 63.8923 63.1350 59.9571 53.9686 44.9713 33.2942 20.000050.0000 54.9728 59.2203 62.1601 63.3766 62.5307 59.2678 53.2473 44.3420 32.9198 20.000050.0000 54.7989 58.9024 61.7341 62.8617 61.9295 58.5926 52.5552 43.7491 32.5714 20.000050.0000 54.6313 58.5923 61.3129 62.3488 61.3332 57.9323 51.8903 43.1887 32.2457 20.000050.0000 54.4691 58.2892 60.8967 61.8392 60.7432 57.2873 51.2510 42.6577 31.9401 20.000050.0000 54.3114 57.9922 60.4855 61.3338 60.1607 56.6576 50.6358 42.1531 31.6522 20.000050.0000 54.1578 57.7010 60.0794 60.8336 59.5866 56.0434 50.0432 41.6727 31.3803 20.000050.0000 54.0077 57.4151 59.6786 60.3391 59.0217 55.4445 49.4719 41.2142 31.1225 20.000050.0000 53.8608 57.1341 59.2833 59.8510 58.4664 54.8609 48.9207 40.7759 30.8777 20.000050.0000 53.7168 56.8578 58.8934 59.3698 57.9213 54.2922 48.3885 40.3561 30.6445 20.0000

103

Page 108: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

Kısmi Diferansiyel Denklemler

50.0000 53.5756 56.5860 58.5093 58.8958 57.3866 53.7383 47.8743 39.9534 30.4219 20.000050.0000 53.4368 56.3186 58.1308 58.4294 56.8624 53.1988 47.3771 39.5666 30.2090 20.000050.0000 53.3005 56.0555 57.7583 57.9708 56.3490 52.6734 46.8961 39.1946 30.0051 20.000050.0000 53.1664 55.7967 57.3917 57.5202 55.8463 52.1617 46.4304 38.8364 29.8095 20.000050.0000 53.0346 55.5421 57.0311 57.0777 55.3544 51.6634 45.9793 38.4911 29.6215 20.000050.0000 52.9050 55.2917 56.6766 56.6434 54.8732 51.1782 45.5422 38.1579 29.4406 20.000050.0000 52.7776 55.0454 56.3282 56.2174 54.4026 50.7056 45.1184 37.8360 29.2664 20.000050.0000 52.6523 54.8033 55.9860 55.7997 53.9426 50.2454 44.7074 37.5250 29.0985 20.000050.0000 52.5291 54.5654 55.6499 55.3903 53.4930 49.7972 44.3085 37.2241 28.9363 20.000050.0000 52.4080 54.3316 55.3201 54.9891 53.0536 49.3606 43.9212 36.9329 28.7797 20.000050.0000 52.2890 54.1020 54.9964 54.5962 52.6243 48.9353 43.5452 36.6508 28.6283 20.000050.0000 52.1721 53.8765 54.6789 54.2115 52.2050 48.5210 43.1799 36.3775 28.4818 20.000050.0000 52.0572 53.6551 54.3676 53.8348 51.7953 48.1174 42.8249 36.1125 28.3399 20.000050.0000 51.9445 53.4379 54.0624 53.4661 51.3953 47.7241 42.4798 35.8554 28.2025 20.000050.0000 51.8338 53.2248 53.7633 53.1054 51.0046 47.3409 42.1444 35.6059 28.0693 20.000050.0000 51.7251 53.0157 53.4702 52.7525 50.6230 46.9674 41.8181 35.3636 27.9401 20.000050.0000 51.6186 52.8108 53.1832 52.4073 50.2505 46.6035 41.5007 35.1283 27.8148 20.000050.0000 51.5140 52.6099 52.9020 52.0696 49.8867 46.2488 41.1919 34.8997 27.6932 20.000050.0000 51.4115 52.4130 52.6268 51.7395 49.5316 45.9030 40.8913 34.6775 27.5750 20.000050.0000 51.3110 52.2200 52.3573 51.4167 49.1848 45.5659 40.5988 34.4615 27.4603 20.000050.0000 51.2125 52.0310 52.0935 51.1011 48.8463 45.2373 40.3140 34.2515 27.3488 20.000050.0000 51.1160 51.8459 51.8354 50.7926 48.5158 44.9170 40.0367 34.0472 27.2404 20.000050.0000 51.0214 51.6647 51.5829 50.4911 48.1931 44.6046 39.7666 33.8484 27.1350 20.000050.0000 50.9288 51.4872 51.3359 50.1964 47.8782 44.3000 39.5036 33.6549 27.0325 20.000050.0000 50.8381 51.3136 51.0943 49.9084 47.5707 44.0030 39.2473 33.4666 26.9328 20.000050.0000 50.7494 51.1436 50.8579 49.6270 47.2705 43.7134 38.9977 33.2833 26.8357 20.000050.0000 50.6625 50.9773 50.6268 49.3521 46.9775 43.4309 38.7544 33.1048 26.7413 20.000050.0000 50.5774 50.8146 50.4009 49.0834 46.6915 43.1554 38.5173 32.9310 26.6494 20.000050.0000 50.4942 50.6554 50.1800 48.8210 46.4123 42.8867 38.2863 32.7617 26.5599 20.000050.0000 50.4127 50.4997 49.9641 48.5646 46.1397 42.6246 38.0611 32.5968 26.4727 20.000050.0000 50.3331 50.3475 49.7530 48.3142 45.8737 42.3689 37.8416 32.4361 26.3878 20.000050.0000 50.2552 50.1986 49.5467 48.0696 45.6140 42.1195 37.6275 32.2795 26.3051 20.000050.0000 50.1790 50.0531 49.3451 47.8306 45.3605 41.8763 37.4189 32.1269 26.2246 20.0000

A =

1.5000 -0.2500 0 0 0 0 0 0 0-0.2500 1.5000 -0.2500 0 0 0 0 0 00 -0.2500 1.5000 -0.2500 0 0 0 0 00 0 -0.2500 1.5000 -0.2500 0 0 0 00 0 0 -0.2500 1.5000 -0.2500 0 0 0

104

Page 109: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

Kısmi Diferansiyel Denklemler

0 0 0 0 -0.2500 1.5000 -0.2500 0 00 0 0 0 0 -0.2500 1.5000 -0.2500 00 0 0 0 0 0 -0.2500 1.5000 -0.25000 0 0 0 0 0 0 -0.2500 1.5000

>> mesh(u);>> xlabel(’Length’);>> ylabel(’Time step t=0.025’);>> zlabel(’Temperature’);>> title(’Heat Problem (Implicit Method)’)

çalıstırıldıgında verilen sonuçlar ve Sekil 5.2 grafigi elde edilir. Eger

t = 0.075

alınırsa Sekil 5.3 grafigi elde edilir.

>> t=0.075;>> time=1.5;>> x=0.1;>> length=1.0;>> [u,A]=Heat(t,x,time,length);>> mesh(u);>> xlabel(’Length’);>> ylabel(’Time step t=0.075’);>> zlabel(’Temperature’);>> title(’Heat Problem (Implicit Method)’)

105

Page 110: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

Kısmi Diferansiyel Denklemler

2080

30

40

60 15

Tem

pera

ture

50

Heat Problem (Implicit Method)

Time step t=0.025

60

40 10

Length

70

20 5

0 0

Sekil 5.2: Isı denklemi t = 0.025

106

Page 111: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

Kısmi Diferansiyel Denklemler

2030

30

40

15

Tem

pera

ture

20

50

Heat Problem (Implicit Method)

Time step t=0.075

60

10

Length

70

105

0 0

Sekil 5.3: Isı denklemi t = 0.075

107

Page 112: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

Kısmi Diferansiyel Denklemler

Alıstırmalar 1

1. A =

1 2 −13 2 05 6 1

matrisi verilsin. MATLAB kullanarak A matrisinin

(a) determinantını

(b) varsa tersini A−1

(c) kösegen elemanlarını

(d) özdegerlerini

(e) rankını

(f) boyutunu

(g) 2. sütununu

(h) 3. satırını

(i) 1. sütundan 2. sütuna kadar sütunlardan olusan alt matrisini

(k) 2. satırdan 3. satıra kadar satırlardan olusan alt matrisini

(l) transpozunu

bulunuz.

Cevap:>> A=[1 2 -1;3 2 0;5 6 1]A =1 2 -13 2 05 6 1>> det(A)ans =-12>> inv(A)ans =-0.1667 0.6667 -0.16670.2500 -0.5000 0.2500-0.6667 -0.3333 0.3333

>> diag(A)ans =

108

Page 113: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

Kısmi Diferansiyel Denklemler

121>> eig(A)ans =-1.18382.5919 + 1.8490i2.5919 - 1.8490i>> rank(A)ans =3>> size(A)ans =3 3>> A(:,2)ans =226>> A(3,:)ans =5 6 1>> A(:,1:2)ans =1 23 25 6>> A(2:3,:)ans =3 2 05 6 1>> A’ans =1 3 52 2 6-1 0 1

2. Asagıdaki matrislerin çarpımını bulunuz.

A =

3 1 −11 −1 34 0 5

2×3

, B =

2 −2 1 2−2 1 0 31 0 2 6

3×4

Cevap:

109

Page 114: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

Kısmi Diferansiyel Denklemler

>> A=[3 1 -1;1 -1 3;4 0 5];>> B=[2 -2 1 2;-2 1 0 3;1 0 2 6];>> C=A*BC =3 -5 1 37 -3 7 1713 -8 14 38

3. y = cosx fonksiyonunun grafigini [−π, π] aralıgında çizdiriniz.

Cevap:>> x=-pi:0.1:pi;>> y=cos(x);>> plot(x,y)

4. y = cosx ve y = sinx fonksiyonlarının grafiklerini [−2π, 2π] aralıgında aynıgrafikte çiziniz. y = sinx fonksiyonunun grafigini kırmızı renkte çizdiriniz.legend komutu ile açıklayıcı bilgi ekleyiniz.

Cevap:>> x=-2*pi:0.1:2*pi;>> y1=cos(x);>> y2=sin(x);>> plot(x,y1);>> hold on>> plot(x,y2,’r’)>> legend(’cos grafigi’,’sinüs grafigi’)

5. y = cosx fonksiyonun [−π, π] aralıgında grafiginin üzerinde y degerleri 0.5degerinden küçük olan noktaları gösteriniz.

Cevap:>> x=-pi:0.1:pi;>> y=cos(x);>> plot(x,y)>> k=find(y<0.5);>> hold on>> plot(x(k),y(k),’o’)

5. f(x, y) = xy fonksiyonunun grafigini [x, y] = [−10, 10] × [−10, 10] aralıgı içinçiziniz.

110

Page 115: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

Kısmi Diferansiyel Denklemler

Cevap:>> [X,Y]=meshgrid(-10:0.5:10);>> Z=X.*Y;>> mesh(Z)

6. fn(x) = sin(nπx) fonksiyonlarının grafiklerini n = 1, 2, · · · , 8 için ve x ∈ [−1, 1]aralıgı için for döngüsünü kullanarak aynı pencerede çizdiriniz.

Cevap:>> x=-1:0.05:1;>> for n=1:8

subplot(4,2,n), plot(x,sin(n*pi*x))end

7. Fibonacci dizisi 0 ve 1 sayıları ile baslar ve diger terimleri kendinden öncekiiki terimin toplamına esittir. Yani f1 = 0, f2 = 1 ve

fn = fn−1 + fn−2, n = 3, 4, 5, · · ·

olarak tanımlanmıstır. fn−1

fnoranının altın orana

√5−12 sayısına yaklastıgını

MATLAB programı gösteriniz. Oranları ve altın oran sabit fonksiyonunu aynıgrafik üzerinde çizdiriniz.

Cevap:>> f(1)=0; f(2)=1;>> for i=3:20

f(i)=f(i-1)+f(i-2);end

>> plot(1:19,f(1:19)./f(2:20),’o’)>> hold on, xlabel(’n’)>> plot(1:19,f(1:19)./f(2:20),’-’)>> legend(’f_{n-1}/f_n terimlerinin oranı’)>> plot([0 20], (sqrt(5)-1)/2*[1 1],’--’)

8. Asagıdaki toplamları hesaplayan for döngüsünü içeren bir MATLAB koduyazınız.

S20 = 1 + 122

+ 132

+ · · ·+ 1202

S21 = 1 + 122

+ 132

+ · · ·+ 1202

+ 1212

...S100 = 1 + 1

22+ 1

32+ · · ·+ 1

202+ 1

212+ · · ·+ 1

1002

111

Page 116: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

Kısmi Diferansiyel Denklemler

Cevap:>> S=zeros(100,1);>> S(20)=sum(1./(1:20).^2);>> for n=21:100

S(n)=S(n-1)+1/n^2;end

>> S(21:100)

9. Asagıdaki toplamın 100’den küçük olacak sekilde yapan en büyük n sayı-sını while döngüsünü kullanarak MATLAB kodu ile bulunuz.

12 + 22 + · · ·+ n2

Cevap:>> S=1; n=1;>> while S+(n+1)^2<100

n=n+1; S=S+n^2;end

>> [n,S]ans =6 91

10. Kenar uzunlukları a, b, c olarak verilen bir üçgenin alanı A asagıdaki for-mülle hesaplanır

A =√s(s− a)(s− b)(s− c)

burada s = (a+ b+ c)/2. Kenar uzunlukları a, b, c degerlerini girdi olarak alanve çıktı olarak üçgenin alanını veren bir MATLAB fonksiyonu yazınız. Fonk-siyonu kullanarak a = 3, b = 4, c = 5 kenar uuznlukları olan üçgenin alanınıbulunuz.

Cevap: Fonksiyon olusturma

function A=alan(a,b,c)% Kenar uzunlukları a,b,c olan üçgebin alanını hesaplar%Kullanımı Alan=alan(a,b,c)s=(a+b+c)/2;A=sqrt(s*(s-a)*(s-b)*(s-c));%Alan fonksiyonunun sonu

Fonksiyonu çagırma>> alan(3,4,5)

ans =6

112

Page 117: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

Kısmi Diferansiyel Denklemler

11. Yarıçapı r cm ve yüksekligi h cm olan dik koninin yüzey alanını ve hac-mini hesaplayan bir fonksiyon yazınız. Fonksiyonunuzun adı, girdi ve çıktı-ları [A,V]=koni(r,h) seklinde olsun. Fonksiyonunuzun adı koni, girdileriyarıçapı ve yükseklik, çıktıları ise alan A ve hacim V olsun. Fonksiyonunuzu

a) r = 3, h = 4 b) r = 5, h = 6 c) r = 9, h = 12

degerleri için çalıstırınız. sonuçlarınızda 4 ondalık basamak kullanınız. Koni-nin hacmi V = 1

3πr2h, toplam yüzey alanı A = πrs+ πr2, s =

√r2 + h2.

Cevap: Fonksiyon olusturma

function [A,V]=koni(r,h)V=(1/3)*pi*r^2*hs=sqrt(r^2+h^2);A=pi*r*s+pi*r^2

Fonksiyon çagırma>> format short>> koni(3,4)

V =37.6991A =75.3982

>> koni(5,6)V =157.0796A =201.2229

>> koni(9,12)V =1.0179e+003A =678.5840

12. Taban kenar uzunlugu b cm ve yüksekligi h cm olan kare piramidin yüzeyalanını ve hacmini hesaplayan bir fonksiyon yazınız. Fonkisyonunuzun adı,girdi ve çıktıları [A,V]=piramit(b,h) seklinde olsun. Fonksiyonunuzun adıpiramit, girdileri taban kenar uzunlugu b, yüksekligi h, çıktıları ise toplamyüzey alanı A ve hacmim V olsun. Fonksiyonunuzu

a) b = 6, h = 4, b) b = 24, h = 16 c) b = 9, h = 13

degerleri için çalıstırınız.Piramitin hacmi V = 1

3b2h, toplam yüzey alanı A = 2bs+ b2, s =

√(b/2)2 + b2.

Cevap: Fonksiyon olusturma

function [A,V]=piramit(b,h)s=sqrt((b/2)^2+h^2);A=2*b*s+b^2V=(1/3)*b^2*h

113

Page 118: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

Kısmi Diferansiyel Denklemler

Fonksiyon çagırma>> piramit(6,4)

A =96V =48

>> piramit(24,16)A =1536V =3072

>> piramit(9,13)A =328.6227V =351

13. Karenin, dikdörtgenin ve yamugun alanlarını hesaplayan bir programyazılacaktır. Kullanıcıya ilk olarak "Kare, dikdortgen ve yamuktan hangisininalanini hesaplamak istiyorsunuz?" diye sorulacak, kullanıcı klavye ile "Kare"yazdıgında, kullanıcıdan karenin bir kenar uzunlugunu girmesi istenecektir.Eger sekil dikdortgen ise "Kisa kenari girin" ve "Simdi de uzun kenari girin"ifadesi kullanıcıya yöneltilecektir. Eger sekil yamuk ise "Alt kenari girin" ,"Ust kenari girin" ve "Yuksekligi girin" ifadesi kullanıcıya yöneltilecektir. Herbir islemden sonra (istenen sekle göre) "Karenin alanı=" vb. ifadeleri takibenhesaplanan alanın degeri kullanıcıya bildirilecektir. Programınızı kenarı 19olan kare, kenarları 67, 89 olan dikdörtgen ve alt kenarı 45, üst kenarı 63,yüksekligi 27 olan yamukların alanlarını hesaplatmak için kullanınız.

Cevap:

disp(’Kare, dikdortgen ve yamuktan hangisinin alanini hesaplamakistiyorsunuz?’);A=input(’Kare ise "k",dikdortgen ise "d", yamuk ise "y" yaziniz’,’s’);if A==’k’kenar=input(’Kare nin bir kenarinin uzunlugunu giriniz’);disp(’Kare nin alani’)Alan=kenar^2elseif A==’d’kenar1=input(’Dikdortgenin kisa kenarinin uzunlugunu giriniz’);kenar2=input(’Dikdortgenin uzun kenarinin uzunlugunu giriniz’);disp(’Dikdortgenin nin alani’)Alan=kenar1*kenar2elseif A==’y’alt=input(’Yamugun alt taban uzunlugunu giriniz’);ust=input(’Yamugun ust kenar uzunlugunu giriniz’);yukseklik=input(’Yamugun yuksekligini giriniz’);disp(’Yamugun alani’)

114

Page 119: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

Kısmi Diferansiyel Denklemler

Alan=(alt+ust)*yukseklik/2end

Bu dosya kare_yamuk_dikd.m olarak kaydedilir, komut penceresine gelinirve dosyanın ismi yazılır.

Kod çagırma>> kare_yamuk_dikdKare, dikdortgen ve yamuktan hangisinin alanini hesaplamak istiyorsunuz?Kare ise "k",dikdortgen ise "d", yamuk ise "y" yazinizkKare nin bir kenarinin uzunlugunu giriniz19Kare nin alaniAlan =361>> kare_yamuk_dikdKare, dikdortgen ve yamuktan hangisinin alanini hesaplamak istiyorsunuz?Kare ise "k",dikdortgen ise "d", yamuk ise "y" yazinizdDikdortgenin kisa kenarinin uzunlugunu giriniz67Dikdortgenin uzun kenarinin uzunlugunu giriniz89Dikdortgenin nin alaniAlan = 5963>> kare_yamuk_dikdKare, dikdortgen ve yamuktan hangisinin alanini hesaplamak istiyorsunuz?Kare ise "k",dikdortgen ise "d", yamuk ise "y" yazinizyYamugun alt taban uzunlugunu giriniz45Yamugun ust kenar uzunlugunu giriniz63Yamugun yuksekligini giriniz27Yamugun alaniAlan = 1458

14.

A =

(1

2+

1

3

)+

1

3

(1

22+

1

32

)+

1

5

(1

23+

1

33

)+

1

7

(1

24+

1

34

)+ · · ·

Yukarıda A sayısının seri karsılıgı verilmistir. Seri açılımını toplamını 1.00339’danbüyük yapan ilk terim sayısını ve bu terim için A degerini bulan MATLABprogramı yazınız. Sonuçlarınızda 14 ondalık basamak kullanınız.

Cevap:format longA=0; k=0;while A<1.00339

m=2*k+1;k=k+1;

115

Page 120: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

Kısmi Diferansiyel Denklemler

A=A+(1/m)*((1/2)^(k)+(1/3)^(k));end’A nın degeri’A’terim sayısı’kA nın degeri: A = 1.003393983489271terim sayısı: k = 13

15. Soru 7’de tanımlanan Fibonacci dizisinin n. terimini bulan bir fonksi-yon yazınız. Fonksiyonun girdisi n çıktısı Fibonacci dizisinin n. terimi olsun.Fonksiyonu kullanarak Fibonacci dizisinin 20. terimini bulunuz.

Cevap: Fonksiyon olusturma

function f=Fib(n)%Fibonacci dizisindeki n. terimi verir%Kullanımı f=Fib(n)F=zeros(1,n+1);F(2)=1;for i=3:n+1

F(i)=F(i-1)+F(i-2);endf=F(n);

Fonksiyon çagırma>> f=Fib(20)

f =4181

16. Iki zarın n kere atılıs sonuçlarının benzerini veren bir MATLAB fonksi-yonu yazınız. Fonksiyonunuzu kullanarak 3 zarın atılıs sonuçlarını elde edi-niz.

Cevap: Fonksiyon olusturma

function d=zar(n)% Girdi: n, atılıs sayısı%Çıktı: nx2 matris, her satır bir atılısa karsılık gelir%Kullanımı: T=zar(3)d=floor(1+6*rand(n,2));

116

Page 121: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

Kısmi Diferansiyel Denklemler

Fonksiyon çagırma>> zar(3)ans =5 66 41 1

17. ax2 + bx + c = 0 denkleminin köklerini hesaplayan bir fonksiyon yazınız.Fonksiyonunuzun adı, girdi ve çıktıları [x1,x2]=kok(a,b,c) seklinde olsun.Fonksiyonu kullanarak asagıdaki denklemleri çözünüz.

a) 2x2 − 275x+ 9317 = 0, b) x2 − 86x+ 1849 = 0, c) 3x2 + 5x+ 19 = 0

Cevap: Fonksiyon olusturma

function [x1,x2]=kok(a,b,c)D=b^2-4*a*c;

if D>0x1=(-b-sqrt(D))/(2*a)x2=(-b+sqrt(D))/(2*a)fprintf(’Esitlik iki farkli kok degerine sahiptir\n’);end

if D==0x1=-b/(2*a);x2=x1;fprintf(’Esitlik tek kok degerine sahiptir\n’)end

if D<0fprintf(’Esitlik reel kok degerine sahip degildir\n’)end

a), b) ve c) sıklarında verilen denklemlerin çözümü için fonksiyon komut pen-ceresinde asagıdaki gibi çagrılır.

Fonksiyon çagırmakok(2,-275,9317)D=1089x1=60.5

117

Page 122: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

Kısmi Diferansiyel Denklemler

x2=77Esitlik iki farkli kok degerine sahiptirkok(1,-86,1849)D=0x1=43x2=43Esitlik tek kok degerine sahiptirkok(3,5,19)D=-203Esitlik reel kok degerine sahip degildir

18. f(x) = ex fonksiyonunun Taylor serisi asagıdaki gibi verilmistir.

ex =

∞∑n=0

xn

n!= 1 + x+

x2

2!+x3

3!+ · · ·

e2 sayısınının degerini Taylor seri toplamı ile mutlak hata 10−8 den küçük ola-cak sekilde hesaplayan bir kod yazınız. Sonuçlarınızda 14 ondalık basamakkullanınız.

Cevap:format longn=0; e2=exp(2);ST=0;while abs(e2-ST)>10^(-8)

ST=ST+(2^n)/factorial(n);n=n+1;

endST= 7.389056095384136mutlak_hata=abs(e2-ST)mutlak_hata=3.546514193430994e-009

19. Sonuçlarınızda 4 ondalık basamak kullanınız. tan−1 x fonksiyonunun Tay-lor seri açılımı asagıdaki gibi verilmistir.

tan−1 x =∞∑n=0

(−1)nx2n+1

2n+ 1= x− x3

3+x5

5− x7

7+ · · ·

tan−1 1 degerini hesaplamak için terim sayısı verildiginde seri toplamını verenbir fonksiyon yazınız. Fonksiyonunuzun girdisi terim sayısı n çıktısı ise seritoplamını versin. Fonksiyonunuzu n = 10, 100 ve n = 1000 için çalıstırınız.Seri toplamının gerçek degeri π/4 sayısıdır. Her toplam için mutlak hatalarıbulunuz. Hangi n degeri için daha iyi bir sonuç elde edilmistir?

118

Page 123: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

Kısmi Diferansiyel Denklemler

Cevap: Fonksiyon olusturma

function ST=arctan(n)ST=1;for i=1:n

ST=ST+((-1)^i)/(2*i+1);end

Fonksiyon çagırmaformat shortarctan10=arctan(10)arctan10 =0.8081mutlak_hata1=abs(pi/4-arctan10)mutlak_hata1 =0.0227

arctan100=arctan(100)arctan100 =0.7879mutlak_hata2=abs(pi/4-arctan100)mutlak_hata2 =0.0025

arctan1000=arctan(1000)arctan1000 =0.7856mutlak_hata3=abs(pi/4-arctan1000)mutlak_hata3 =2.4975e-004

Sonuçlardan görüldügü gibi en iyi sonuç (π/4 degerine en yaklasık deger)n = 1000 için elde edilmistir.

20. Verilen a sayısının küp kökünü a1/3 degerini Newton yöntemi ile hesap-layan bir fonksiyon yazınız. f(x) = x3 − a = 0 denklemi çözülerek a1/3 sayısıyaklasık olarak bulunmaktadır. Fonksiyonunuzun adı, girdi ve çıktı degerleriXs=kupkok(a) seklinde olsun. Burada girdi a sayısı, çıktı a sayısının yaklasıkküp kök degeri, fonksiyonunuzun adı kupkok olsun. Programınız asagıdakiözelliklere sahip olmalıdır:

• Iterasyonlara baslangıç noktası a olmalıdır.

• Iterasyonlar tahmini bagıl hata 10−7 den küçük oldugunda durmalıdır.

Bagıl hata =|xn − xn−1||xn|

burada xn son adımda elde edilen sayısal çözüm, xn−1 son adımdan birönceki adımda elde edilen sayısal çözümdür.

119

Page 124: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

Kısmi Diferansiyel Denklemler

• Iterasyon sayısı 25 ile sınırlandırılmalıdır. Eger 25 adım sonunda çözümelde edilemezse program hata olarak "Çözüm 25 adım sonra elde edile-medi" yazmalıdır ve çıktı olarak "Çözüm yok" atanmalıdır.

Fonksiyonunuzu asagıdaki sayıların yaklasık küp köklerini bulmak için kul-lanınız:

a) 1408 b) 531441 c) 729 d) − 600

Cevap: Fonksiyon olusturma

function Xs=kupkok(a)Xbas=a;imaks=25;for i=1:imaks

Xi=Xbas-(Xbas^3-a)/(3*Xbas^2); %Newton iterasyonuif abs((Xi-Xbas)/Xbas)<1e-7Xs=Xi;break

endXbas=Xi;endif i==imaks

fprintf(’Cozum %i adim sonra elde edilemedi\n’, imaks)Xs=(’Cozum yok’)end

Fonksiyonu verilen sayılar için çalıstırmak için komut penceresinde asagı-daki kodlar yazılır.

Fonksiyon çagırmakupkok(1408)ans =11.2082

kupkok(531441)Cozum 25 adim sonra elde edilemediXs =Cozum yok

kupkok(729)ans =9

kupkok(-600)ans =-8.4343

120

Page 125: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

Kısmi Diferansiyel Denklemler

21. Asagıda verilen A matrisinin determinantının −5300 oldugu biliniyor. Amatrisinde 3. satır, 2. sütun elemanın degeri (x) ise bilinmemektedir. Ancak xsayısının bir tamsayı oldugu bilinmektedir. Yazdıgınız bir program yardımı ilebilinmeyen bu elemanın degerini bulunuz. x’ in deger aralıgı −100 : 100 olarakalınabilir.

A =

1 5 9 11−2 6 7 40 x 1 811 65 89 21

Cevap:x=-100;for k=1:201

A=[1 5 9 11; -2 6 7 4; 0 x 1 8; 11 65 89 21];C=det(A);if C==-5300xbreak

endx=x+1;endx = -3

Determinant degerini −5300 yapan x degeri x = −3’tür.

22. Kare matrisin boyutu verildiginde asagıdaki üç kösegenli matrisi olustu-ran bir fonksiyon yazınız. Fonksiyonunuzun adı, girdi ve çıktısı A=uckosegen(n)seklinde olsun. Burada fonksiyonunuzun girdisi kare matrisin boyutu n, çık-tısı asagıdaki gibi tanımlanan A üç kösegenli matris olmalıdır.

A =

2 33 2 3

3 2 3. . . . . . . . .

3 2 33 2

Fonksiyonunuzu n = 5 ve n = 10 için çalıstırınız.

121

Page 126: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

Kısmi Diferansiyel Denklemler

Cevap: Fonksiyon olusturma

function A=uckosegen(n)A=zeros(n,n);A(1,1)=2; A(1,2)=3;for i=2:(n-1)

A(i,i)=2; A(i,i-1)=3; A(i,i+1)=3;endA(n,n-1)=3; A(n,n)=2

Fonksiyon çagırmauckosegen(5)A =2 3 0 0 03 2 3 0 00 3 2 3 00 0 3 2 30 0 0 3 2uckosegen(10)A =2 3 0 0 0 0 0 0 0 03 2 3 0 0 0 0 0 0 00 3 2 3 0 0 0 0 0 00 0 3 2 3 0 0 0 0 00 0 0 3 2 3 0 0 0 00 0 0 0 3 2 3 0 0 00 0 0 0 0 3 2 3 0 00 0 0 0 0 0 3 2 3 00 0 0 0 0 0 0 3 2 30 0 0 0 0 0 0 0 3 2

23. Kare matrisin boyutu verildiginde asagıdaki üst üçgen matrisi olusturanbir fonksiyon yazınız. Fonksiyonunuzun adı, girdi ve çıktısı A=ustucgen(n)seklinde olsun. Burada fonksiyonunuzun girdisi kare matrisin boyutu n, çık-tısı asagıdaki gibi tanımlanan A üst üçgen matris olmalıdır.

A =

1 2 2 · · · 2 20 1 2 · · · 2 20 0 1 2 · · · 2

. . . . . . . . .0 0 0 · · · 1 20 0 0 0 · · · 1

122

Page 127: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

Kısmi Diferansiyel Denklemler

Fonksiyonunuzu n = 5 ve n = 10 için çalıstırınız.

Cevap: Fonksiyon olusturma

function A=ustucgen(n)A=zeros(n,n);for i=1:n

A(i,i)=1;k=1;

while (i+k)<=nA(i,i+k)=2;k=k+1;

end %whileend %for

Fonksiyonu çagırmaustucgen(5)ans =1 2 2 2 20 1 2 2 20 0 1 2 20 0 0 1 20 0 0 0 1ustucgen(10)ans =1 2 2 2 2 2 2 2 2 20 1 2 2 2 2 2 2 2 20 0 1 2 2 2 2 2 2 20 0 0 1 2 2 2 2 2 20 0 0 0 1 2 2 2 2 20 0 0 0 0 1 2 2 2 20 0 0 0 0 0 1 2 2 20 0 0 0 0 0 0 1 2 20 0 0 0 0 0 0 0 1 20 0 0 0 0 0 0 0 0 1

24. f(x) = ax3 + bx2 + cx+ d fonksiyonunun x’e göre türevini bulunuz.

Cevap:syms x a b c df=a*x^3+b*x^2+c*x+ddiff(f)ans= 3*a*x^2+2*b*x+c

123

Page 128: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

Kısmi Diferansiyel Denklemler

25. f(t) = 6t−92t2+4t−6 fonksiyonununun t’ye göre türevini bulunuz.

Cevap:syms tf=(6*t-9)/(2*t^2+4*t-6)df=diff(f);dfs=simplify(dfs);pretty(dfs)212 t +36t- -----------(2t^2+4t-6)^2

26. f(x, y) = sin2 xey fonksiyonunun ∂2f/∂x∂y türevini bulunuz.

Cevap:syms x yf=sin(x)^2*exp(y)diff(diff(f,x),y)ans=2*sin(x)*exp(y)*cos(x)

27. f(x, y) = x2 − 2xy + y2 fonksiyonunu çarpanlarına ayırınız.

Cevap:syms x yf=x^2-2*x*y+y^2factor(f)ans=(x-y)^2

28. y = (a+ b)4 açılımını bulunuz.

Cevap:syms a by=(a+b)^4expand(y)ans=a^4+4a^3b+6a^2b^2+4ab^3+b^4

29. f(x, y) = cos(2x)e2y + sin(y + x) lnx − x2y + 3 fonksiyonunun (x, y) = (π, 0)noktasındaki degerini bulunuz.

Cevap:syms x yf=cos(2*x)*exp(2*y)+sin(y+x)*log(x)-x^2*y+3double(subs(subs(f,y,0),x,pi))ans=4

124

Page 129: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

Kısmi Diferansiyel Denklemler

30. ax2 + bx+ c = 0 ifadesinin a = 2, b = 3, c = −4 için çözümünü bulunuz.

Cevap:y=subs(’a*x^2+b*x+c’,{a,b,c},{2,3,-4})r=solve(’y’)r= 0.8508-2.3508

31. z = (x− 3)2 + y2 − x2 ifadesini sadelestiriniz.

Cevap:syms x yz=(x-3)^2+y^2-x^2z=collect(z)z=-6*x+9+y^2

32. y = cos2 x+ sin2 x ifadesini sadelestiriniz.

Cevap:syms xy=cos(x)^2+sin(x)^2simple(y)ans=1

33.∫

cos(2x) sin(2x)dx integralini bulunuz.

Cevap:

syms xy=cos(2*x)*sin(2*x);int(y)ans= -1/4*cos(2*x)^2

34.∫ 2ππ

∫ π0 (y sinx+ x cos y)dxdy katlı integralinin degerini bulunuz.

Cevap:syms x yf=y*sin(x)+x*cos(y)int(int(f,x,0,\pi), y, \pi, 2*\pi)ans= -pi^2

35. x2 − 5 = 0 denkleminin çözümlerini bulunuz.

125

Page 130: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

Kısmi Diferansiyel Denklemler

Cevap:syms xsolve(’x^2-5’)ans= 5^(1/2)-5^(1/2)

36. cos(x)− sin(x) = 0.5 denkleminin çözümlerini bulunuz.

Cevap:s=solve(’cos(x)-sin(x)=0.5’);s=double(s)s= -1.99480.4240

37. ln(x2)− log(2x) + 4 = 0 denkleminin çözümlerini bulunuz.

Cevap:s=solve(’log(x^2)-log10(2*x)+4’);s=double(s)ans= 0.0942

38. F (x, y, z, t,m) =

f1(x, y, z, t,m)f2(x, y, z, t,m)f3(x, y, z, t,m)f4(x, y, z, t,m)f5(x, y, z, t,m)

=

x3 − 2y + cos z + t− 5/m− 5

x/y + ezt−m+ 1x+ y + z + t+m− 7

xyz + tm− 10ex+y + tan z + log2 t+ log(2z)− 3

verilsin F (x, y, z, t,m) = (0, 0, 0, 0, 0) yapan (x, y, z, t,m) degerlerini bulunuz.

Cevap:syms x y z t mf1=x^3-2^y+cos(z)+t-5/m-5;f2=x/y+exp(z)*t-m+1;f3=x+y+z+t+m-7;f4=x*y*z+t*m-10;f5=exp(x+y)+tan(z)+log2(t)+log10(2*z)-3;s=solve(f1,f2,f3,f4,f5);kokler=double([s.x s.y s.z s.t s.m])kokler= 1.4142 -4.6262 0.9615 2.3664 6.8841

39. limx→3(x−3)(x2−9) limitini bulunuz.

Cevap:syms xlimit((x-3)/(x^2-9),3)ans= 1/6

126

Page 131: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

Kısmi Diferansiyel Denklemler

Alıstırmalar 2

Matrisler ve matrislerle ilgili islemler, lineer denklem sistemleri

1.

A =

6 3 23 2 1.52 1.5 1.2

, B =

−1 2 31 8 −24 1 5

, C =

2 6 17 1 −14 −3 2

olsun.

(a) 2AB − 3CT matrisini

(b) C matrisinin tersini (inverse)

(c) A matrisinin determinantını

(d) A3 − 5B2 + C matrisini

(e) B matrisinin 1,2 ve sonsuz normlarını

(f) B matrisinin sonsuz normuna göre kosul sayısını (condition number)

(g) A matrisinin rankını

(h) C matrisinin LU ayrıstırmasını (LU decomposition)

(i) A matrisinin özdeger (eigenvalues) ve özvektörlerini (eigenvectors)

(j) A matrislerinin Cholesky ayrıstırmasını bulunuz.

clear all; clc; format long

A=[6 3 2;3 2 1.5;2 1.5 1.2];B=[-1 2 3;1 8 -2;4 1 5];C=[2 6 1;7 1 -1;4 -3 2];

D=2*A*B-3*C’Cters=inv(C)determinantA=det(A)E=A^3-5*B^2+Cnorm1=norm(B,1)norm2=norm(B,2)norm_sonsuz=norm(B,inf)kosul_sonsuz=cond(B,inf)rankA=rank(A)[L,U,P]=lu(C)R=chol(A)[ozvektor ozdeger]=eig(A)

127

Page 132: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

Kısmi Diferansiyel Denklemler

>> A=[6 3 2;3 2 1.5;2 1.5 1.2];B=[-1 2 3;1 8 -2;4 1 5];C=[2 6 1;7 1 -1;4 -3 2];

D=2*A*B-3*C’Cters=inv(C)determinantA=det(A)E=A^3-5*B^2+Cnorm1=norm(B,1)norm2=norm(B,2)norm_sonsuz=norm(B,inf)kosul_sonsuz=cond(B,inf)rankA=rank(A)[L,U,P]=lu(C)R=chol(A)[ozvektor ozdeger]=eig(A)

D =4.000000000000000 55.000000000000000 32.000000000000000

-8.000000000000000 44.000000000000000 34.0000000000000005.600000000000000 37.399999999999999 12.000000000000000

Cters =0.007407407407407 0.111111111111111 0.0518518518518520.133333333333333 0 -0.0666666666666670.185185185185185 -0.222222222222222 0.296296296296296determinantA =0.100000000000000E =1.0e+02 *3.398000000000000 1.503500000000000 1.2218000000000002.413500000000000 -1.913000000000000 2.0383500000000000.801800000000000 -0.181650000000000 -1.097720000000000norm1 = 11norm2 = 8.429049736545000norm_sonsuz = 11kosul_sonsuz = 5.260869565217391rankA =3L =1.000000000000000 0 00.285714285714286 1.000000000000000 00.571428571428571 -0.625000000000000 1.000000000000000U =

128

Page 133: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

Kısmi Diferansiyel Denklemler

7.000000000000000 1.000000000000000 -1.0000000000000000 5.714285714285714 1.2857142857142860 0 3.375000000000000P =0 1 01 0 00 0 1R =2.449489742783178 1.224744871391589 0.8164965809277260 0.707106781186547 0.7071067811865470 0 0.182574185835055ozvektor =-0.127659329746535 0.547448430720674 0.8270449269720090.713746885803414 -0.528290235067436 0.459863904365544

-0.688671531671372 -0.649006658851713 0.323298435244499ozdeger =0.016124042134642 0 00 0.733962395123435 00 0 8.449913562741926

2. Verilen dogrusal denkleminin çözümünü MATLAB ile bulunuz.

x1 + 3x2 + 2x3 + 4x4 = 92x1 − x2 + x3 − 2x4 = −72x1 + x2 − 4x3 − x4 = 182x1 + 4x2 + x3 − 2x4 = −2

>> A=[1 3 2 4;2 -1 1 -2;2 1 -4 -1;2 4 1 -2]b=[9;-7;18;-2]

xa=inv(A)*bxb=A\bxc=mldivide(A,b)

A =1 3 2 42 -1 1 -22 1 -4 -12 4 1 -2b =9-7

129

Page 134: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

Kısmi Diferansiyel Denklemler

18-2xa =2.0000000000000011.000000000000000

-4.0000000000000013.000000000000000

xb =2.0000000000000001.000000000000000

-4.0000000000000003.000000000000000

xc =2.0000000000000001.000000000000000

-4.0000000000000003.000000000000000

3. Verilen dogrusal denkleminin çözümü olmadıgını MATLAB ile gösteriniz.

x1 + 3x2 + 3x3 = 1−x1 + 5x2 − 3x3 = 2−2x1 + 7x2 − 6x3 = 3

>> A=[1 3 3;-1 5 -3;-2 7 -6];b=[1;2;3];x=A\bAg=[A b]rref(Ag)Warning: Matrix is singular to working precision.x =NaNNaN-InfAg =1 3 3 1

-1 5 -3 2-2 7 -6 3ans =1 0 3 00 1 0 00 0 0 1

130

Page 135: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

Kısmi Diferansiyel Denklemler

4. Verilen dogrusal denkleminin sonsuz çözümü oldugunu MATLAB ile gös-teriniz,çözüm kümesini bulunuz.

x1 − x2 + 3x3 = 2−2x1 + x2 = 0

4x1 − 4x2 + 12x3 = 8

>> A=[1 -1 3;-2 1 0;4 -4 12];b=[2;0;8];x=A\bAg=[A b]rref(Ag)Warning: Matrix is singular to working precision.

x =

NaNNaNNaN

Ag =1 -1 3 2-2 1 0 04 -4 12 8ans =1 0 -3 -20 1 -6 -40 0 0 0

Sayısal Türev

1. Konum fonksiyonu x(t) = 4t3 − 10t2 − t + 5 olarak verilen bir cismin [0, 100]saniye arasındaki hız ve ivmesini MATLAB’ın ’diff’ komutu ile bulunuz, ger-çek hız ve ivme degerleri ile sayısal hız ve ivme degerlerini karsılastırınız,grafiklerini çizdiriniz.

%konum,hız,ivme grafiklerikonum=inline(’4*t.^3-10*t.^2-t+5’)t=0:.5:100;x=konum(t);v=diff(x)./diff(t); %sayısal hız hesaplanırtv=0.5:0.5:100; %grafik için geri fark degerleri, tv?nin eleman sayısı v?nin eleman sayısına esit %oldu.

131

Page 136: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

Kısmi Diferansiyel Denklemler

a=diff(v)./diff(tv);ta=.5:.5:99.95;

% ivme vektörünün eleman sayısı tv ninkinden bir eksik, a’nın eleman sayısına esitlemek için zamanın her iki ucundan daralttık, ta?nın eleman sayısı a?nın eleman sayısına esit oldu.

plot(t,x,’:’,tv,v,’--’,ta,a,’g’) %konum, sayısal hız,sayısal ivme grafikleri aynı pencereye çizildi

figurehiz=inline(’12*t.^2-20*t-1’); %gerçek hızghiz=hiz(tv); %tv noktalarında gerçek hız degerlerihata_hiz=ghiz-v; %gerçek hız sayısal hız farkımax(abs(hata_hiz)) %en büyük mutlak hataplot(tv,ghiz,’r’,tv,v,’o’) %gerçek hız, sayısal hız aynı grafige çizilirfigure

ivme=inline(’24*t-20’); %gerçek ivmegivme=ivme(ta); %ta noktalarında gerçek ivme degerlerihata_ivme=givme-a; %gerçek ivme sayısal ivme farkımax(abs(hata_ivme)) %en büyük mutlak hataplot(ta,givme,’r’,ta,a,’o’) %gerçek ivme sayısal ivme aynı grafige çizilir

2. f(x) = x2+cos?(5x)−2x+3 fonksiyonunun [0, 4] aralıgındaki sayısal türevinih = 0.01 alarak geri fark ve merkezi fark ile hesaplayınız. Fonksiyonun gerçektürevini bulunuz, sayısal türevler ve gerçek türev degerlerini aynı grafige çiz-diriniz, geri fark ve merkezi fark türevleri için en büyük mutlak hata degerinihesaplayınız.

x=0:.01:4;y=x.^2+cos(5*x)-2*x+3;

g_turev_y=diff(y)./diff(x);xd=x(2:length(x)); %turevin eleman sayısı bir eksik oldugundan yeni x degerleri geri fark

%geri fark sayısal türev ile gerçek türev ile kıyaslama

y1=2*xd-5*sin(5*xd)-2; %gerçek türev degerleriplot(xd,g_turev_y, xd, y1,’r--o’) %geri fark ile sayısal türev ve gerçek türev grafigititle(’Geri fark ile sayisal türev ve gerçek türev’)

geri_hata=y1-g_turev_y;geri_mut_hata=max(abs(geri_hata))

132

Page 137: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

Kısmi Diferansiyel Denklemler

%Merkezi fark ile sayısal türev hesabı

m_turev_y=(y(3:end)-y(1:end-2))/(x(3)-x(1));xdm=x(2:end-1);y1=2*xdm-5*sin(5*xdm)-2;figureplot(xdm, m_turev_y, xdm, y1, ’ro’)title(’Merkezi fark ile sayisal türev ve gerçek türev’)

merk_hata=y1-m_turev_y;merk_mut_hata=max(abs(merk_hata))

3. Tabloda x degerleri ve karsılık gelen y degerleri verilmistir.

x 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

y 0.447 1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.30 11.2

Tablodaki veriler için, ilk olarak sayısal türevi ilk olarak ’diff’ komutu hesap-layınız. Sayısal türevi bu kez y degerlerine uyan 9. derece polinomu bulup,polinomun türevini hesaplayarak bulunuz, ’diff’ komutu ile elde ettiginiz so-nuçlarla polinomun türevini aynı grafik (türev için ileri fark degerleri) üze-rinde çizdiriniz.

x=0:.1:1;y=[-.447 1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.30 11.2];

yturev=diff(y)./diff(x); %diff komutu ile türev

p=polyfit(x,y,9) %verilere 9. dereceden polinom yaklasımıxi=linspace(0,1,100);yi=polyval(p,xi); %polinom degerleri hesaplanırplot(x,y,’ro’,xi,yi); % veriler ve polinom aynı grafige çizilirtitle(’Veriler ve 9. derece polinom’)

pturev=polyder(p); % polinomun türevini alırpturevd=polyval(pturev,x); %türevi x noktalarında hesaplar

xd=x(1:length(x)-1); %yturev y den daha kısadır, x degerleri kesilir, ileri fark yaklasımıfigure %yeni grafik penceresi açılırplot(xd,yturev,’ro’,x,pturevd)%polinomun türevi ile diff komutu ile elde edilen türev aynı grafige çizilirtitle(’Polinomun türevi ve diff komutu ile elde edilen sayisal türev’)

133

Page 138: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

Kısmi Diferansiyel Denklemler

Sayısal Integral

1. ∫ π

0cos3xdx

integralini MATLAB’ın hazır fonksiyonlarını kullanarak a) Yamuk kuralı ileh = π/100 b) Simpson kuralı ile hesaplayınız. Gerçek integral degerini bulu-nuz. Mutlak hataları hesaplayınız.

h=pi/100;x=0:h:pi;y=(cos(x)).^3;

Iyamuk=trapz(x,y);Isimp=quad(’cos(x).^3’,0,pi)Igercek=int(’cos(x)^3’,0,pi)

mut_h_yamuk=abs(Igercek-Iyamuk)mut_h_simp=abs(Igercek-Isimp)

m1=double(mut_h_yamuk)m2=double(mut_h_simp)

2. ∫ ∞−∞

e−x2dx

integralini MATLAB ile hesaplayınız.

Qg=quadgk(@(x) exp(-x.^2),-inf,inf)

3. ∫ 1

−1

1

1 + 9x2dx

integralini MATLAB’ın hazır fonksiyonlarını kullanarak a) Yamuk kuralı ileh = π/100 b) Simpson kuralı ile hesaplayınız. Gerçek integral degerini bulu-nuz. Mutlak hataları hesaplayınız.

h=1/100;x=-1:h:1;y=1./(1+9*x.^2);

Iyamuk=trapz(x,y)Isimp=quad(’1./(1+9*x.^2)’,-1,1)

134

Page 139: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

Kısmi Diferansiyel Denklemler

Igercek=int(’1/(1+9*x^2)’,-1,1)Igercek=double(Igercek)

mut_h_yamuk=abs(Igercek-Iyamuk)mut_h_simp=abs(Igercek-Isimp)

4. ∫ ∞2

x3e−x2dx

integralini MATLAB ile hesaplayınız.

Qg=quadgk(@(x) x.^3*exp(-x.^2),2,inf)

5. Yamuk kuralı için fonksiyon yazınız. Fonksiyonunuzun adı,girdileri ve çık-tısı asagıdaki gibi olsun:

Iyamuk=Yamuk(f,a,b,n)

Girdiler: ’f’ integrali alınacak fonksiyon, [a, b] aralıgı integralin alınacagı ara-lık, n alt aralık sayısı, çıktı: yamuk kuralı ile hesaplanan yaklasık integraldegerini göstermektedir.

Programınız ile n = 6, 10, 24, 100 aralık için

1

2

∫ 1

−1

4

1 + x2dx

integralini hesaplayınız. Integrali MATLAB’ın hazır fonksiyonu ’trapz’ ile farklıh degerleri için hesaplayınız, sonuçları karsılastırınız, iki deger arasındakifarkları bulunuz. Integralin sonucu yaklasık olarak hangi sayıyı vermektedir?

function Iyamuk=Yamuk(f,a,b,n)% f fonksiyonunun [a,b] aralı?ında integralini n alt aralık kullanarak yamuk kuralı ile hesaplar.%f inline olarak tanımlanmıs fonksiyon olmalıdır.% I=Yamuk(@f,a,b,n)

h=(b-a)/n;S=f(a);for i=1:n-1x(i)=a+h*i;S=S+2*f(x(i));end

S=S+f(b);Iyamuk=h*S/2;

135

Page 140: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

Kısmi Diferansiyel Denklemler

%n=6 aralık içinI6=0.5*Yamuk(@(x) 4./(1+x.^2),-1,1,6)%n=10 aralık içinI10=0.5*Yamuk(@(x) 4./(1+x.^2),-1,1,10)%n=24 aralık içinI24=0.5*Yamuk(@(x) 4./(1+x.^2),-1,1,24)%n=100 aralık içinI100=0.5*Yamuk(@(x) 4./(1+x.^2),-1,1,100)

%h=0.1 içinh=0.1;x=-1:h:1;y=4./(1+x.^2);I1=0.5*trapz(x,y)

%h=0.05 içinh=0.05;x=-1:h:1;y=4./(1+x.^2);I2=0.5*trapz(x,y)

%h=0.01 içinh=0.01;x=-1:h:1;y=4./(1+x.^2);I3=0.5*trapz(x,y)

fark1=I10-I1fark2=I24-I2fark3=I100-I3

6. Simpson 1/3 kuralı için fonksiyon yazınız. Fonksiyonunuzun adı, girdilerive çıktısı asagıdaki gibi olsun:Isimp13=Simpson13(f,a,b,n)

Burada girdiler: f integrali alınacak fonksiyon, [a, b] aralıgı integralin alına-cagı aralık, n alt aralık sayısı, çıktı: Simpson 1/3 kuralı ile hesaplanan yak-lasık integral degeri. Programınız eger aralık sayısı n çift sayı degilse ’Aralıksayısı n çift sayı olmalıdır’ hata mesajını versin.Programınız ile n = 6, 10, 24, 100 aralık için

1

2

∫ 1

−1

4

1 + x2dx

136

Page 141: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

Kısmi Diferansiyel Denklemler

integralini hesaplayınız. Integrali MATLAB’ın hazır fonksiyonu ’quad’ ile he-saplayınız, sonuçları karsılastırınız, iki deger arasındaki farkları bulunuz. In-tegralin gerçek degerini bulunuz. Integralin gerçek degeri hangi sayıyı verir?Sonuçlarınızı karsılastırınız, mutlak hataları bulunuz.

function Isimp13=Simpson13(f,a,b,n)% f fonksiyonunun [a,b] aralı?ında integralini Simpson?s 1/3 kuralı ile n aralık sayısı için (n %çift sayı olmalıdır) hesaplar.%f fonksiyonu inline veya m-dosyası olabilir.

if rem(n,2)~=0fprintf(’HATA: Aralık sayısı n çift sayı olmalıdır\n’)returnend

h=(b-a)/n;x(1)=a;S=f(a);for i=1:nx(i+1)=a+h*i; %tüm xi noktaları olusturuluyorend

for i=2:2:nS=S+4*f(x(i)); %çift indisler toplama eklenirendfor i=3:2:n-1S=S+2*f(x(i)); %tek indisler toplama eklenirendS=S+f(b);Isimp13=h*S/3; %toplam h/3 ile çarpılır

%n=6 aralık için

I6=0.5*Simpson13(@(x) 4./(1+x.^2),-1,1,6)%n=10 aralık içinI10=0.5*Simpson13(@(x) 4./(1+x.^2),-1,1,10)%n=24 aralık içinI24=0.5*Simpson13(@(x) 4./(1+x.^2),-1,1,24)%n=100 aralık içinI100=0.5*Simpson13(@(x) 4./(1+x.^2),-1,1,100)

Iquad=0.5*quad(’4./(1+x.^2)’,-1,1)

137

Page 142: MAT 307-NÜMERIK ANAL˙ IZ˙ MATLAB UYGULAMALARI · 2019-12-23 · yapıldıgında˘ matlab1 dosyası kapatılmıs¸ olur. Bundan sonra yapılacak is-¸ lemler kayıt altına alınmaz

Kısmi Diferansiyel Denklemler

fark1=Iquad-I6fark2=Iquad-I10fark3=Iquad-I24fark4=Iquad-I100

%Integralin gerçek de?eriIgercek=0.5*int(’4/(1+x^2)’,-1,1)Igercek=double(Igercek)

%Gerçek integral de?eri ile farklarfark5=Igercek-I6fark6=Igercek-I10fark7=Igercek-I24fark8=Igercek-I100

fark9=Igercek-Iquad

138