Bilgisayar Programlama Güz 2011

Slides:



Advertisements
Benzer bir sunumlar
Matlab’da Diziler; Vektörler ve Matrisler
Advertisements

DİZİLER – I. Kısım YRD.DOÇ.DR. CİHAD DEMİRLİ
MATLAB.
Makine Müh. & Jeoloji Müh.
Bilgisayar Programlama Güz 2011
EKRAN ÇIKTISI.
MATLAB Bilgisayar Programlama Yrd.Doç. Dr. Aslıhan KURNUÇ
Bilgisayar Programlama (Yrd. Doç. Dr. İbrahim ASRİ)
MATLAB.
Ayrık Yapılar Matlab Notları
Bilgisayar Programlama Güz 2011
Yrd.Doç.Dr.Levent Malgaca,2010
Kofaktör Matrisler Determinantlar Minör.
MATLAB’ ta Diziler.
DÖNGÜ “Şart sağlandığı sürece” içerisindeki komut satırlarını, artış değeri adedince tekrarlayan kodlardır.
2) Sayısal Hesaplamalarda Gerek Duyulabilecek Matlab İşlemleri
MATLAB’de Diziler; Vektörler ve MAtrisler
MATLAB’İN SAYI YUVARLAMA FONKSİYONLARI
Isı Transferi Problemleri
MATLAB’ de Programlama
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 4: Diziler
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 3: Döngüler
Nesneye Yönelik Programlama
MATRİSLER ve DETERMİNANTLAR
Bilgisayar Programlama (Yrd. Doç. Dr. İbrahim ASRİ)
İNTERNET PROGRAMCILIĞI I BTP 207 Ders 9. Tek değişkende birden fazla bilgi tutulmak istendiğinde kullanılır. Kullanım şekli: var dizi_adı= new Array(eleman1,
Bilgisayar Programlama Güz 2011
DERS 2 MATRİSLERDE İŞLEMLER VE TERS MATRİS YÖNTEMİ
MATRİS-DETERMİNANT MATEMATİK.
Bilgisayar Programlama Güz 2011
DERS 3 DETERMİNANTLAR ve CRAMER YÖNTEMİ
BM-103 Programlamaya Giriş Güz 2014 (7. Sunu)
BM-103 Programlamaya Giriş Güz 2014 (8. Sunu)
MATLAB’te Döngüler.
KONU: MATRİSLER VE DETERMİNANTLAR
BM-103 Programlamaya Giriş Güz 2014 (4. Sunu)
BM-103 Programlamaya Giriş Güz 2014 (2. Sunu)
BM-103 Programlamaya Giriş Güz 2014 (9. Sunu)
MATLAB’ de Programlama
Öğretmenin; Adı Soyadı :
MATLAB’ de Programlama
Bilgisayar Programlama Güz 2011
Algoritmalar ve Programlama I Ders 2: Akış Diyagramları
BMS-301 Kabuk Programlama Güz 2015 (6. Sunu) (Yrd. Doç. Dr. Deniz Dal)
Matrisler ( Determinant )
BM-103 Programlamaya Giriş Güz 2012 (3. Sunu)
SAYISAL ANALİZ Doç.Dr. Cüneyt BAYILMIŞ.
Sayısal Analiz / Uygulama
OTO1004 Bilgisayar Destekli Mühendislik Dersi Sunu No:01 Öğr. Gör. Dr. Barış ERKUŞ.
BİLGİSAYAR PROGRAMLAMA Ders 6: Diziler Yrd. Doç. Dr. Altan MESUT Trakya Üniversitesi Bilgisayar Mühendisliği.
5. HAFTA Mart Discussion: comp.soft-sys.matlab An unmoderated newsgroup that focuses on the.
DİJİTAL GÖRÜNTÜ İŞLEME Y. Doç. Dr. Esra Tunç Görmüş
BİLGİSAYAR PROGRAMLAMA DERSİ
BİLGİSAYAR PROGRAMLAMA DERSİ 7. DERS NOTU Konu: Dosya Yönetim.
BİLGİSAYAR PROGRAMLAMA DERSİ 4. DERS NOTU Konu: M-dosya yapısı ve Kontrol Yapıları 1.
BİLGİSAYAR PROGRAMLAMA DERSİ 6. DERS NOTU Konu: Matlab’ de Diziler ve Matrisler.
PHP'de Program Denetimi
Fonksiyonlar ve Diziler
MATLAB R2013’e Giriş.
BİLGİSAYAR PROGRAMLAMA Ders 6: Diziler
BM-103 Programlamaya Giriş Güz 2016 (4. Sunu)
BM-103 Programlamaya Giriş Güz 2016 (3. Sunu)
BM-103 Programlamaya Giriş Güz 2016 (8. Sunu)
BİLGİSAYAR PROGRAMLAMA Ders 6: Diziler
BM-103 Programlamaya Giriş Güz 2016 (5. Sunu)
BM-103 Programlamaya Giriş Güz 2016 (7. Sunu)
Discussion: comp.soft-sys.matlab
Sunum transkripti:

Bilgisayar Programlama Güz 2011 MF-103 Bilgisayar Programlama Güz 2011 (9. Sunu) (Yrd. Doç. Dr. Deniz Dal)

GizemliFonksiyon.m function GizemliFonksiyon(n) clc; if (n<2)||(n>20) disp('Beklenen Aralikta Bir Giris Degil.'); return; end for i=1:n if (i==1)||(i==n) for j=1:n fprintf('#'); %Ekrana # Bas fprintf('\n'); else fprintf('@'); %Ekrana @ Bas for j=2:(n-1) fprintf(' '); %Ekrana Bosluk Bas fprintf('@\n'); Yanda verilen GizemliFonksiyon.m adlı fonksiyon m-dosyası genel olarak nasıl bir iş yapar? Komut penceresinde çalıştırılan GizemliFonksiyon(10) nasıl bir ekran çıktısı verir? Çözüm: Fonksiyon içerisinde n gördüğünüz her yere 10 rakamını yerleştirip sanki MATLAB programıymışsınız gibi  fonksiyonu satır satır işletmelisiniz. 2

İKİ BOYUTLU DİZİLER (MATRİSLER) İki boyutlu dizi (matris) denildiğinde aklınıza kare bulmaca veya satranç tahtası gelmelidir.

MATLAB’DE İKİ BOYUTLU DİZİLER (MATRİSLER) VE size Fonksiyonu

MATRİS ELEMANLARINA İNDİS İLE ULAŞMA Virgül ile ayrılmış iki indis kullanıldığına dikkat ediniz (satır indisi ve sütun indisi). Tek boyutlu dizilerde ise tek bir indis kullandığımızı da hatırlayınız.

İPUCU Kendisine M adındaki bir matrisi parametre olarak alan bir fonksiyon m-dosyası matrisin boyutuyla ilgili bir işlem yapıyorsa size(M) fonksiyonunu muhakkak kullanmak zorundadır. (Bu fonksiyona komut penceresinden nasıl bir vektörün parametre olarak aktarılacağı peşinen bilinemez çünkü.)

İPUCU Bir matris içerisinde iç içe 2 for döngüsü kullanılarak kolaylıkla gezilebilir. Dıştaki döngü (i ile kontrol edilen döngü) satır indislerini ve içteki döngü (j ile kontrol edilen döngü) sütun indislerini temsil amacıyla kullanılabilir. [satirSayisi sutunSayisi]=size(M); toplam=0; for i=1:satirSayisi for j=1:sutunSayisi toplam=toplam+M(i,j); end disp(toplam); Bu program ne iş yapar?

MATRİSLERDE İŞLEMLER Aşağıdaki matris işlemlerini MATLAB zaten kolayca gerçekleştirmektedir. Ama bizim amacımız bu işlemleri şimdiye kadar öğrendiğimiz programlama yapıları ile kendimizin yazabilmesidir. Matrislerin Bir Skalerle Çarpımı Matrislerde Toplama ve Çıkarma Matrislerde Çarpma Matrislerin Transpozu

Matrislerin Bir Skalerle Çarpımı Kendisine parametre olarak aldığı bir M matrisinin her bir elemanını yine kendisine parametre olarak aldığı bir k skaleri ile çarpan ve elde ettiği N matrisini geriye döndüren bir MATLAB fonksiyonunu MatrisiSkalerleCarp.m adındaki fonksiyon m-dosyasının içerisine yazınız. function N=MatrisiSkalerleCarp(M,k) N=[ ];%Baslangicta Bos Bir Matris [satirSayisi sutunSayisi]=size(M); for i=1:satirSayisi for j=1:sutunSayisi N(i,j)=M(i,j)*k; end KOMUT PENCERESİ >>MatrisiSkalerleCarp([1 2;3 4],6) ans= 6 12 18 24

Matrislerde Toplama ve Çıkarma İşlemi Kendisine parametre olarak aldığı bir M matrisi ile yine kendisine parametre olarak aldığı bir N matrisini toplayarak elde ettiği T matrisini geriye döndüren bir MATLAB fonksiyonunu IkiMatrisiTopla.m adındaki fonksiyon m-dosyasının içerisine yazınız. İki matrisin toplanabilmesi veya çıkarılabilmesi ancak ve ancak boyutlarının (yani satır ve sütun sayılarının) eşit olması ile mümkündür. function T=IkiMatrisiTopla(M,N) T=[ ];%Baslangicta Bos Bir Matris [satirSayisiM sutunSayisiM]=size(M); [satirSayisiN sutunSayisiN]=size(N); if (satirSayisiM==satirSayisiN)&&(sutunSayisiM==sutunSayisiN) for i=1:satirSayisiM%Veya satirSayisiN for j=1:sutunSayisiM%Veya sutunSayisiN T(i,j)=M(i,j)+N(i,j); end KOMUT PENCERESİ >>IkiMatrisiTopla([1 2;3 4],[5 6;7 8]) ans= 6 8 10 12

Matrislerde Çarpma İşlemi A ve B gibi iki matrisin çarpılabilmesi için A matrisinin sütun sayısının B matrisinin satır sayısına eşit olması gerekmektedir. A matrisi mxn, B matrisi nxk ise bu çarpma işlemi sonucunda elde edilecek C matrisinin boyutu mxk olacaktır. A=[1 2 1;0 3 -1]; B=[1 2; 1 5;2 3]; if size(A,2) ~= size(B,1) disp('Carpim Illegal'); return; end C=zeros(size(A,1),size(B,2)); for i=1:2 for j=1:2 for k=1:3 C(i,j)=C(i,j)+A(i,k)*B(k,j); disp(A); disp(B); disp(C); Örnek

Matrislerde Transpoz İşlemi Transpoz, matrislerde satır ile sütunun yer değiştirmesi işlemidir. Yani A=2x3’lük bir matrisin transpozu alındığı zaman B=AT=3x2’lik bir matris elde edilir. A=[1 3 0; 4 2 -3]; B=[ ]; [m n]=size(A); for i=1:n %A’nin Sutunu for j=1:m %A’nin Satiri B(i,j)=A(j,i); end disp(A); disp(B); B =AT 1 4 3 2 0 -3 A = 1 3 0 4 2 -3 Komut satırında A' yı test ediniz. Hangi metod daha kolay ? 

BİR KARE MATRİSİN ANA KÖŞEGENİ (Kuzey Batı – Güney Doğu Köşegeni) Köşegen Üzerindeki Elemanlar (i==j) Üst Üçgen Bölgedeki Elemanlar (j>i) İç Döngü Değişkeni (j) 𝑴= 𝟒 𝟒 −𝟏𝟓 𝟑 𝟐𝟕 𝟏 𝟕𝟖 𝟗 𝟏𝟔 −𝟕 𝟏𝟐𝟑 −𝟗 𝟐𝟓 𝟑𝟒 𝟐 𝟒 𝟓𝟖 𝟑𝟒 𝟒𝟐 𝟓𝟔 −𝟔𝟓 𝟏𝟏𝟐 𝟐 𝟖 𝟑 Dış Döngü Değişkeni (i) Alt Üçgen Bölgedeki Elemanlar (i>j)

BİR KARE MATRİSİN İKİNCİL KÖŞEGENİ (Kuzey Doğu – Güney Batı Köşegeni) Üst Üçgen Bölgedeki Elemanlar (i+j)<(n+1) Köşegen Üzerindeki Elemanlar (i+j)==(n+1) İç Döngü Değişkeni (j) 𝑴= 𝟒 𝟒 −𝟏𝟓 𝟑 𝟐𝟕 𝟏 𝟕𝟖 𝟗 𝟏𝟔 −𝟕 𝟏𝟐𝟑 −𝟗 𝟐𝟓 𝟑𝟒 𝟐 𝟒 𝟓𝟖 𝟑𝟒 𝟒𝟐 𝟓𝟔 −𝟔𝟓 𝟏𝟏𝟐 𝟐 𝟖 𝟑 Dış Döngü Değişkeni (i) Alt Üçgen Bölgedeki Elemanlar (i+j)>(n+1)

UYGULAMA Kendisine parametre olarak aldığı bir M kare matrisinin ana köşegeni üzerindeki elemanlarının aritmetik ortalamasını bularak geriye döndüren bir MATLAB fonksiyonu yazınız. (İç içe 2 for döngüsüne ihtiyaç duyulur mu? Tek for döngüsü ile çözüme ulaşabilir miyiz?) UYGULAMA Kendisine parametre olarak aldığı bir M kare matrisinin ikincil köşegeni üzerindeki elemanlarının geometrik ortalamasını bularak geriye döndüren bir MATLAB fonksiyonu yazınız. (İç içe 2 for döngüsüne ihtiyaç duyulur mu? Tek for döngüsü ile çözüme ulaşabilir miyiz?)

UYGULAMA Aşağıdaki gibi bir ekran çıktısı verecek EkranaRakamBas.m adında bir fonksiyon m-dosyası yazınız. (Fonksiyonunuz kendisine hiçbir argüman almayacak ve geriye yine hiçbir değer çevirmeyecektir.) EKRAN ÇIKTISI >>EkranaRakamBas() 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 1 2 3 4 5 6 1 2 3 4 5 1 2 3 4 1 2 3 1 2 1 function EkranaRakamBas() clc; for i=1:9 %Satir Sayisi for j=1:(10-i) %Sutun Sayisi fprintf('%d ', j); end fprintf('\n'); %Bir Alt Satirin Basina Git 16

UYGULAMA Aşağıdaki gibi bir ekran çıktısı verecek EkranaRakamBas.m adında bir fonksiyon m-dosyası yazınız. (Fonksiyonunuz kendisine hiçbir argüman almayacak ve geriye yine hiçbir değer çevirmeyecektir.) EKRAN ÇIKTISI >>EkranaRakamBas() 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 4 4 4 4 4 4 5 5 5 5 5 6 6 6 6 7 7 7 8 8 9 17

UYGULAMA Aşağıdaki gibi bir ekran çıktısı verecek EkranaRakamBas.m adında bir fonksiyon m-dosyası yazınız. (Fonksiyonunuz kendisine hiçbir argüman almayacak ve geriye yine hiçbir değer çevirmeyecektir.) 9x9’luk bir kare matrisin ana köşegene göre alt üçgen bölgesinde (ana köşegen dahil) (if i>=j) j’leri, üst üçgen bölgesinde ise boşluk karakterlerini ekrana basan bir çözüm işe yarar mı? EKRAN ÇIKTISI >>EkranaRakamBas() 1 1 2 1 2 3 1 2 3 4 1 2 3 4 5 1 2 3 4 5 6 1 2 3 4 5 6 7 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 9 18

UYGULAMA K=[-4 3 0;2 0 4 ] matrisindeki sıfırların sayısını ve yerini (satır ve sütun numaralarını) ekrana basan bir MATLAB düzyazı m-programı yazınız. K=[-4 3 0;2 0 4 ];%Rastgele Matris Icinde Sıfır Arayin [m n]=size(K); sifirSayisi=0;%Sayac for i=1:m for j=1:n if K(i,j)==0 sifirSayisi=sifirSayisi+1; fprintf('K(%d,%d)=0\n',i,j); end disp(K); fprintf('K Matrisindeki SIFIR Sayisi=%d\n',sifirSayisi);

KİTAPTAKİ 186-233 ARASI UYGULAMALARI BİRLİKTE YAZALIM VE ÇALIŞTIRALIM.