matlab denklem çözdürme / 10 – Matlab ile Denklem Çözme ve Döngüler (For ve While Döngüsü) · Güray Yıldırım

Matlab Denklem Çözdürme

matlab denklem çözdürme

[1]

Matlab ile Diferansiyel Denklem ÇözümüAhmet Müngen – Fırat ÜniversitesiBu Slayttaki Tüm Yazılar Açıklamalar Örnekler Hasan KORKMAZ, İzmir Fen Lisesi Matematik Öğretmeni’funduszeue.info adresli dosyasından alıntılanmıştır.

[2]

Diferansiyel Denklem Nedir? Matematikte, fonksiyon veya fonksiyonların, bir veya birden çok değişkene göre türevlerini ilişkilendiren denklemlerdir.

[3]

Matlab Diferansiyel Çözümü Matlab’da bir Diferansiyel denklemin genel ve belirli şartlara uyan özel çözümlerini buldurabiliriz. Bunun için aşağıdaki kurallara dikkat etmeliyiz.

[4]

X yerine T i) Matlab y gibi bir fonksiyonun varsayılan değişkenini x değil t olarak kabul funduszeue.info diferansiyel denklemimizi yazarken, serbest değişken için t kullanmalıyız.

[5]

Türev Gösterimi y’ türev fonksiyonu için Dy, y’’ 2. mertebeden türev fonksiyonu için D2y, y’’’ 3. mertebeden türev fonksiyonu için D3y … yazmalıyız. Ayrıca Sayının üstü ^ ile alınırYani X2 yerine x^2 Çarpım ise * işareti ile gösterilir.

[6]

Özel Değerler Matlab denklemleri sembolik olarak çözümlediğinden, denklemleri ve gerekirse özel değerleri iki ‘ (kesme) arasına yazmalıyıfunduszeue.info fazla ifade yazacaksak ayraç olarak aralara , (virgül)koymalıyız.(Bu Konu Örnek Verilince Daha iyi anlaşılacak)

[7]

dsolve Komutu t bağımsız değişkenine bağlı y gibi bir fonksiyon ve türevlerinden oluşan sembolik ifadeye karşılık gelen diferansiyel denkleminin genel ve istenirse tanımlanmış ilk değerlere karşılık gelen özel çözümlerini bulmaya yarar. dsolve(‘diferansiyel denklem’) komutuyla yazılan diferansiyel denklemin genel çözümünü buluruz. dsolve(‘diferansiyel denklem’,’özel değer1’,’özel değer2’, …) komutuyla yazılan diferansiyel denklemin özel değer1, özel değer2, … özel değerlerine karşılık gelen özel çözümünü buluruz.

[8]

Örnek 1: xy’-2y=xx+8 diferansiyel denkleminin a) Genel çözümünü bulduran, b) x=1 için y= -6 değerini veren özel çözümü bulduran, c) Sonuçların ekranda düzenli görünmesini sağlayan, d) Sonucu x değişkenine bağlı olarak görüntüleyen, e) Sonuç a değişkenine bağlı olarak görüntüleyen

[9]

Örnek 1 – A Denklem: xy’-2y=xx+8 Soru: Genel çözümünü bulduran, Çözüm: dsolve(‘t*Dy-2*y=t^*t+8’) Ekran Çıktısı: t^+2*t+t^2*C1

[10]

Örnek 1 – B Denklem: xy’-2y=xx+8 Soru: x=1 için y= -6 değerini veren özel çözümü bulduran, Çözüm: dsolve(‘t*Dy-2*y=t^*t+8’,’y(1)=-6’) Ekran Çıktısı: t^+2*t-5*t^2

[11]

Pretty Sonuçların daha düzenli görüntüsünü almak için, dsolve komutundan önce pretty komutunu kullanabilirsiniz.

[12]

Örnek 1 – C Denklem: xy’-2y=xx+8 Soru: ) Sonuçların ekranda düzenli görünmesini sağlayan Çözüm: pretty(dsolve(‘t*Dy-2*y=t^*t+8’,’y(1)=-6’)) Ekran Çıktısı: ; t3 - 4 + 2 t - 5 t2

[13]

Örnek 1 – D Denklem: xy’-2y=xx+8 Soru: Sonucu x değişkenine bağlı olarak görüntüleyen Çözüm: pretty(dsolve('x*Dy-2*y=x^*x+8','x')) Ekran Çıktısı: ; x3 - 4 + 2 x2 + x C1

[14]

