Matlab’de Polinom Türevi ve Denklem Çözme

Bu yazıda sizlere Matematik’te sıklıkla karşımıza çıkan polinomların, türevlerinin ve denklem çözme problemlerinin Matlab’de nasıl hesaplandığından bahsedeceğim.

Polinom Türevi

Sabit katsayılı n. dereceden bir polinomun genel hali:

an xn + an-1 xn-1 + an-2 xn-2 + … + a1 x + a0 gibidir.

Bu polinomun türevi,

an n xn-1 + an-1 (n-1) xn-2 + an-2 (n-2) xn-3 + … + a1  şeklindedir.

Buna göre bir polinomun türevi alınabilir. Ancak bu türevi Matlab ile hesaplamak mümkündür. Bir polinomun Matlab’de türevini hesaplamak için polyder() fonksiyonu kullanılmalıdır. Bu fonksiyon içerisine polinomun katsayılarından oluşan satır vektörü yazıldığında sonuç olarak polinomun türevinin katsayılarından oluşan satır vektörü elde edilir. Örnek olarak P(x) = 5 x4 + 10 x3 + 3 x2 + x + 5 polinomunun türevini Matlab’de hesaplayalım.

INPUT:

>>p = [5 10 3 1 5]

OUTPUT:

p = 
    5    10     3     1     5

INPUT: 
  
>>polyder(p) 

OUTPUT: 
    ans =       2 >> % türev 20 x3 + 30 x2 + 6 x + 1 olarak elde edilir.
 

P(x) = 4 x2 + 5x + 3 ve P(x) = 5 x2 + 6 x + 5 iki polinomun çarpımının türevini Matlab’de hesaplayalım:

INPUT:

>>p1 = [4 5 0 3]


OUTPUT:

p1 = 
     4     5     0     3

INPUT: 
 >>p2 = [5 6 4] 

OUTPUT 

p2 = 

    5     6     4

INPUT: 
>>carpim = conv(p1,p2) 

OUTPUT: 

carpim =            20    49    46    35    18    12


INPUT: 
>>polyder(carpim)

OUTPUT: 
ans = 100 196 138 70 18 
>> %Polinomun türevi: 100 x4 + 196 x3 + 138 x2 + 70 x + 18

Parçalı Kesre Ayırma

Şimdi residue( ) fonksiyonundan bahsedelim. Bu fonksiyon tam kesir halinde verilen bir polinomu parçalı (basit) kesir şeklinde yazmamızı sağlıyor. A(x) ve B(x) iki polinom ise,

şeklindeki kesir ifadesini residue( ) fonksiyonu ile parçalı kesir halinde yazacağız. Öncelikle pay ve paydadaki polinomların katsayılarından oluşan satır vektörünü Matlab’de tanımlayalım.

b = [b1 b2 b3 b4 … bn]

b = [a1 a2 a3 a4 … an] şeklinde tanımlanır.

residue(b, a) fonksiyonunun kullanımı [r, p, k] = residue(b,a) gibidir. Burada r, n’inci parçalı kesrin payı, p, n’inci parçalı kesrin paydası ve k’da sabit terimdir. Böylece verilen tam kesrin parçalı hali aşağıdaki gibi olur:

Örnek olarak A(x)/B(x) = (x2 -2x+1)/ (x2 – 1) kesrini parçalı kesre ayıralım. Bu işlemi aşağıda görüldüğü gibi yapabiliriz:

INPUT:

>> b = [1 -2 1]

OUTPUT:

b =
    1    -2     1

INPUT: 
   >>a = [1 0 -1] 

OUTPUT: 
   a =     1     0    -1 

INPUT: 
>>[pay,payda,sabit] = residue(b,a) 


OUTPUT: 

 pay =        -2           0 
 
 payda =        -1         1 

 sabit =         1   

>> %Düzenlersek (-2/(x+1)) + (0/(x-1)) + 1 = (x-1)/(x+1) olarak bulunur.

 

 

