10
Karmaşık Sayılar
√
Matematik derslerinden bilindiği gibi a ile b iki gerçel (real) sayı ve i = −1
olmak üzere z= a +bi sayısı karmaşık (complex) bir sayıdır. (Bazı yerde
i yerine j yazılır.) i sayısı sanal sayı birimidir. bi sayısı sanal birimin b
katı olan sanal bir sayıdır. Karmaşık sayılar bilimsel hesaplamalarda çok
kullanılır. O nedenle, Ruby, onları ayrı bir veri tipi olarak ele alır. Gerçel
(real) bir b sayısının sonuna i konulursa, Ruby onu, matematikte olsuğu
gibi sanal bir sayı olarak algılar. a + bi sayısını ise bir complex sayı nesnesi
olarak algılar. Ruby’de complex sayılarla, matematikte yapılabilen bütün
işlemler yapılabilir.
10.1
Karmaşık Sayı Yaratma
Ruby’de Complex nesnesi yaratmak için Complex, ::rect ya da to_c metodu kullanılabilir.
Liste 10.1.
Complex ( 7 )
Complex ( 5 , 3 )
Complex . p o l a r ( 5 , 3 )
7 . to_c
#
#
#
#
=>
=>
=>
=>
(7+0 i )
(5+3 i )
( −4.949962483002227+0.7056000402993361 i )
(7+0 i )
Kesirli sayılardan da complex nesnesi yaratılabilir:
Liste 10.2.
112
1
6
BÖLÜM 10. KARMAŞIK SAYILAR
Complex ( 0 . 8 )
Complex ( ’ 0 . 5 − 0 . 4 i ’ )
Complex ( ’ [email protected] ’ )
# => (0 .8 +0 i )
# => ( 0 . 5 − 0 . 3 4 ( 3 / 4 ) ∗ i )
# => ( −1.960930862590836 −2.2704074859237844 i )
0 . 3 . to_c
’ 0 . 3 − 0 . 8 i ’ . to_c
’ 2/3+3/4 i ’ . to_c
’ [email protected] ’ . to_c
#
#
#
#
=>
=>
=>
=>
(0 .3 +0 i )
(0.3 −0.8 i )
( ( 2 / 3 ) +(3/4) ∗ i )
( −1.960930862590836 −2.2704074859237844 i )
Liste 10.3, karmaşık 5 + 3i sayısını yaratır.
Liste 10.3.
2
a=Complex ( 4 , 6 )
puts ( a )
# => 4 + 6 i
# => 4 + 6 i => n i l
Gerçel ve Sanal Kısımlar
Liste 10.1, karmaşık sayıların gerçel, sanal kısımlarını ve eşleniklerini buluyor.
Liste 10.4.
3
a=Complex ( 2 , 9 )
puts ( a . r e a l )
p u t s ( a . imag )
puts ( a . conj )
#
#
#
#
=>
=>
=>
=>
2 + 9i
=> n i l
2
=> n i l
9
=> n i l
2 − 9 i => n i l
Dört İşlem
Liste 10.5, karmaşık sayılarda toplama, çıkarma , çarpma ve bölme işlemlerini yapıyor.
Liste 10.5.
1
6
a=Complex ( 5 , 3 )
b=Complex ( −4 ,7)
p u t s ( a+b )
p u t s ( a−b )
p u t s ( a ∗b )
p u t s ( a /b )
Liste 10.6.
#
#
#
#
#
#
=> 5 + 3 i
=> −4 + 7 i
=> 1 +10 i
=> 9 − 4 i
=> −41 + 23 i
=> 1/65 − 47/65 i
10.1. KARMAŞIK SAYI YARATMA
113
# −∗− c o d i n g : u t f −8 −∗−
# ruby
4
# Karmaşık s a y ı n ı n büyüklüğü : S q r t [ i ^2 + j ^ 2 ]
p Complex ( 3 , 4 ) . abs
# ? 5.0
# Karmaşık s a y l a r d a toplama i ş l e m i v e k t ö r toplama i ş l e m i g i b i d i r :
p Complex ( 2 , 3 ) + Complex ( 4 , 5 )
# ? (6+8 i )
9
# Karmaşık s a y ı l a r d a çarpma
p Complex ( 1 , 0 ) ∗ Complex ( 0 , 1 )
14
# S a y ı l ( s k a l a r ) çarpım
p Complex ( 3 , 4 ) ∗ 2
# ? (0+1 i )
# ? (6+8 j )
# Karmaşık s a y ı y a e k l e n e n g e r ç e l sa y onu g e r ç e l k ı s m ı n a e k l e n i r :
p Complex ( 3 , 4 ) + 1
# ? (4+4 i )
Liste 10.7.
# −∗− c o d i n g : u t f −8 −∗−
# ruby
3
z1 = Complex ( 0 , 1 )
#Uzunluk ( büyüklük ) :
p z1 . abs
# ? 1.0
# Açı ( radyan ) :
p z1 . a n g l e
# ? 1.5707963267948966
8
13
# Kutupsal K o o r d i n a t l a r ( uzunluk ve a ç ı ) :
p z1 . p o l a r
# ? [1 , 1.5707963267948966]
# Kutupsal ’ dan d i k e y k o o r d i n a t l a r a . G i r d i ( uzunluk , a ç ı ( radyan ) )
Ç ı k t ı : ka r ma ş ık s a y ı
p Complex . p o l a r ( 1 , Math : : PI )
# ? ( −1.0+1.2246467991473532 e −16 i )
r e a l l y i s j u s t (−1+0 i )
18
# S a b i t PI :
p Math : : PI
# Sabit e :
p Math : : E
# ? 3.141592653589793
# ? 2.718281828459045
Üstel
Liste 10.8, karmaşık sayılarda üs alma (exponentiation) işlemlerini yapıyor.
Liste 10.8.
3
i=Complex ( 0 , 1 )
puts ( i ∗∗2)
p u t s ( i ∗∗ i )
# => 0 + 1 i
# => −1 + 0 i
# => 0 . 2 0 7 8 7 9 5 7 6 3 5 0 7 6 1 9 3 + 0 . 0 i
114
BÖLÜM 10. KARMAŞIK SAYILAR
Karmaşık Üs
Ruby’de i ∗ ∗2 = i2 = −1 + 0i olur. Oysa, matematikte yalın biçimde −1
yazarız. ii gerçel sayıdır. Kuvvet alırken üst sanal sayı olabilir.
Eşlenik Kökler
Matematikte, üst olarak 0.5 alındığında; yani bir karmaşık sayısının karekökü istendiğinde, birbirlerine eşlenik olan iki kök olduğunu biliyoruz.Örneğin,
7 + 24i nin kare kökleri 4 + 3i ile 4 − 3i dir. Ruby bu köklerden ilkini seçer.
Liste 10.9, karmaşık sayıların kare köklerinin bulunuşunu gösteriyor.
Liste 10.9.
2
p u t s (( −1) ∗ ∗ 0 . 5 )
p u t s ( Complex ( −1 ,0) ∗ ∗ 0 . 5 )
p u t s ( −1) ∗ ∗ ( 1 / 2 . 0 )
# => 6 . 1 2 3 2 3 3 9 9 5 7 3 6 7 6 6 e −17+1.0 i
# => 6 . 1 2 3 2 3 3 9 9 5 7 3 6 7 6 6 e −17+1.0 i
# => 6 . 1 2 3 2 3 3 9 9 5 7 3 6 7 6 6 e −17+1.0 i
Matris işlemleri
Ruby matris işlemlerini yapabilir. Onun için matrix module’nü çağırmak
gerekir. Bir modül çağırmak için require anahtar sözcüğü kullnılır (bkz.
17).
Liste 10.10.
2
7
r e q u i r e ’ m a t r i x . rb ’
a = Matrix [ [ 3 , 2 , 3 ] , [ 5 , 9 , 8 ] ]
b = Matrix [ [ 4 , 7 ] , [ 9 , 3 ] , [ 8 , 1 ] ]
1]]
c = a ∗ b
a . row_size
a . co lu mn _size
c . det
a . transpose
=> Matrix [ [ 3 , 5 ] , [ 2 , 9 ] , [ 3 , 8 ] ]
# => t r u e
# => Matrix [ [ 3 , 2 , 3 ] , [ 5 , 9 , 8 ] ]
# => Matrix [ [ 4 , 7 ] , [ 9 , 3 ] , [ 8 ,
#
#
#
#
#
=>
=>
=>
=>
Matrix [ [ 5 4 , 3 0 ] , [ 1 6 5 , 7 0 ] ]
2
3
−1170
Geometriye Uygulama
Geometri bilimsel uygulamalarda karmaşık sayıların kutupsal (polar) biçimleri çok kullanılır. Bu tür uygulamalarda argument ve modulus terimleri
önem taşır.
Liste 10.11, karmaşık sayılarda salt değer, argument ve modulus değerlerinin bulunuşunu gösteriyor.
10.2. ALIŞTIRMALAR
115
Liste 10.11.
1
a=Complex ( 1 , 3 )
p u t s ( a . abs )
puts ( a . arg )
puts ( a . polar )
#
#
#
#
=>
=>
=>
=>
(1+3 i )
3 . 1 6 2 2 7 7 6 6 0 1 6 8 3 7 9 5 => n i l
1 . 2 4 9 0 4 5 7 7 2 3 9 8 2 5 4 4 => n i l
3 . 1 6 2 2 7 7 6 6 0 1 6 8 3 7 9 5 1 . 2 4 9 0 4 5 7 7 2 3 9 8 2 5 4 4 => n i l
Burada polar ifadesinin abs ile argumet’ten oluştuğuna dikkat ediniz. Bu
ikisi karmaşık sayının kutupsal koordinattaki konumunu belirliyor. abs sayının kutup noktasından (başlangıç) uzaklığı, argumet ise sayıyı kutba birleştiren vektörün yatay eksenle pozitif yönde yaptığı açının radyan cinsinden
değeridir.
10.2
Alıştırmalar
Liste 10.12.
1
# −∗− c o d i n g : u t f −8 −∗−
# ruby
# z complex s a y ı :
z = Complex ( 2 , 3 )
6
# z ’ y i yaz
p z # => (2+3 i )
11
# z y i kutupsal biçime dönüştür :
z . p o l a r => [ 3 . 6 0 5 5 5 1 2 7 5 4 6 3 9 8 9 , 0 . 9 8 2 7 9 3 7 2 3 2 4 7 3 2 9 ]
# Kutupsal b i ç i m d e b i r ka r ma şı k s a y ı y a r a t ( uzunluk , radyan c i n s i n d e n
açı ) :
z = Complex . p o l a r ( 1 , Math : : PI ) # => ( −1.0+1.2246063538223773 e −16 i )
p z # => ( −1.0+1.2246063538223773 e −16 i )
16
p z . real
p z . imag
# => −1.0
# => => 1 . 2 2 4 6 0 6 3 5 3 8 2 2 3 7 7 3 e −16
Liste 10.13.
2
7
# −∗− c o d i n g : u t f −8 −∗−
# ruby
# uzunluk :
p Complex ( 3 , 4 ) . abs
# =>5.0
# Toplama :
p Complex ( 2 , 3 ) + Complex ( 4 , 5 )
# =>(6+8 i )
# Çarpma :
p Complex ( 1 , 0 ) ∗ Complex ( 0 , 1 )
# =>(0+1 i )
116
BÖLÜM 10. KARMAŞIK SAYILAR
12
17
# S a y ı l ( s k a l e r ) çarpım
p Complex ( 3 , 4 ) ∗ 2
# =>(6+8 j )
# S a y ı l ekleme :
p Complex ( 3 , 4 ) + 1
# =>(4+4 i )
Liste 10.14.
2
# −∗− c o d i n g : u t f −8 −∗−
# ruby
z1 = Complex ( 0 , 1 )
7
12
# uzunluk :
p z1 . abs
# =>1.0
# Radyan c i n s i n d e n a ç ı :
p z1 . a n g l e
# => 1 . 5 7 0 7 9 6 3 2 6 7 9 4 8 9 6 6
# Kutupsal k o o r d i n a t l a r ( uzunluk ve a ç ı ’ dan o l u ş a n a r r a y : [ l e n g t h ,
angle ] ) :
p z1 . p o l a r
# => [ 1 , 1 . 5 7 0 7 9 6 3 2 6 7 9 4 8 9 6 6 ]
# Kutupsal b i ç i m d e ka r ma ş ık s a y ı y a r a t ( g i r d i : ( uzunluk , radyan
cinsindn açı ) , Çıktı :
p Complex . p o l a r ( 1 , Math : : PI )
# => ( −1.0+1.2246467991473532 e −16 i )
$ \ e q u i v (−1+0 i ) $
17
22
# sabt ?
p Math : : PI
# => 3 . 1 4 1 5 9 2 6 5 3 5 8 9 7 9 3
# sabit e
p Math : : E
# ? 2.718281828459045
Liste 10.15.
3
r e q u i r e ’ complex . rb ’
r e q u i r e ’ r a t i o n a l . rb ’
a = Complex ( 3 , 5 )
b = Complex ( 2 , −2)
p u t s " c = #{a ∗b} "
c = a ∗ b
d = 3 + 4∗ Complex : : I
#
#
#
#
#
#
#
=>
=>
=>
=>
=>
=>
=>
true
true
(3+5 i )
(2−2 i )
c = 16+4 i => n i l
(16+4 i )
(3+4 i )
Kaynak: http://www.ruby-doc.org/core-2.1.2/Numeric.html
Download

Karmaşık Sayılar 10.1 Karmaşık Sayı Yaratma