Örnek 1 – E Denklem: xy’-2y=xx+8 Soru: Sonuç a değişkenine bağlı olarak görüntüleyen komutları yazalım Çözüm: pretty(dsolve('a*Dy-2*y=a^*a+8','a')) Ekran Çıktısı: ; a3 - 4 + 2 a2 + a C1

[15]

Örnek 2 Örnek 2: x2y’’+4xy’+2y=0 diferansiyel denkleminin; a) Genel çözümünü bulduran, b) x=1 için y=1 ve x= -2 için y= -5/4 değerini veren özel çözümünü bulduran, c) x=-1 için y’=1 ve x=2 için y’’=0değerini veren özel çözümünü bulduran komutları yazalım.

[16]

Örnek 2-A a) pretty(dsolve(‘t^2*D2y+4*t*Dy+2*y=0’)) C1 C2 + t t2

[17]

b) pretty(dsolve(‘t^2*D2y+4*t*Dy+2*y=0’,’y(1)=1’,’y(-2)=-5/4’)) c) pretty(dsolve(‘t^2*D2y+4*t*Dy+2*y=0’,’Dy(-1)=1’,’D2y(2)=0’))

[18]

Örnek 3 Örnek 3: Y’’’+4y’=48sin4x diferensiyel denkleminin; a) Genel çözümünü bulduran, b) x=0 için y=1, x= 0 için y’= 0 ve x=p/4 için y’’’=-4 değerini veren özel çözümünü bulduran komutları yazalım. Çözüm: a) pretty(dsolve('D3y+4*Dy=48*sin(4*t)')) b) pretty(dsolve('D3y+4*Dy=48*sin(4*t)','y(0)=1', 'Dy(0)=1','D3y(pi/4)=-4')) Ekran Görüntüleri: a) 2 cos2(2 t) - 1 + C1 + C2 sin(2 t) + C3 cos(2 t)  b) 2 cos2(2 t) - 1/2 + 1/2 sin(2 t) - 1/2 cos(2 t)

[19]

Grafik Çizimi Matlab’da değişkenlerinizin grafiklerini plot veya stem ile çizdirebilirsiniz. Ama Diferansiyel Denklem grafiklerini çizdirmek için (Örnek 1’i refer alarak) ezplot(dsolve('t*Dy-2*y=t^*t+8','y(1)=-6')) gibi komutunuzu ezplot parantezine almanız gerekmektedir. Dikkat: y(1)=-6 gibi referans değeri vermezseniz grafiğiniz çizilemeyebilir

[20]

Kaynakça Hasan KORKMAZİzmir Fen Lisesi Matematik Öğfunduszeue.info Genel Matlab Bilgisi İçinİlhan Aydın’ın Slaytına Bakınız. Adres: funduszeue.info Sistem Teorisi

10 – Matlab ile Denklem Çözme ve Döngüler (For ve While Döngüsü)

  1. yazıda, yaptığımız işlemleri artık daha seri ve daha çok yapmak istediğimizde, yani bilgisayarda bir şeyler yapmanın faydasını gerçek anlamda görmek istediğimizde akla ilk gelenlerden olan döngüleri ve Matlab’ın güzelliklerinden olan denklem çözmeyi göreceğiz. İsterseniz lafı hiç uzatmadan başlayalım.

İlk olarak, elimizde bir polinomun olduğunu varsayalım. Bir polinomun köklerini bulmak için Matlab altında roots() isimli bir fonksiyon kullanıyoruz. Şimdi o fonksiyonun çıktısını bir örnekle görelim. (x+2)^2 ifadesinin açılımını zaten biliyoruz. Bu açılımın kaysayılarını yazalım ve gelecek kökün -2 olduğunu görelim. Bunu önceden hesaplamak için de, daha önce grafik çiziminde kullandığımız polyval() fonksiyonu ile fonksiyonun istediğimiz nokta veya noktalardaki değerini belirleyelim. Burada -2 noktasındaki değerinin 0 olduğunu görmekte kullanalım.

Şimdi roots fonksiyonunu kullanalım:

Gördüğümüz gibi fonksiyon çift katlı olduğu için sonuç da 2 tane -2 içeriyor. Hazır başlamışken, elimizde kökleri olan bir polinomu nasıl elde edeceğimizi de görelim. Bunu yapmak için poly() adlı fonksiyonu kullanacağız. Bu fonksiyona kökleri bir vektör olarak gönderiyoruz. Yani yapısı poly([kökler vektörü]) şeklinde oluyor. Şimdi bu köklerden polinomumuzu elde edelim:

Gördüğümüz üzere (x+2)^2’nin açılımını elde ettik. Bunu farklı örnekler yaparak peşiktirebiliriz. Bunu da belirttikten sonra konumuza dönelim. Elimizde vektör veya matrislerden oluşan, yani birden fazla denklemden oluşan bir denklem sistemi varsa kullanacağımız fonksiyon da değişiyor. Şimdi onu açıklayalım.

Öncelikle, daha önceki yazılarda denklem sistemini matrislere nasıl geçirdiğimizi hatırlayalım. Katsayıları yazdığımız matris katsayılar matrisi, eşitliklerin sağ kısımlarını da eklediğimiz matris ise genişletilmiş matris oluyordu. Şimdi isterseniz bir denklem sistemini Matlab’a aktaralım ve onun üzerinden devam edelim.

2x+3y = 15

3x – 2y = 30

Bu denklem sistemini aktarmaya çalışırsak:

Genişletilmiş matrisi tanımlamadan, katsayılar matrisini ve sonuç matrisini ayrı ayrı tanımladığımıza dikkat edin. Şimdi bu matrisleri linsolve() fonksiyonuna aktararak çözümleri içeren vektörü elde edeceğiz. linsolve fonksiyonuna 2 argüman gönderiyoruz. İlkine katsayılar matrisini, 2.’sine değer matrisini, yani burada sonuc isimli değişkende tuttuğumuz vektörü gönderiyoruz. İsterseniz bu işlemi yapalım ve sonucu görelim.

Elimizde bir cevap var. Denklem sistemimizin Ax=b yapısında olduğunu kabul edersek, bizim bulduğumuz vektör x‘e eşit olmalı. O halde katsayı matrisi ile x’in çarpımıb’yi vermeli. Hemen sonucu görelim ve yepyeni bir konuya giriş yapmış olalım.

Gördüğümüz üzere başlangıçtaki b vektörümüzü(sonuc ismini vermiştik) elde ettik. Şimdi az önce bahsettiğim yeni konuya girelim. Bu elde ettiğimiz sonucun bizim beklediğimiz değere eşit olup olmadığını görmek için kullanabileceğimiz, hatta sadece burada değil ileride göreceğimiz if ve bir sürü yapıda kullanabileceğimiz bir kontrol operatörümüz var: ==. Bu operatör bize sonuçlar aynı ise 1, farklı ise 0 döndürür. Kısa bir bağımsız örnek üzerinde görelim:

Gördüğümüz gibi eşitlikler sağlandığında 1, sağlanmadığında ise 0 döndürdü. Şimdi bunu elde ettiğimiz çözüm matrisi üzerinde uygulayalım ve sonucumuzu inceleyelim. Öncelikle, elde ettiğimiz matrisi kontrol isimli bir değişkene atayalım.

Şimdi burada dikkat etmemiz gereken noktalar var. Öncelikle, 1 veya 0 beklerken 2 öğesi olan bir vektör geldi. Bunun sebebi, elimizde karşılaştırdığımız öğeler vektör olarak bulunuyorsa sonucun aynı boyutlarda vektör olarak dönmesidir. Mantığı ise, her öğenin ayrı ayrı karşılaştırılıp, istediğimiz dönüş vektörüne sonuçlarının yerleştirilmesidir. Yani iki vektörün 1. öğeleri karşılaştırıp ikisi aynıysa onların yerine 1, ikinciler için yine ikisi aynıysa 1 yazılır. O halde neden bizim aldığımız sonuçta ilk eleman 0 geldi, çözümümüz doğru değil miydi?

Burada devreye anlamlı sayılar geliyor. Bizim elde ettiğimiz sayısı 15 sayısından daha fazla kesinliğe sahip. Dolayısıyla bunlara Matlab eşit diyemiyor. Bunu engellemek için bu gibi durumlarda yuvarlama yapmamız gerekebilir. Bununla özellikle 0’ı tam yakalayamadığımızda karşılaşırız. Bize verilen çok küçük sayılar eşitlik kontrolünün 0 sonucunu döndürmesine neden olabilir. Bunu engellemek için de az önce belirttiğimiz, ancak adını vermediğimiz round() yuvarlama fonksiyonunu kullanmamız iyi bir çözüm olacaktır. Bu fonksiyon burada sayısını 30’a yuvarlayacak ve eşitliğin sağlanmasında iyi bir rol oynayacaktır. Tabii bir diğer yöntem sayıları girerken 15 yerine ve 30 yerine girmektir. Şimdi tekrar bakalım ve sonucu test edelim.