Polinom ile ilgili daha fazla örnek çözümünü sonraki yazılarımızda paylaşmayı düşünüyorum. Şimdi ise Matlab’de birinci dereceden denklemlerin nasıl çözülebildiğine bakalım. Ancak denklem çözümüne geçmeden önce sizlere birkaç komuttan ve sembolik ifadeden bahsetmek istiyorum. Matlab’de integral, türev, limit ve denklem çözümü işlemleri hesaplarken sembolik nesnelere ihtiyacımız olur. Çünkü bu işlemlerde kullanacağımız fonksiyonlar sembolik nesneler ile çalışır. sym ve syms komutları bir değişkeni sembolik nesne yapmaya yarar. Örnek olarak: >> syms x; yazarsak, x değişkeni artık sembolik nesnedir.

pretty() ve simplify() Komutları

Aynı zamanda yaptığımız işlemlerin sonuçlarının daha anlaşılır ve sade olarak görülmesi için pretty() ve simplify( ) komutlarını kullanabiliriz. pretty( ) komutu, sembolik nesneden oluşan sonucun ekranda daha net olarak görünmesini sağlarken, simplify( ) komutu ise sonucu sadeleştirmek için kullanılır. Bu komutların kullanışlarını denklem çözümünde göstereceğim. Burada son olarak expand( ) ve factor( ) komutlarından bahsedeyim. expand( ) komutu, sembolik nesneden oluşan polinomların kuvvet açılımlarını yapmak içini factor( ) komutu ise kuvvet açılımı yapılmış polinomları eski haline dönüştürmek için kullanılır. Örnek olarak (x+1)9 ifadesinin kuvvet açılımını yapalım.

INPUT:

>>syms x;

>>kuvvet = (x+1)^9

OUTPUT:

kuvvet =
        (x + 1)^9 


INPUT:

>>expand(kuvvet)

OUTPUT:

ans =
      x^9 + 9x^8 + 36x^7 + 84x^6 + 126x^5 + 126x^4 + 84x^3 + 36x^2 + 9x + 1  

 

INPUT:

>>syms x;

>>acilim = x^9 + 9x^8 + 36x^7 + 84x^6 + 126x^5 + 126x^4 + 84x^3 + 36x^2 + 9x + 1

OUTPUT:

acilim =
 
         x^9 + 9x^8 + 36x^7 + 84x^6 + 126x^5 + 126x^4 + 84x^3 + 36x^2 + 9x + 1

INPUT:

>>factor(acilim)

OUTPUT:

ans =
 
      [ x + 1, x + 1, x + 1, x + 1, x + 1, x + 1, x + 1, x + 1, x + 1]

DENKLEM ÇÖZÜMÜ

solve() komutu: Verilen denklem ya da denklemlerin, sembolik nesnelerden yararlanarak köklerini bulan komuttur. Komut solve(BURAYA DENKLEM YAZILIR) şeklinde kullanılır. Öncelikle tek bilinmeyenli denklem örneklerine bakalım. Örnek olarak x2 – 6 x – 3 = sqrt(3 x – 5) denkleminin çözümünü solve komutunu kullanarak bulalım. Bu hesaplama işlemi için aşağıdaki işlemler yapılabilir:

INPUT:

>>syms x;

>>cozum = solve(x^2-6x-3-(3x-5)^(1/2));

>>cozum

OUTPUT:

cozum =
 
        7
>>

 

 

Bir başka örnek için e(x2 + 3 x) – 15 x = 0 denklemini Matlab’de çözelim. Bu ifadeyi Matlab’de aşağıda görüldüğü gibi çözebiliriz:

 

INPUT:

>>syms x;

>>cozum = solve(exp(x^2+3*x)-15);

>>cozum

OUTPUT:

cozum =
       (4log(15) + 9)^(1/2)/2 - 3/2,(4log(15) + 9)^(1/2)/2 - 3/2
>> 
 

İki ya da daha fazla bilinmeyenli denklemlerin çözümlerinde de aynı şekilde solve( ) komutu kullanılabilir. Bunun yanı sıra iki ya da daha fazla bilinmeyenli lineer denklemlerde solve( ) komutu kullanılmadan da çözüm bulmak mümkündür. Örnek olarak:

2x + 4y = 10

3x + 5y = 13 

lineer denklem sisteminin çözümünü bulalım.

Bunun için ilk olarak verilen denklemleri matris biçiminde yazalım. Bunu aşağıdaki gibi yazabiliriz:

[2 4 ; 3 5 ].[x ; y] = [10 ; 13]

Bu ifadede çarpma işlemi yapılırsa yukarıdaki denklem sistemi elde edilir. Eşitliğin iki tarafını soldan [2 4 ; 3 5]-1 ile çarpalım. Böylece,

[x ; y] = [2 4 ; 3 5]-1 . [10 ; 13] eşitliği elde edilir.

Eşitliğin sağ tarafındaki işlem yapıldığında bulmak istediğimiz x ve y değerlerine ulaşırız. Öncelikle Matlab’de eşitliğin sağ tarafında bulunan matrisleri tanımlayalım. Ardından [2 4; 3  5]  matrisinin tersiyle [10 ; 13] sütun vektörünü çarparak x ve y’yi elde edelim. Bu işlemin Matlab çıktısı aşağıdaki gibidir:

INPUT: 

>>A = [2 4;3 5];
>>A_tersi = inv(A)

OUTPUT:

A_tersi =
         -2.5000    2.0000
          1.5000   -1.0000

INPUT:

>>B = [10;13];
>>cozum = A_tersi*B

OUTPUT:

cozum =
              1.0000 2.0000 >>
 

Ancak bu denklem solve( ) komutu ile daha kolay bir şekilde çözülebilir. Aşağıda görüldüğü gibi çözüme ulaşılabiliriz:

INPUT:

>>syms x y;
>>[xc,yc] = solve(2x+4y-10,3x+5y-13)

OUTPUT:

xc =
 
    1

yc =
 
    2
>>
 

Başka bir yazıda Matlab’den bahsetmeye devam edeceğim.  

MTLB8E7953F7I2Q41W

 

Matlab’de Polinom Tanımlama,Toplama,Çarpma ve Bölme İşlemleri

Bu yazıda Matlab’de polinomların nasıl tanımlandığını ve polinomlar üzerindeki işlemlerden bahsedeceğim.

Polinom Tanımlama

Polinom, belirli sayıda bağımsız değişken ve sabit sayıdan oluşan ifadelerdir. Matematik’te karşımıza sıklıkla çıkan polinomların özellikle kökünü bulma, toplama, çarpma, polinom bölmesi, grafik çizdirme gibi işlemlerini Matlab’de gerçekleşleştirebiliriz. Bunları yapabilmek için ilk önce polinomu tanımlamamız gerekir. Farz edelim ki,

P(x) =a x5 + b x4 + c x3 + d x2 + e x + f

gibi bir polinom olsun. Bu polinomu Matlab’de bağımsız değişkenlerin azalan kuvvetlerine göre katsayılarından oluşan satır vektörü ile tanımlayabiliriz. Açıklamak gerekirse, p = [a  b  c  d  e  f] şeklinde tanımlanır. Örnek olarak: P1(x) = a x5 + b x3 +c x2 + f  gibi bir polinom olsun. Fakat bu polinom Matlab’e  p1= [a  b  c  f] diye tanımlarsak, Matlab’ın anlayacağı polinom  a x3 + b x2 +c x + f  polinomu olur. Çünkü Matlab’de azalan kuvvetlerin sırasıyla katsayıları yazılarak polinom tanımlanır. Bu tarz durumlarda olmayan kuvvetlerin katsayısına satır vektöründe 0 (sıfır) yazılmalıdır. Böylece Matlab, o kuvvetin polinom içinde olmadığını anlar. P(x) polinomu doğru bir şekilde tanımlamak için:

   p1= [a   0   b    c   0   f]  yazmalıyız.

Bir polinomu Matlab’e bu şekilde tanımlanır. Şimdi tanımladığımız bir polinomun kökünü nasıl bulacağımıza bakalım. Bunun için roots( ) komutu kullanılmalıdır. Örneğin P(x) =  x2 –  x + 6  polinomuna bakalım. Öncelikle bu polinomu Matlab’a tanımlayalım. p = [1  -1  6] olarak tanımlayabiliz. roots( ) komutu ile bu polinomun kökleri aşağıdaki gibi bulunur.

