Emre S. Tasci emre.tasci@hacettepe.edu.tr
1. Soru:
a) $\begin{bmatrix} 1 & 2 & 3 & 4 & 5 \\6 & 7 & 8 & 9 & 10\\ 11 & 12 & 13 & 14 & 15 \\16 & 17 & 18 & 19 & 20\end{bmatrix}$ ile verilen A matrisini Octave'da nasıl tanımlarsınız?
A = [1:5; 6:10; 11:15; 16:20] % Güzel cevap
A = [1:5
6:10
11:15
16:20] % Eşdeğer güzellikte cevap
A = [1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20] % Bariz cevap
A = [];
for satir = 1:4
for sutun = 1:5
A(satir,sutun) = (satir-1)*5 + sutun;
endfor
endfor
A % İlginç cevap
A = reshape(1:20,5,4)' % Henüz görmediğiniz bir cevap ;)
b) Bu matrisin $\begin{array}{cc} 8 & 9 \\ 18 & 19 \end{array}$ 'luk kesimine karşılık gelen kısmını B matrisi olarak nasıl atarsınız?
B = A([2,4],3:4) % Güzel cevap
B = A([2,4],[3,4]) % Normal cevap
B = [A(2,3) A(2,4); A(4,3) A(4,4)] % Zorlama cevap
2. Soru
Aşağıdaki satırlar sırası ile girildiğinde, her bir satırdan sonraki çıktıyı yazınız:
m = 1:pi
[1:4].^2*2
a = 2;
% a = 5
b = a + 4
3. Soru
$-\pi\le\theta\le3\pi$ değer aralığında, en az 100 değer kullanarak $\sin{(\theta)}$ fonksiyonunun grafiğini çizdirin.
Bonus: $\sin{(\theta)}$ ile birlikte aynı grafikte $\cos{(\theta)}$ fonksiyonunu da çizdirin.
Bonusun bonusu: sin grafiğini sadece noktalı ve kırmızı; cos grafiğini ise kesikli çizgili ve mavi çizdirin.
%theta = -pi:0.125:3*pi; % Normal aralık tanımı
theta = linspace(-pi,3*pi,100); % Güzel aralık tanımı
sinler = sin(theta);
plot(theta,sinler)
koslar = cos(theta);
plot(theta,sinler,theta,koslar)
plot(theta,sinler,".r",theta,koslar,"--b")
4. Soru:
Aşağıdaki program çalıştığında ekrana neler yazılacaktır?
y = 0;
k = 2;
x = 19;
if(k<5)
while(x<20)
x = 30 - k.^2;
y = x + 2;
endwhile
else
y = 6;
endif
y
5. Soru:
[6, 30] (yani $6\le x\le30$) aralığındaki tam sayıları toplayan bir program yazın.
s = sum(6:30) % Güzel cevap
s = 0;
for x = 6:30
s = s + x;
endfor
s % Normal cevap
s = 6+7+8+9+10+11+12+13+14+15+16+17+18+19+20+21+22+23+24+25+...
26+27+28+29+30 % Korkunç cevap (!!!)
Bonus Soru:
$x_1 = 0$ ve $x_2 = 1$ ile başlayıp, sonraki elemanları $x_i = x_{i-2} + x_{i-1}$ şeklinde hesaplanan (0, 1, 1, 2, 3, 5, 8, 13, ...) sayı dizisine Fibonacci dizisi denmekte olup, doğada bu örüntü (pattern) sık sık karşımıza çıkar. İlk 100 Fibonacci sayısını hesaplayıp, onları fibonacci
adındaki bir listede toplayan bir program yazın.
fibonacci = [0 1];
for i=3:100
fibonacci(i) = fibonacci(i-2) + fibonacci(i-1);
endfor
fibonacci(1:10) % ilk 10 terim
fibonacci(98:100) % son 3 terim
İlerki derslerde fonksiyonları görünce, bu diziyi çok daha ince, güzel ve zarif bir yolla ("tekrarlı/rekürsif") hesaplamayı öğreneceğiz. ;)