Gördüğümüz üzere artık net bir sonucumuz var. Tabii ki round() fonksiyonu her zaman istediğimiz işi görmeyebilir. Ancak bu gibi durumlarda verdiğimiz sayının kesinliğini göz önüne katmamız ya da daha önce defalarca üzerinde durduğumuz format niteliğini kullanmamız gerekebilir.

Kontrol yapılarına(if ve yardımcılarına) bu yazıda girmeden, daha sonra devam etmek üzere burada 1 ve 0’lardan oluşan sonuçlarımızda bırakalım. Şimdi bu yazıda başlıkta da belirttiğimiz gibi esas işimiz olan döngülere girelim.

En başta da söylediğim gibi, döngüler yapacağımız bir işi otomatikleştirmeye yarıyor. Yani kullanıcıdan adet sayı alacaksak, bir işlemi onlarca kez yapacaksak, bir serinin toplamlarını hesaplayacaksak, bir işi istediğimiz sayıda yaptıracak ve dilediğimiz bir durumda yapılmasını durdurmak isteyeceksek kullanımları ideal olacak. Bunlar şu anlık kapalı ifadeler gibi gözükebilir. Ancak Taylor serisi ile trigonometrik fonksiyonlara veya exp fonksiyonuna yaklaşım yapmaya çalıştığımızda(bir sonraki yazı bunların uygulamasını içerecek) oldukça işe yaradığını göreceksiniz. Ayrıca bir sonraki yazıda kullanıcıdan veri almayı da göreceğiz.

Döngüleri isterseniz bir uygulama üzerinden görelim. 1’den ‘e kadar olan sayıların toplamını bulmak istediğimizi varsayalım. Matlab’da bu iş için de hazır bir fonksiyon bulunmakla birlikte(sum([1,2,….,])) bu işlemi birkaç satır kodla kendimiz de yapabiliriz.  Öncelikle, toplamımızı tutacak değişkenimizin adı toplam olsun. Bu değişkenimizin aralığında hiçbir sayı eklenmemiş haline 0 değerini veriyoruz. Yani henüz toplama işlemi yapılmadığı için, başlangıç değeri 0 olacak. Daha sonra ise arasındaki sayıları sırayla buna ekliyoruz. En son elde ettiğimiz toplam n(n+1)/2 ile basitçe hesaplayabileceğimiz olacak. Şimdi bunu aşama aşama yapalım.

Matlab ortamında, birçok programlama dilinde olduğu gibi 2 tane döngü yer alır. Bunlar fo****r ve while döngüleri. Çoğu zaman bu döngüler birbirinin işlerini oldukça iyi bir şekilde yaparlar. Biz bu uygulamayı 2 döngü ile de ayrı ayrı yapacağız. Öncelikle for döngüsüyle başlayalım. Her iki döngünün de bitişini Matlab’a end; ifadesini yazarak belirtiriz. Şimdi kodları yazalım ve daha sonra açıklamaya devam edelim.

Çıktısı ise:

Şimdi kodumuzu açıklamaya geçelim.  İlk satırda, neden toplam = 0; ifadesini kullandığımızı biraz önce belirtmiştik. Hemen ardından döngü yapımız başladı. for döngüsünün kaç kere döneceğini döngüyü başlattığımız satırda belirtebiliyoruz. Bu döngünün yaptığı şey, eklenecek isimli değişkene sırasıyla 1 ile arasındaki değerleri vererek, alttaki kodları end; ifadesini görene kadar işlemek oldu. Yani biraz daha anlaşılır şekliyle, önce eklenecek isimli değişkene 1 değeri verildi. Daha sonra toplam = toplam + eklenecek ifadesinde, toplam = 0+1; işlemi yapıldı. Buradaki eşitliğe takılmış olabilirsiniz. Onu da şöyle açıklayalım. Programlamada = ifadesi eşitliği belirtmez, oatama operatörüdür. Yaptığı iş sağ tarafında bulunan değeri sol tarafına aktarmaktır. Yani x = x+1 dersek, x in önceki değerini alır, 1 ekler ve soldaki değişkene atar, buradaki değişken yine x olduğu için eski x değerinin üzerine yazılır. Bu konuda birkaç basit örnek yaparak mantığını anlayabilirsiniz. Şimdi anlatmaya devam edelim. İlk dönmede toplam = 0+1’den toplam = 1 oldu. Daha sonra end ifadesini gören döngü başa sardı ve bu defa eklenecek isimli değişkene 2 değerini verdi. Daha sonra, toplam = toplam + eklenecek satırında toplam = 1+2 işlenmiş oldu ve toplamın değeri artık 3 oldu. Bu işlem eklenecek = olana kadar devam etti ve en son elde edilen toplam oldu. Bu konuda sorunuz olursa sorabilirsiniz.