INPUT:

>> p = [1  -1  6] 

OUTPUT:
    
 p =
     1    -1     6 INPUT: >> roots(p) OUTPUT: ans = 0.5000 + 2.3979i 0.5000 - 2.3979i
 

 

Toplama

P1(x) = 6 x3 + 5 x2 + 10 x + 4 ve P2(x) = 6 x3 + 5 x2 + 10 x + 4 gibi iki polinomu Matlab’de toplamak isteyelim. Bunun için herhangi bir komut kullanmamıza gerek yok. Öncelikle polinomları Matlab’de tanımlayalım. Ardından “ + ” operatörünü kullanarak iki polinomu toplayalım.

INPUT:

>>p1 = [6  5 10 4]

OUTPUT:

p1 =
      6     5    10     4 INPUT: >>p2 = [4 5 6 7] OUTPUT: p2 =     4     5     6     7 INPUT: >> toplama = p1+p2 OUTPUT: toplama =          10    10    16    11 
 

Bu iki polinom toplandığında sonuç olarak P3(x) = 10 x3 + 10 x2 + 16 x + 11 polinomunu elde ederiz. Burada dikkat etmemiz gereken husus ise topladığımız iki ya da daha fazla polinomun boyutlarının eşit olmasıdır.

Çarpma

Matlab’de polinom çarpımı yapmak için conv( ) komutunu kullanabiliriz. conv() komutu katsayılardan oluşan iki satır vektörünü çarparak elde edilen polinomun katsayılarını verir.

Örnek olarak P1(x) = 4 x2 + 2 x + 2 ve P2(x) = 3 x2 + 5 x + 4 polinomlarını Matlab’de çarpalım.

INPUT:

>> p1 = [4 0 2 2]

OUTPUT:

p1 =
     4     0     2     2 INPUT: >> p2 = [3 5 2] OUTPUT: p2 =     3     5     2 INPUT: >> carpma = conv(p1,p2) OUTPUT: carpma = 12 20 14 16 14 4 %Elde edilen polinom %12x5+20x4+14x3+16x2+14x+4
 

 

Bölme

Polinomal bölme yapmak için deconv( ) komutunu kullanabiliriz. Bunun için aşağıdaki komutu kullanılabiliriz:

[bölüm,kalan] = deconv(bölünen,bölen)

Örnek olarak P1(x) = 3 x2 + 4 x + 2 ve P2(x) = 2 x + 1 polinomları olsun. Polinom bölmesi aşağıda görüldüğü gibi yapılabilir:

INPUT:

>> p1 = [3 4 2]

OUTPUT:

p1 =
     3     4     2 INPUT: >> p2 = [2 1] OUTPUT: p2 =     2     1 INPUT: >> [bolum,kalan] = deconv(p1,p2) OUTPUT: bolum =         1.5000    1.2500 kalan =         0         0    0.7500
 

Bir polinomun köklerini hesaplamak için roots( ) komutunu kullanıyorduk. Bunun tersi olarakta kökleri verilen bir polinomun kendisinide bulabiliriz. Bunu yapabilmek için poly( ) komutunu kullanmamız gerekir. Katsayılarını bulmak istediğimiz polinomun köklerini satır vektörü olarak tanımlamalıyız. Bu satır vektörünü poly( ) fonksiyonuna girdiğimizde aradığımız polinomun katsayılarını elde etmiş oluruz. Örnek olarak -1 ve 1 köküne sahip polinomu elde etmeye çalışalım. Bu işlem aşağıdaki gibi olur:

INPUT:

>>kokler = [-1 1]

OUTPUT:

kokler =
         -1     1 INPUT: >>poly(kokler) OUTPUT: ans =      1     0    -1 %bulunan polinom x2 - 1 polinomu olur.
 

Değer Hesaplama