Şimdi aynı işlemi while döngüsü kullanarak yapalım. While döngüsünü başlatırken ona bir koşul veriyoruz. Bu koşul sağlandığı sürece while döngüsü çalışmaya devam ediyor. Yani mesela, x isimli bir değişkenin değerinin 3 ten küçük olduğu müddetçe döngünün dönmesini sağlar. x =3 veya x>3(mesela 5) olduğunda ise döngü sonlanır. x’in değerinin değişimi için de tıpkı for döngüsünde yaptığımız gibi ona bir sayı ekleme şansımız var. Şimdi while döngüsünün hesapladığımız bu toplam için nasıl kullanılabileceğini görelim.

Bunun çıktısı da aynı şekilde:

şeklinde olur. Burada yaptıklarımıza bakacak olursak, öncelikle eklenecek isimli değişkene ilk değerini biz atadık. Döngünün içerisinde de her seferinde değerini 1 artırma işlemini elle yaptık. Bu örnekte for döngüsüne göre daha zahmetli olsa da onda yapamayacağımız şeyleri yaptırdığına da şahit olabilirsiniz. Onun için bilmekte fayda var. Şimdi devam edelim, eklenecek değişkeninin ’den küçük olduğu müddetçe, yani en fazla olabilir, döngünün sürmesini istedik. Döngü esnasında da tıpkı for döngüsünde olduğu gibi eklenecek isimli değişkenin değerini toplam isimli değişkene atadık. Böylece aynı sonucu elde ettik.

Bu yazıda daha önce bu konularla uğraşmadıysanız size oldukça yabancı gelebilecek konuları ele aldık. Takıldıklarınızı buradan sorabilirsiniz.

nest...

çamaşır makinesi ses çıkarması topuz modelleri kapalı huawei hoparlör cızırtı hususi otomobil fiat doblo kurbağalıdere parkı ecele sitem melih gokcek jelibon 9 sınıf 2 dönem 2 yazılı almanca 150 rakı fiyatı 2020 parkour 2d en iyi uçlu kalem markası hangisi doğduğun gün ayın görüntüsü hey ram vasundhara das istanbul anadolu 20 icra dairesi iletişim silifke anamur otobüs grinin 50 tonu türkçe altyazılı bir peri masalı 6. bölüm izle sarayönü imsakiye hamile birinin ruyada bebek emzirdigini gormek eşkiya dünyaya hükümdar olmaz 29 bölüm atv emirgan sahili bordo bereli vs sat akbulut inşaat pendik satılık daire atlas park avm mağazalar bursa erenler hava durumu galleria avm kuaför bandırma edirne arası kaç km prof dr ali akyüz kimdir venom zehirli öfke türkçe dublaj izle 2018 indir a101 cafex kahve beyazlatıcı rize 3 asliye hukuk mahkemesi münazara hakkında bilgi 120 milyon doz diyanet mahrem açıklaması honda cr v modifiye aksesuarları ören örtur evleri iyi akşamlar elle abiye ayakkabı ekmek paparası nasıl yapılır tekirdağ çerkezköy 3 zırhlı tugay dört elle sarılmak anlamı sarayhan çiftehan otel bolu ocakbaşı iletişim kumaş ne ile yapışır başak kar maydonoz destesiyem mp3 indir eklips 3 in 1 fırça seti prof cüneyt özek istanbul kütahya yol güzergahı aski memnu soundtrack selçuk psikoloji taban puanları senfonilerle ilahiler adana mut otobüs gülben ergen hürrem rüyada sakız görmek diyanet pupui petek dinçöz mat ruj tenvin harfleri istanbul kocaeli haritası kolay starbucks kurabiyesi 10 sınıf polinom test pdf arçelik tezgah üstü su arıtma cihazı fiyatları şafi mezhebi cuma namazı nasıl kılınır ruhsal bozukluk için dua pvc iç kapı fiyatları işcep kartsız para çekme vga scart çevirici duyarsızlık sözleri samsung whatsapp konuşarak yazma palio şanzıman arızası