Bir polinomun içerisine bir değer (x=5 gibi) yazarak hesaplamayı biliyoruz. Fakat bu işlemi Matlab’de yapmak için polyval( ) komutunu kullanmamız gerekir. polyval( ) fonksiyonu ile elemanları verilen bir polinomun sonucunu hesaplayabiliriz. Örnek olarak x=2 için P(x) = x3 + 3 x2 + 6 x + 1 polinomunun sonucunu Matlab’de hesaplayalım. Bu hesaplama işlemi için aşağıdaki işlemler yapılabilir:

INPUT:

>> p = [3 6 1]

OUTPUT:

p =
    3     6     1 INPUT: >> polyval(p,2) OUTPUT: ans =      25
 

Bir sonraki yazıda sizlere Matlab’de polinomların türevlerinin hesaplanmasından ve denklem çözümünden bahsedeceğim.

MTLB9965Q9972BE5Z8

 

Matlab’de Matris İşlemleri

Önceki yazıda sizlere Matlab’de vektörün nasıl tanımlandığından ve vektör üzerinde kullanabileceğiniz birkaç komuttan bahsetmiştim. Bu yazıda ise matrisin nasıl tanımlandığından ve matris üzerinde kullanabileceğiniz birkaç komuttan bahsedeceğim.

Matris Tanımlama

Matlab’de matris [a b c; d e f ; g h j] şeklinde tanımlanır. Matrisin satırlarını ayırmak için “(;), Noktalı virgül” kullanılır. Burada örnek olarak 3×3’lük bir matris tanımladım ama siz ihtiyacınız olan boyutta, matrisi yine bu şekilde tanımlayabilirsiniz.

 A = [1 2 3 ; 4 5 6 ; 7 8 9] biçiminde 3×3’lük bir matris tanımlayalım. Matrisin içerisinden herhangi bir elemana A(satır numarası, sütun numarası) şeklinde ulaşılır. Burada ise A matrisinin içerisinden 5 elemanına A(2,2) yazarak ulaşılabilir. Matris içerisindeki birden fazla elemana ulaşmak da mümkündür. Örnek olarak A(2, 2:3) yazarak çıktı olarak 2. satırın 2. ve 3. sütunlarının elemanları olan [5 6] değerlerini elde ederiz.

>> A = [1 2 3; 4 5 6; 7 8 9]

A = 

    1  2  3
    4  5  6
    7  8  9

>> A(2,2)

ans =

     5

>> A(2,2:3)

ans =
 
     5  6
 

Matrislere Sütun ya da Satır Ekleyip-Çıkarma

Tanımlanılan bir matrisi ihtiyaç duyulduğu taktirde sütun ya da satır şeklinde elemanlar ekleyip çıkarabiliriz. A matrisine x sütunu eklenmek isteniyorsa, [A, x] yazılabilir. Eğer ki y satırı eklenmek isteniyorsa [A; y] yazılması yeterlidir. Örnek olsun diye A matrisi tanımlamıştık. Bu A matrisine x = [10; 11; 12] vektörünü eklemek istersek, [A, x] yazarız. Bir başka vektör olan y = [13 14 15] vektörünü eklemek istersek, [A; y] yazarız.

INPUT:
  >>A = [1 2 3; 4 5 6; 7 8 9]  

OUTPUT:
  A =    1  2  3    4  5  6    7  8  9   

INPUT:
  >>x = [10; 11; 12]  

OUTPUT:
  x =    10    11    12  
 
INPUT:
  >>[A, x] 

OUTPUT:
ans =      1   2   3   10      4   5   6   11      7   8   9  12  
 
INPUT:
  >>A = [1 2 3; 4 5 6; 7 8 9] 

OUTPUT:
   A =    1  2  3    4  5  6    7  8  9 

INPUT:
  >>y = [13; 14; 15]

OUTPUT:
   x =    13 14 15 

INPUT:
  >>[A, y] 

OUTPUT:
 ans =      1   2   3      4   5   6      7   8   9 13 14 15  
  

Matrisin içerisinden satır ya da sütun silinmek isteniyorsa, A(satır numarası, : ) =[ ] veya A(:, sütun numarası) = [ ] yazılabilir. Burada dikkat edilmesi gereken detay ise matrisin tek bir elemanın silinememesidir. Bunun sebebi ise boyut uyumsuzluğunun ortaya çıkmasıdır. Ancak burada matrisin bir elemanını değiştirmek mümkündür. Örnek ile göstermek gerekirse, A[3,2] = 5 yazarsak yeni matrisimiz aşağıdaki gibi olur.

INPUT:
  >> A = [1 2 3; 4 5 6; 7 8 9]  

OUTPUT:
   A =    1   2   3    4   5   6    7   8   9  

INPUT: 
  >> A(1, :) =[ ]  %satır silme   

OUTPUT:
   A = 4 5 6  7 8 9

INPUT:
  >> A(:, 1) =[ ] %sütun silme 

OUTPUT:
   A = 5 6 8 9

INPUT:
  >> A(2,2) = 3 %değer değiştirme 

OUTPUT:
   A = 5 6 8 3
 

Matrisi Yeniden Boyutlandırma

Matlab’de matrislerle işlemler gerçekleştirilirken, matrisin boyutu işlemlerimize uygun olmayabilir ya da herhangi bir sorun olmamasına rağmen matrisin boyutunu değiştirip işlem yapmak isteyebilirsiniz. Bu durumda reshape() komutu kullanılır.

Örnek olarak B = [1 2; 2 5 ; 7 6] şeklinde (3×2)’lik bir matris tanımlansın. B matrisini (2×3) boyutuna getirmek için C = reshape(B, [2 , 3]) yazılması yeterlidir.

>> B = [1  2 ;  2  5 ; 7  6]

B =

   1   2
   2   5
   7   6

>> C = reshape (B,[2,3])

C =

   1   7   5
   2   2   6
 

Matrislerde Temel Bazı Kodlar

zeros komutu: zeros(m,n) şeklinde kullanılır. mxn’lik sıfır matrisi oluşturmaya yarar.

>> zeros(3,3)

ans =

     0   0   0
     0   0   0
     0   0   0

ones komutu: ones(m,n) şeklinde kullanılır. mxn’lik birlerden oluşan bir matris verir.

>> ones(3,4)

ans =

     1   1   1   1
     1   1   1   1
     1   1   1   1

eye komutu: eye(m,n) şeklinde kullanılır. mxn’lik birim matris oluşturur.‏‏‏‏‏

>> eye(3,3)

ans =

     1   0   0
     0   1   0
     0   0   1

rand komutu: rand(m,n), mxn’lik elemanları 0-1 arasında olan bir matris oluşturur. Elemanlar rastgele seçilir.

>> rand(4,4)

ans =

     0.8147   0.6324   0.9575   0.9572
     0.9058   0.0975   0.9649   0.4854
     0.1270   0.2785   0.1576   0.8003
     0.9134   0.5469   0.9706   0.1419

diag komutu: diag(A), köşegeni A matrisinin köşelerinden oluşan diagonal bir matris üretir.

>> A = [1 2 3; 4 5 6; 7 8 9]

A =

   1   2   3
   4   5   6
   7   8   9

>> diag(A)

ans =

     1
     5
     9

det komutu: Bir matrisin determinantını hesaplamak için kullanılır.

>> det(A)
%aynı matris için
ans =

     6.6613e-16

rank komutu: Matrisin derecesini(rank) hesaplamak için kullanılır.

>> rank(A)
ans =
     2

find komutu: Sıfır olmayan elemanların indeks numaralarını verir.

>> find(A)

ans =

     1
     2
     3
     4
     5
     6
     7
     8
     9

trace komutu: Matrisin köşe elemanlarının toplamını hesaplar.

>> trace(A)

ans =

     15

Önceki bölümde belirtilen komutlar matrislerde de kullanılabilir. Bu komutların kullanımları yukarıdaki komutların kullanımlarına benzerdir.

Buraya tıklayarak önceki yazı olan Matlab’de dört işlem ve temel fonksiyonlar yazısına gidebilirsiniz.

MTLB9XB739DUJU9147