24 Kasım 2007 Cumartesi

Apt-get sorunu çözülmüştür=))


Sarhoş kafayla yine ortalığı dağıtıyorum:P birkaç gündür sudo apt-get install hede dediğim halde kurulumları yapamıyor ancak paket yöneticisiyle işleri hallediyordum.

badis@badis-laptop:~$ sudo apt-get install slime
[sudo] password for badis:
E: Could not get lock /var/lib/dpkg/lock - open (11 Resource temporarily unavailable)
E: Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?
bu tarz bir çıktı alıyordum. kolları sıvadım içkinin verdiği cesaretle gksu nautilus güçleriyel donanıp /var/lib/dpdk dizinine geldim lockta hiçbirşey yazmıyordu sadece lock diye boş bir dosyaydı. hemen çöpe attım ve denedim. müthiş bir hazdı. evet teşekkür ederim linus amca=)

22 Kasım 2007 Perşembe

GNU Octave Manual




2006 yılında çıkarılan baskısına burdan erişebilirsiniz

18 Kasım 2007 Pazar

Vim'le janjanlı kod yazma hedesi


öhüm 4 günde 9 vizeye girdim kafamda hasar oluştu galiba yaklaşık 100 formül ve 400'e yakın kavramı 15-20 saat gibi kısa bir sürede ezberleyip son derece yüksek seviyede matematik maymunluklarıyla uygulamasını aşkı meşk eyleyip sınavları kendimce başarılı olarak atlatabilmenin haklı ve salak gururunu yaşıyorum sayın olmayan okuyucularım. extremeye baktım paso ubuntu sexy den geliyorlar benim bilmediğim ubuntu adında bi porno yıldızı felan mı var merak etmeye başladım:P

ve gelelüüm günün menüsüne:

vim unix tabanlı sistemlerin sanırım hepsinde olan günün birinde lazım olursa diye Robin Burk'ün UNIX kitabında koca bir bölümünü ona ayırdığı belgeler.org da çok güzel bir giriş klavuzu bulabileceğiniz emacs ile kapıştığı rivayet edilen emacsı beceremeyen ben insanının lanet olsun emacsına da şu çok zeki rmssine de diyip seçtiği gpl lisansına sahip güzel bir editördür.

hemen sitesinden araklıyalım:

What Is Vim?

Vim is a highly configurable text editor built to enable efficient text editing. It is an improved version of the vi editor distributed with most UNIX systems.

Vim is often called a "programmer's editor," and so useful for programming that many consider it an entire IDE. It's not just for programmers, though. Vim is perfect for all kinds of text editing, from composing email to editing configuration files.

What Vim Is Not?

Vim isn't an editor designed to hold its users' hands. It is a tool, the use of which must be learned.

Vim isn't a word processor. Although it can display text with various forms of highlighting and formatting, it isn't there to provide WYSIWYG editing of typeset documents. (It is great for editing TeX, though.)


kaynak: http://www.vim.org/about.php

sitesinden indirip kullanabilirsiniz. linux dağıtımı kullanıyorsanız zaten hazır olarak gelicektir.



bu vim hedesinin içinde :syntax on dedik mi her yer renkleniyor işte syntaxa göre renklendirme yapılıyor.

eğer kodu yazarken boşlukları kendisi versin derseniz

:set cindent

:set sw=4

burda girinti sayısını 4e ayarladık. ama eğer bunları her defasında yapçam mı ben derseniz ubuntudakiler için anlatayım diğer linux kullanıcılarında da buna benzerdir. etcnin içinde vim, vimin içinde de vimrc diye bir dosya var bunda değişiklik yapmamız gerekiyor. ancak root değilken gücümüz bu dosyayı değiştirmeye yetmiyor.


uçbiride :~$ gksu nautilus diyip GÖLGÖLERİN GÜCÜ ADINA GÜÇ BENDE ARTIK ROOHAAAAN diye bağırıp etc/vim/vimrc ye on penguen tıklama gücüyle ulaşıyoruz. oranın sonuna


autocmd BufRead,BufNewFile *.py syntax on
autocmd BufRead,BufNewFile *.py set ai
autocmd BufRead,BufNewFile *.cpp syntax on
autocmd BufRead,BufNewFile *.cpp set ai
autocmd BufRead,BufNewFile *.c syntax on
autocmd BufRead,BufNewFile *.c set ai

autocmd BufRead,BufNewFile *.py set cindent
autocmd BufRead,BufNewFile *.py set sw=4
autocmd BufRead,BufNewFile *.cpp set cindent
autocmd BufRead,BufNewFile *.cpp set sw=4
autocmd BufRead,BufNewFile *.c set cindent
autocmd BufRead,BufNewFile *.c set sw=4



ekleyip olayı kökünden çözüyoruz.



dip not:

autocmd BufRead,BufNewFile *.py syntax on
autocmd BufRead,BufNewFile *.py set ai

kısmını pyton.orgdan çaldım gerisini kendim uydurdum. bi sorun çıkarsa affola:P



günün konusunu resimsiz bırakmak olmaz:



4 Kasım 2007 Pazar

Gecenin bi yarısı insanı kızdırıyorlar..



Şu herşeyi ben bilirimci devlet mantığı ne güçlü ne yenilemez şeymiş arkadaş, gecenin bi yarısı www.wordpress.com 'un hala sansürlü olduğunu görmek.. bu kadar saçma bir uygulamaya birilerinin çıkıp manyak mısınız ne yapıyorsunuz burda diyemeyişi çok acı..

MSN HACK SİTE ÖRNEĞİ

_____________________________________________________________________________________


Yine msn hack olayı. çok saçma geliyor başkasının mailini alınca ne yapar ki insanlar tam mallık. diğer hack vakaları gibi bu da aptalca insan nasıl çalışıyor diye merak etmeli ehue nası kırdım hazır betiklerle diye sevinmemeli. bu sitemizin adı da blockdelete dat com çoklu dil seçeneği bile var:P
ahanda görüntüsü yanda..

olan xyz arkadaşımın msne oldu. gpl lisanslı amsn kullansa zaten engelleyenler görünüyor bende diye düşünüp şifresini yazmazdı. ne varsa GNU da var arkadaş=) Aralık ayında EMO'da Matlab semineri verecektim biraz araştırdım ubuntuyu ilk kurduğumda beceremediğim gnu octave'ın kullanılırlığını inceliyorum şu sıralar. Tabi seminer verebilmek için manuelini baya bi incelemek lazım..

amsn detaylı bilgi için: http://tr.pardus-wiki.org/Amsn

27 Ekim 2007 Cumartesi

Unsolved Problems in Mathematical Systems and Control Theory

Unsolved Problems in Mathematical Systems and Control Theory

Unsolved Problems in Mathematical Systems and Control Theory

Edited by Vincent D. Blondel and Alexandre Megretski

Feedback Control Theory

Feedback Control Theory  by Doyle, Francis, and Tannenbaum Published by Macmillan in 1992.


Feedback Control Theory

by Doyle, Francis, and Tannenbaum
Published by Macmillan in 1992.

Mathematical Control Theory

Mathematical Control Theory

Eduardo D. Sontag, Mathematical Control Theory: Deterministic Finite Dimensional Systems.
Second Edition
, Springer, New York, 1998.
(531+xvi pages, ISBN 0-387-984895)


13 Ekim 2007 Cumartesi

milw0rm.com hacking videoları



http://www.milw0rm.com/video/watch.php?id=1
http://www.milw0rm.com/video/watch.php?id=2
http://www.milw0rm.com/video/watch.php?id=3
http://www.milw0rm.com/video/watch.php?id=4
http://www.milw0rm.com/video/watch.php?id=5
http://www.milw0rm.com/video/watch.php?id=6
http://www.milw0rm.com/video/watch.php?id=7
http://www.milw0rm.com/video/watch.php?id=8
http://www.milw0rm.com/video/watch.php?id=9
http://www.milw0rm.com/video/watch.php?id=10
http://www.milw0rm.com/video/watch.php?id=11
http://www.milw0rm.com/video/watch.php?id=12
http://www.milw0rm.com/video/watch.php?id=13
http://www.milw0rm.com/video/watch.php?id=14
http://www.milw0rm.com/video/watch.php?id=15
http://www.milw0rm.com/video/watch.php?id=16
http://www.milw0rm.com/video/watch.php?id=17
http://www.milw0rm.com/video/watch.php?id=18
http://www.milw0rm.com/video/watch.php?id=19
http://www.milw0rm.com/video/watch.php?id=20
http://www.milw0rm.com/video/watch.php?id=21
http://www.milw0rm.com/video/watch.php?id=22
http://www.milw0rm.com/video/watch.php?id=23
http://www.milw0rm.com/video/watch.php?id=24
http://www.milw0rm.com/video/watch.php?id=25
http://www.milw0rm.com/video/watch.php?id=26
http://www.milw0rm.com/video/watch.php?id=27
http://www.milw0rm.com/video/watch.php?id=28
http://www.milw0rm.com/video/watch.php?id=29
http://www.milw0rm.com/video/watch.php?id=30
http://www.milw0rm.com/video/watch.php?id=31
http://www.milw0rm.com/video/watch.php?id=32
http://www.milw0rm.com/video/watch.php?id=33
http://www.milw0rm.com/video/watch.php?id=34
http://www.milw0rm.com/video/watch.php?id=35
http://www.milw0rm.com/video/watch.php?id=36
http://www.milw0rm.com/video/watch.php?id=37
http://www.milw0rm.com/video/watch.php?id=38
http://www.milw0rm.com/video/watch.php?id=39
http://www.milw0rm.com/video/watch.php?id=40
http://www.milw0rm.com/video/watch.php?id=41
http://www.milw0rm.com/video/watch.php?id=42
http://www.milw0rm.com/video/watch.php?id=43
http://www.milw0rm.com/video/watch.php?id=44
http://www.milw0rm.com/video/watch.php?id=45
http://www.milw0rm.com/video/watch.php?id=46
http://www.milw0rm.com/video/watch.php?id=47
http://www.milw0rm.com/video/watch.php?id=48
http://www.milw0rm.com/video/watch.php?id=49
http://www.milw0rm.com/video/watch.php?id=50
http://www.milw0rm.com/video/watch.php?id=51
http://www.milw0rm.com/video/watch.php?id=52
http://www.milw0rm.com/video/watch.php?id=53
http://www.milw0rm.com/video/watch.php?id=54
http://www.milw0rm.com/video/watch.php?id=55
http://www.milw0rm.com/video/watch.php?id=56
http://www.milw0rm.com/video/watch.php?id=57
http://www.milw0rm.com/video/watch.php?id=58
http://www.milw0rm.com/video/watch.php?id=59
http://www.milw0rm.com/video/watch.php?id=60
http://www.milw0rm.com/video/watch.php?id=61
http://www.milw0rm.com/video/watch.php?id=62
http://www.milw0rm.com/video/watch.php?id=63
http://www.milw0rm.com/video/watch.php?id=64
http://www.milw0rm.com/video/watch.php?id=65
http://www.milw0rm.com/video/watch.php?id=66
http://www.milw0rm.com/video/watch.php?id=67
http://www.milw0rm.com/video/watch.php?id=68
http://www.milw0rm.com/video/watch.php?id=69
http://www.milw0rm.com/video/watch.php?id=70
http://www.milw0rm.com/video/watch.php?id=71
http://www.milw0rm.com/video/watch.php?id=72

sıcak sıcak ubuntu!


5 gün sonra ubuntunun 7.10 kararlı sürümü çıkacak. isteyenler http://releases.ubuntu.com/releases/7.10 adresinden indirebilirler veya http://www.ubuntu.com/ aracılığıyla cd isteyebilirler. yaklaşık 4 hafra sonra geliyor şimdiden isteyebiliyorsunuz. kargo bedeli bile ödemiyorsunuz. ben 2 tane normal ubuntu istedim. kubuntu edubuntu gibi modellerimiz mevcuttur =) çok mutluyum hatta şimdi hemen uyuyayım yarın kalkayım da 4 gün kalmış olsun :P

30 Eylül 2007 Pazar

eheh çözdüm sorunu.

apt-get remove cltl ile o yüklenemeyen hedeyi kaldırmaya çalıştım olmadı tabi.
ve defalarca

apt-get -f install

dpkg --configure -a

ikilisini defalarca denedim düzeldi galiba.

29 Eylül 2007 Cumartesi


ve en sonunda synaptic'i patlattım. altüstü bir iki text indiriyordum ve patladı muhteşem bişi belgeler.org kurtarıcım da şimdilik bir işe yaramadı. çözebilirsem yazarım.

28 Eylül 2007 Cuma

rosenrot

güzel şarkı

27 Eylül 2007 Perşembe

gemileri yaktım..

sscb kernel zafer linux ubuntu savaş barış

taktım ubuntu dvdsini ve salak winfısa güle güle dedim artık sadece linuxum var. kocaman harddiskte at koşturacam =) rootu aktif ettim şöle oluyo:

sudo passwd root

sudo -s -H

yaparak root olunuyor.

28 Temmuz 2007 Cumartesi

FSANE yi güneş enerjili araba yarışlarına yetiştiremedik. moraller bozuk kafa ve beden yorgunluğumu salıdan beri uyuşukluk yaparak anca atabildim. birşeyler öğrenip yazmaya devam edicem ancak bu aralar sınavlarım var (elimde linuxta ağ yönetimiyle ilgili 3 kitap var onlara çalışıp pythonla birleştirmeye kasıcam bir de asıl amacım olan pentiumda gömülü sistem nasıl oluşturabilirim ve görüntü işleme üzerine bakıcağım tabi tembellik hakkımı da kullana kullana, ağır ağır olcak bunlar =)) ). güzel haberse fizik bölümüyle çift anadal programına başladım. kuantum çok güzel olucak =)



28 Haziran 2007 Perşembe

çizgi izleyen robotumuz

itü ve boğaziçi robot günlerine katıldı. itüde finale kaldı.

26 Haziran 2007 Salı

Python yapay sinir ağı modülü

yeni savaşımım bu kodla olucak. pythonda yapay sinir ağı çalışması (bpnn.py) bakalım çözebilcem mi=)

# Back-Propagation Neural Networks
#
# Written in Python. See http://www.python.org/
# Placed in the public domain.
# Neil Schemenauer

import math
import random
import string

random.seed(0)

# calculate a random number where: a <= rand < b
def rand(a, b):
return (b-a)*random.random() + a

# Make a matrix (we could use NumPy to speed this up)
def makeMatrix(I, J, fill=0.0):
m = []
for i in range(I):
m.append([fill]*J)
return m

# our sigmoid function, tanh is a little nicer than the standard 1/(1+e^-x)
def sigmoid(x):
return math.tanh(x)

# derivative of our sigmoid function
def dsigmoid(y):
return 1.0-y*y

class NN:
def __init__(self, ni, nh, no):
# number of input, hidden, and output nodes
self.ni = ni + 1 # +1 for bias node
self.nh = nh
self.no = no

# activations for nodes
self.ai = [1.0]*self.ni
self.ah = [1.0]*self.nh
self.ao = [1.0]*self.no

# create weights
self.wi = makeMatrix(self.ni, self.nh)
self.wo = makeMatrix(self.nh, self.no)
# set them to random vaules
for i in range(self.ni):
for j in range(self.nh):
self.wi[i][j] = rand(-2.0, 2.0)
for j in range(self.nh):
for k in range(self.no):
self.wo[j][k] = rand(-2.0, 2.0)

# last change in weights for momentum
self.ci = makeMatrix(self.ni, self.nh)
self.co = makeMatrix(self.nh, self.no)

def update(self, inputs):
if len(inputs) != self.ni-1:
raise ValueError, 'wrong number of inputs'

# input activations
for i in range(self.ni-1):
#self.ai[i] = sigmoid(inputs[i])
self.ai[i] = inputs[i]

# hidden activations
for j in range(self.nh):
sum = 0.0
for i in range(self.ni):
sum = sum + self.ai[i] * self.wi[i][j]
self.ah[j] = sigmoid(sum)

# output activations
for k in range(self.no):
sum = 0.0
for j in range(self.nh):
sum = sum + self.ah[j] * self.wo[j][k]
self.ao[k] = sigmoid(sum)

return self.ao[:]


def backPropagate(self, targets, N, M):
if len(targets) != self.no:
raise ValueError, 'wrong number of target values'

# calculate error terms for output
output_deltas = [0.0] * self.no
for k in range(self.no):
error = targets[k]-self.ao[k]
output_deltas[k] = dsigmoid(self.ao[k]) * error

# calculate error terms for hidden
hidden_deltas = [0.0] * self.nh
for j in range(self.nh):
error = 0.0
for k in range(self.no):
error = error + output_deltas[k]*self.wo[j][k]
hidden_deltas[j] = dsigmoid(self.ah[j]) * error

# update output weights
for j in range(self.nh):
for k in range(self.no):
change = output_deltas[k]*self.ah[j]
self.wo[j][k] = self.wo[j][k] + N*change + M*self.co[j][k]
self.co[j][k] = change
#print N*change, M*self.co[j][k]

# update input weights
for i in range(self.ni):
for j in range(self.nh):
change = hidden_deltas[j]*self.ai[i]
self.wi[i][j] = self.wi[i][j] + N*change + M*self.ci[i][j]
self.ci[i][j] = change

# calculate error
error = 0.0
for k in range(len(targets)):
error = error + 0.5*(targets[k]-self.ao[k])**2
return error


def test(self, patterns):
for p in patterns:
print p[0], '->', self.update(p[0])

def weights(self):
print 'Input weights:'
for i in range(self.ni):
print self.wi[i]
print
print 'Output weights:'
for j in range(self.nh):
print self.wo[j]

def train(self, patterns, iterations=1000, N=0.5, M=0.1):
# N: learning rate
# M: momentum factor
for i in xrange(iterations):
error = 0.0
for p in patterns:
inputs = p[0]
targets = p[1]
self.update(inputs)
error = error + self.backPropagate(targets, N, M)
if i % 100 == 0:
print 'error %-14f' % error


def demo():
# Teach network XOR function
pat = [
[[0,0], [0]],
[[0,1], [1]],
[[1,0], [1]],
[[1,1], [0]]
]

# create a network with two input, two hidden, and one output nodes
n = NN(2, 2, 1)
# train it with some patterns
n.train(pat)
# test it
n.test(pat)



if __name__ == '__main__':
demo()

24 Haziran 2007 Pazar

python kodları.2

x üssü n i hesaplayalım:


  • n sıfırsa 1 çıktısı ver
  • n mod 2 de 0 yani çift sayı ise
  • x in x le çarpımını n/2 sayısıyla bu fonksiyonda yeniden çalıştır.
  • böylece n/2k=1 e kadar xler kademeli olarak çarpılmış olacaktır.
  • n tek sayı ise (yukardaki işlemlerden sonra elde ettiğimiz n/2k=1 de dahil)
  • x çarpanını ayırıp n i çift sayı haline getirir ve çift sayılardaki işlemi uygular.

fields madalyalı bloglar

fields madalyası sahibi iki matematikçinin blogları

python kodları.1

sıfırdan n e kadar olan sayıların toplanması:



def ile topla isimli ve n girdili bir fonksiyon tanımlanmıştır.

sonuc=0 ve i=1 tanımlamaları yapılmıştır. bunlar ilerde kullanılacak değişkenlerdir. while ile i nden küçük ve eşit olduğu sürece çalışacak bir döngü oluşturulmuştur. her döngüde sonuç i ile toplanıp değeri arttırılacak ve i bir arttırılacaktır bölece i ne kadar artar ve return sonuc ile döngüden çıkıp sonucu elde eder.
mesela n=5 için döngüye bakalım:

  • sonuc=s=0 ve i=1, i nden küçük ve döngü başlar:
  • s= 0+1, i =1+1=2, n den küçük döngüye devam,
  • s=1+2, i=2+1=3, yine nden küçük
  • s=3+3, i=3+1, yine,
  • s=6+4, i=4+1=5, n e eşit son bir döngü daha,
  • s=10+5, i=5+1=6 ve nihayet n den büyük ve döngüden çıkar.
  • return sonuc a gelir ve cevabı geri döndürür.

python kodları.0

bi sitede python kodları buldum. burada da anlayabildiklerimi yazmaya çalışacağım.


ilki faktöriyel hesaplama:


def ile fonksiyon tanımlanmış fonksiyonun adı faktoryel kullanılan girdi de n dir.

eğer n sıfıra eşitse program 1 çıktııs verir ve biter bunu return komutu sağlar.
sıfırdan farklı bir değerse n faktoryal (n-1) fonksiyonu ile çarpılıp işlem biter. ancak faktoryel n-1 sıfırdan farklı ise o fonksiyonda da (n-1) le faktoryel(n-1 - 1) işlemi vardır ve bu sıfıra kadar gider. sonuç olarak n(n-1)(n-2)(n-3)...(n-(n-2))(n-(n-1) e kadar sürer işlemimiz ve bu da n! e eşittir.

23 Haziran 2007 Cumartesi

pythona devam II


Tüpler listeye benzer ama içerikleri değiştirilemez. Tüpün elemanları parantez içerisinde sıralanır. Program akışını hızlandırdıkları için programlarda dizilerin yerine kullanılırlar.



Sözlükler listelere benzerler ancak verilerin konumlarını 0 dan başlayan sayılar yerine kendimiz belirleyebiliriz. Bu konum kelimelerine anahtarlar denir. Sözlükteki anahtarları keys() fonksiyonu ile buluruz.

bilgi.keys() gibi.

bilgi.has_key('aranan anahtar') bir anahtarın o sözlükte olup olmadığını bulmamızı sağlar. varsa True yoksa False cevabını verir.

sözlüteki değerleri görüntülemek için values() fonksiyonunu kullanırız.

bilgi.values() gibi.

items() bir sözlükteki anahtar, değer ikililerini (tüplerini) elde etmemizi sağlar.

bilgi.items() şeklinde kullanılır.



yazılarda bahsedilen listeler sözlükler vetüpler iç içe kullanılabilinir.

get() ile sözlükteki bir anahtarın değerini getirir. eğer sözlükte o anahtar yoksa birşey yapmaz, hata vermez. get(x,y) de ise sözlükte eğer x anahtarı yoksa y ye geçer.

del() ile bir anahtarı sözlükten silebiliriz.

clear() ile bir sözlükteki bütün anahtarları ve bağlantılarını silebiliriz.



uptade() ile bir sözlükteki anahtarların değeri başka sözlüktekilerle değiştirilebilir.

>>> sos1={'ahe':2.999,'veha':11111,'dela':222}
>>> sos2={'ahe':3,'veha':0}
>>> sos1.update(sos2)
>>> sos1
{'dela': 222, 'veha': 0, 'ahe': 3}
>>>

9 Haziran 2007 Cumartesi

scheme eskizlerine devam.

Teach Yourself Scheme in Fixnum Days

kaynağına bakıyorum ordan da bazı karalamalar.

ilk iş merhaba dünya olayına girişmişler=)


;ilk program
(begin
(display "Merhaba, Dünya!")
(newline))

noktalı virgül yorumdur.





Boolean cebir elemanları 1 = #t (true dan), 0= #f (false dan) olarak tanımlanmıştır.

not boolean tersi işlemidir. sıfırsa bir birse sıfıra çevirir.

(not #f)              =>  #t
(
not #t) => #f
(
not "Hello, World!") => #f

boolean? boolean cebiri için tanımlanmış ifade olup olmadığına bakar.

(boolean? #t)              =>  #t
(
boolean? "Hello, World!") => #f

scheme de number kavramı (sayı) bütün tam sayıları (integers), rasyonel sayıları (rationals),
reel (reals) ve karmaşık (complex) sayıları kapsar. bir verinin sayı olup olmadığı number?
sorgusu ile yapılır. diğer veri yapısı sorguları da aşağıdaki gibidir.

(
number? 42) => #t
(
number? #t) => #f


(complex? 2+3i) => #t

(
real? 2+3i) => #f
(
real? 3.1416) => #t
(
real? 22/7) => #t
(
real? 42) => #t

(
rational? 2+3i) => #f
(
rational? 3.1416) => #t
(
rational? 22/7) => #t

(
integer? 22/7) => #f
(
integer? 42) => #t


#b ikili sistemi temsil eder. #b1100 yazdığımızda onluk sisteme dönüştürülür (12).
#o sekizlik, #x ise 16lık hex sistemini temsil eder.

eqv? eşit olup olmadığını test eder.

(eqv? 13 13)
(eqv? 13 #t)
(eqv? 13 #f)
(eqv? 13 13.0)

ayrıca sayılar için = de kullanılır
.

(= 42 42)   =>  #t
(
= 42 #f) -->ERROR!!!
(
= 42 42.0) => #t



(< 3 2) => #f
(
>= 4.5 3) => #t
büyüklük küçüklük ve büyük eşitlik gibi ifadeler normal matematikteki
gibidir.

(< 3 2)    =>  #f
(
>= 4.5 3) => #t

üssünü almak expt ile olur.

(expt 2 3) => 8
(
expt 4 1/2) => 2.0

ilk ifade yoksa - de ilk ifade sıfırmış gibi / de de 1 miş gibi
davranır.

(- 4) => -4
(
/ 4) => 1/4
maksimum ve minumum değerleri bulmak için max ve min
kullanılır.

(max 1 3 4 2 3) =>  4
(
min 1 3 4 2 3) => 1


karakterler /# ön ekiyle tanımlanırlar. #\c , c karakteridir. #\newline ,
#\tab gibi kullanılabilirler. space tuşu #\ veya #\space şeklinde gösterilebilir.

Bir verinin karakter olup olmadığı char? ile sorgulanabilir.

(char? #\c) =>  #t
(char? 1)
=> #f
(char? #\;)
=> #t

karakterlerin karşılaştırılması da
char=?, char, char<=?, char>?,
char>=? şekillerinde yapılabilir.

(char=? #\a #\a)  =>  #t
(char #\a #\b) => #t
(char>=? #\a #\b) => #f

karakterleri büyüklük küçüklük hassasiyeti olmadan karşılaştırma yapmak
için char-ci kullanılır.

(char-ci=? #\a #\A) => #t
(char-ci #\a #\B) => #t

küçük harflerin büyük harflere dönüştürülmesi char-upcase, büyüklerin de küçük
harflere dönüştürülmesi char-downcase komutları ile yapılır.

(char-downcase #\A) => #\a
(char-upcase #\a) => #\A

Semboller değişken tanımlamakta kullanılırlar. sembolleri belirtmek için
quote veya ' kullanılır. (buraları ben de pek anlamadım.)

(quote xyz)
=> xyz

'E

(quote E)

sorgulaması symbol? ile yapılır.

(symbol? 'xyz) => #t
(symbol? 42) => #f


Shceme de sembollerin büyük küçük duyarlılığı yoktur.


(eqv? 'Calorie 'calorie)
=> #t
define ile global değişken ataması yapabiliriz.

(define xyz 5)

xyz
=>  5

set! ile değişkenin değerini değiştirebiliriz.

(set! xyz #\c)

xyz
=> #\c

string harfleri birleştirmeyi sağlar.

(string #\M #\e #\r #\h #\a #\b #\a)
=>"Merhaba"

string-ref ise istenen sıradaki harfi verir.

(define aa "Merhaba ; Merhaba!")

(string-ref aa 9)
=>#\space

(string-ref aa 0)
=>#\M

(string-ref aa 1)
=>#\e
string-append ile ekleme yapabiliriz

string-append aa " mrb." " slm.")
=>"Merhaba ; Merhaba! mrb. slm."

define ve string i birlikte kullanarak da tanımlama yapabiliriz.

(define mrb (string #\M #\e #\r #\h #\a #\b #\a))
mrb
=>"Merhaba"

string-set! ile dizideki karakterlerden istediğimizi değiştirebiliriz.

(string-set! mrb 1 #\i)
mrb
=>"Mirhaba"


matematik dünyasında sonsuz listelerle ilgili bir makale
bir makale buldum.




7 Haziran 2007 Perşembe

Matematik Dünyası


Yeni sayısı sonunda bayime geldi. Aslında bilgi üniversitesi evime yakın ve dergi çıkalı baya oldu ama yine de bayiden almak daha güzel. Kapak konusu olarak kesirli diziler ve gerçel sayıları seçmişler. bakalım neler varmış içinde.

6 Haziran 2007 Çarşamba

scheme karalamalar


sicp kitabı ile schemeyi kurcalıyorum bakalım noolcak =)

MIT nin GNU schemesini kullanamadım (run emacsdakinden farklıydı bulamadım) onun yerine DrScheme kullanıyorum. dosyalar .scm olarak kaydediliyor. Dili içgüdüsel olarak standart seçtim (Language: Standard (R5RS).)

linuxda açmak için badis@badis-laptop:~$ drscheme yazmanız yeterlidir.
kaydettiğiniz betiği de badis@badis-laptop:~$ drscheme betikadi.scm şeklinde geri çağırıp üstünde çalışabilirsiniz.


(+ 333 234)
567
(* 12 5 4)
240
(- 11 3 )
8
(+ (* 4 5) (- 4 6))
18
(+(* 3(+ (* 2 4) (+ 3 5))) (+ (- 10 7) 6))
57

(- 4 5 6 7)
-14

en son yaptığımız çıkarmada ilk elemandan diğer üçünü çıkarmaktadır. schemede common lisp deki gibi önce komut ardından listenin elemanları geliyor.


tanımlamaları define ile yaparız.

(define boy 20)
boy
(* 5 boy)


(define pi 3.141592654)
(define yaricap 5)
(define cevre (* 2 pi yaricap))
cevre
(define alan (* pi yaricap yaricap))
alan



(* (+ 2 (* 4 6))
(+ 3 5 7))

bu işlemin ağacına bakalım: 3,5,7 bir dallanma 4,6 ayrı ancak 2 ile birleşiyor. aşağıda agacı mevcuttur kitaptan copy paste edilmiştir.
(kendime not okulun sitesinde bulduğum ağaç slaytlarına çalış devre teorisinde gördüğün graflar yetmeyecektir, teorini güçlendir!)



bana muhteşem gelen bir şey okudum az önce. fonksiyonu anında tanımlıyoruz ve anında kullanabiliyoruz. çok güzel bir özellik bence.

temel yapısı:

(define (fonksiyon-adı paramatre1 par2..) (işlem par1 par2..))


(define (kare x) (* x x))
(kare 7)
(kare (+ 4 5))
(kare (kare 4))
(define (kareler-toplamı x y)(+ (kare x) (kare y)))
(kareler-toplamı 6 8)
(define (f z)
(kareler-toplamı (* z z) (* z 4)))
(f 5)


DrScheme'nin güzel bir özelliği de imleç paranteze geldiğinde parantezin bitimine dek renklendirmesi böylece hata yapmamı önlüyor. Dallanmanın nasıl olduğunu kolayca anlamamı sağlıyor.

matlab'a giriş

merhaba arkadaşlar bu dönem matlabi ders olarak aldım ve geliştirmek istiyorum. karşılıklı öğrenme amacı güden bir programım olucak. matlabi matematikteki sembolleri kullanarak program yazabildiğimiz, simülasyonlar, 3d çizimler, değişik kontrol sistemleri tasarlayabileceğimiz bir programlamlama dili olarak düşünebiliriz. c tabanında yazılmıştır. c ile etkileşimli kullanılabilir. yüksek seviyede bir dildir. burada kullandığımız yüksek terimi makina diline olan uzaklığıdır. neyse şimdi başlayabiliriz.

matlabde kafanıza bişi takılıyosa

help bişi bişi yazın o konu hakkında bilgi gelecektir.

matlabın açılımı matrix laboratory dir, matrisler üzerine kurmuşlar programı. programın babası da elektrik mühendisi ve matematikçiymiş.
yani sen bir sayı girdiğinde o bunu matris olarak algılıyor. matris işlemlerini de kolaylaştırıyor.

ama öncelikle farklı olan matematiksel işaretleri gösterelim:

* çarpma

/ bölme

^ üs alma 2^3=8 gib
pi yazınca pi sayısının aslına yakın yuvarlanmış bir sayı gelir.i

virgülden sonraki sayıları göstermek için nokta kullanılır.

| bu işaret mantıksal ifadelerde işe yarıyacak ben c çalışırken bulmam baya bi zaman almıştı >< a="rand(4,4)" a="randn(3,3)" x="3+4i" x="3+4j" ans="0,9273" x="3-4i)">> a=rand(4,4)

a =

0.9355 0.0579 0.1389 0.2722
0.9169 0.3529 0.2028 0.1988
0.4103 0.8132 0.1987 0.0153
0.8936 0.0099 0.6038 0.7468

şimdi tersini alalım:

>> inv(a)

ans =

-1.5054 3.6825 -1.4860 -0.4013
5.3255 -7.0376 3.9063 -0.1473
-20.0637 22.9531 -8.5486 1.3769
17.9531 -22.8718 8.6384 0.7080

determinantı:

>> det(a)

ans =

-0.0154

transpozesi:

>> a'

ans =

0.9355 0.9169 0.4103 0.8936
0.0579 0.3529 0.8132 0.0099
0.1389 0.2028 0.1987 0.6038
0.2722 0.1988 0.0153 0.7468

özdeğer bulma:

>> eig(a)

ans =

1.6101
-0.0489
0.3363 + 0.2878i
0.3363 - 0.2878i

şeklinde olur.

polinom eşleniğini bulmak için

p=poly(a)

p =

1.0000 -2.2338 1.1673 -0.2529 -0.0154

buraki sayılar polinomun katsayılarıdır.

x^4-2.2338x^3+1.1673x^2-02529x-0.0154 anlamındadır.

polinomun köklerini bulma:

>> roots(p)

ans =

1.6101
0.3363 + 0.2878i
0.3363 - 0.2878i
-0.0489

özdeğerle aynı olduğu görülür.

dizi oluşturma

>> x=1:5

x =

1 2 3 4 5

0,5er artımla dizi oluşturma:

>> x=1:0.5:5

x =

Columns 1 through 7

1.0000 1.5000 2.0000 2.5000 3.0000 3.5000 4.0000

Columns 8 through 9

4.5000 5.0000

y=x^3 olmaz x kare matris olmadığı için sorun çıkar. elemanter çarpım için

y=x.^3 '.' kullanılır.

5 Haziran 2007 Salı

kurallarım

1- yanımda çocuk taklidi yapmayın. en yakındaki kesici aletle gırtlağınızı keserim.

2-hayvanlara zarar vermeyin. topunuzu keserim.

3-içeceğime dokunmayın.

4-bilimi nerde kullanıcaz zaten bunları deyip küçümsemeyin. en azından yanımda.

5-büyük harfle konuşmayın.

6-zeki olduğunuzu düşünmeyin. elbet daha zekisi çıkar.

7-aptallaşmayın.

8-yüzünüze aşırı makyaj yapmayın. aşırı jöle de sürmeyin.

9-dünyayı takmıyorum deyip imaj yapmayın takmayan adam imajı da ***lemez kendini de.

10-adam gibi için.

11-denizde yüzün, işemeyin.

12-bana inanın.

13-gözlerinizi sigarayla yakmaya çalışmayın.

python kitabından notlar I

kitabı yeni aldım geri dönüp bakabilmek için notlarım:

3. Bölüm:

>>> a=8
>>> a=a+22
>>> a
30


burada a ya a+22 ifadesi atanmıştır.

>>> c="çağdaş"
>>> c
'\xc3\xa7a\xc4\x9fda\xc5\x9f'
>>> print c
çağdaş

cümle değişkenlere Türkçe karakter atarken sorun çıkmıyor sadece python onu nasıl algıladığını belirtiyor. print c yazınca olması gerektiği gibi görünüyor.

>>> merhaba="Adana'ya ilk gelişiniz mi?"
>>> print merhaba
Adana'ya ilk gelişiniz mi?

kesme işaretiyle ayırmamız gereken bir yer olduğu için, en dışa tırnak işareti koyduk.

>>> arkadasim='"Burada dalmak çok güzel olur baksana cam gibi yukardan bakınca dip görünüyor" dedi.'
>>> print arkadasim
"Burada dalmak çok güzel olur baksana cam gibi yukardan bakınca dip görünüyor" dedi.

Burada alıntı yapmamız gerekti ve en dışa kesmeleri koyduk.

>>> a=9
>>> b="5"
>>>
>>> a=3
>>> b="9"
>>> c=a+b

Traceback (most recent call last):
File "", line 1, in
c=a+b
TypeError: unsupported operand type(s) for +: 'int' and 'str'

buradaki hata

>>> c=a+int(b)
>>> print c
12

yada

>>> c=str(a)+b
>>> print c
39

şeklinde çözülür.

int fonksiyonu cümle değerlerini tamsayıya çevirmek için kullanılır.

>>> int("765")
765

noktalı değerlerde float kullanılır.

>>> float("383.2")
383.19999999999999

str fonksiyonu ise ondalık veya tam sayıları cümle (string) değerlerine çevirmemizi sağlar.

>>> str("234")
'234'
>>> str(1321)
'1321'
>>> str(123.45)
'123.45'

>>> a=14
>>> a.__str__()
'14'

a.__str__() tarzı işlemler nesne modelinde kullanılır.

len() cümlenin uzunluğunu verir.

>>> len("Nasılsın komşu?")
18

>>> "Nasılsın komşu?".__len__()
18

Türkçe karakterlerin 2 olarak değeri olduğunu gördüm.

listeler

>>> p=['ysa', 'perl', 'ga']
>>> p[1]
'perl'
>>> p[:]
['ysa', 'perl', 'ga']
>>> p
['ysa', 'perl', 'ga']
>>> p[0]; p[2]
'ysa'
'ga'
>>> p=p+['pascal']
>>> p
['ysa', 'perl', 'ga', 'pascal']

>>> p[-1]
'pascal'
>>> p[-3]
'perl'

>>> p[1:3]
['perl', 'ga']
>>> p[1:2]
['perl']
>>> p[0:3]
['ysa', 'perl', 'ga']

>>> p.append('frp')
>>> p
['ysa', 'perl', 'ga', 'pascal', 'frp']

listeler birer nesnedir, nesnelerin özelliklerini görmek için dir(nesne) komutu kullanılır.

>>> p=p+['perl']
>>> p
['ysa', 'perl', 'ga', 'pascal', 'frp', 'perl']
>>> p.count('perl')
2

count() bir listedeki bir elemanın kaç tane bulunduğunu verir.

>>> p.extend(['common lisp','fortran'])
>>> p
['ysa', 'perl', 'ga', 'pascal', 'frp', 'perl', 'common lisp', 'fortran']

extend() 'le iki liste toplanır.

index() listedeki bir elemanın yerini verir. eğer birden fazla varsa ilk konumunu verir. olmayan bir elemanı sorgularsanız hata verir.

['ysa', 'perl', 'ga', 'pascal', 'frp', 'perl', 'common lisp', 'fortran']
>>> p.index('perl')
1

insert() listenin istenen yerine ekleme yapmak için kullanılır.

>>> p.insert(3,'scheme')
>>> p
['ysa', 'perl', 'ga', 'scheme', 'scheme', 'pascal', 'frp', 'perl', 'common lisp', 'fortran']

pop() listenin son elemanını siler.

>>> p.pop()
'fortran'
>>> p
['ysa', 'perl', 'ga', 'scheme', 'scheme', 'pascal', 'frp', 'perl', 'common lisp']

remove() eleman silmek için kullanılır. birden fazla varsa o elemandan ilkini çıkrarır.

>>> p.remove('perl')
>>> p
['ysa', 'ga', 'scheme', 'scheme', 'pascal', 'frp', 'perl', 'common lisp']

reverse() , diziyi ters çevirir.

>>> p.reverse()
>>> p
['common lisp', 'perl', 'frp', 'pascal', 'scheme', 'scheme', 'ga', 'ysa']

sort() listenizi sayılardan başlamak üzere alfabetik olarak sıralar.

['common lisp', 'perl', 'frp', 'pascal', 'scheme', 'scheme', 'ga', 'ysa']
>>> p=p+[16, 233]
>>> p
['common lisp', 'perl', 'frp', 'pascal', 'scheme', 'scheme', 'ga', 'ysa', 16, 233]
>>> p.sort()
>>> p
[16, 233, 'common lisp', 'frp', 'ga', 'pascal', 'perl', 'scheme', 'scheme', 'ysa']

len() listenizin kaç elemandan oluştuğunu bulursunuz

>>> len(p)
10

>>> p.__len__()
10

listeyi tamsayıyla çarpma listenin ardarda yazılmasıdır.

>>> x=['y','z']
>>> x*3
['y', 'z', 'y', 'z', 'y', 'z']
>>> x
['y', 'z']

yaptığımız işlemde x'i 3 le çarptık ama x'e başka bir değer atamadık. liste toplamında da bu böyledir.

>>> x
[1, 3, 5]
>>> y=x
>>> y.append(7)
>>> x
[1, 3, 5, 7]
>>> y
[1, 3, 5, 7]

buradali y=x x'e y etiketinin verildiğidir. ikisi ayrı nesneler olmuyor. onun için y'yi x den ayrıca kopyalamak gerekir.

>>> import copy
>>> x=[1,3,5]
>>> y=copy.deepcopy(x)
>>> y.append(7)
>>> y
[1, 3, 5, 7]
>>> x
[1, 3, 5]

şeklinde sorunumuz çözülür.

Tüpler listeye benzer ama içerikleri değiştirilemez. Tüpün elemanları parantez içerisinde sıralanır.

komik filmler

sakar şakir






hacı hoca


4 Haziran 2007 Pazartesi

python'a giriş

bu aralar bu dile başladım (beraberinde common lisp ve scheme ye de bakmaya çalışıyorum). Pythonda öğrenebildiklerimi burda aktarmaya çalışacağım. python özgür yazılımdır. (açık kaynak, gnu). nesneye yönelimli bir dildir. öncelikle yüklemekle başlayabiliriz.

son sürümü şimdilik 2.5.1 dir. küçük bişidir.

buradan indirebilirsiniz..

linuxlarda hazır gelmektedir konsola python yazın gelicektir. ancak idle adında editörü de mevcuttur. ben ubuntu kullanıyorum ve kurduğumda idle yoktu, paket yöneticisinden kolayca yükledim. windows sürümünde dökümanları ve idle'yla birlikte gelmektedir.

yükleme işlemi bittikten sonra konsola idle yazın gelicektir. (uygulamalar>programlama>idleden de açabilirsiniz ama konsoldan açmak kadar sağlıklı olmadığı tecrübe edilmiştir)

karşımıza aşağıdaki gibi bir pencere gelmesi lazım.





şimdi ilk işimiz yazılımın kutsal olayını gerçekleştirmek.

>>>print "merhaba, dünya!"

yazın.

>>> 1 + 1
2
>>> a=3
>>> b=5
>>> a*3
9
>>> a,b = 5,20
>>> a+b
25

direkt x=10 gibi tanımlamalar yapabilirsiniz. yada a,b örneğinde olduğu gibi iki değişkeni de aynı anda tanımlayabilirsiniz.

>>> u=v=d=11 şeklinde de tanımlama yapabilmeniz mümkün.




>>> type(3.2)

>>> type("asasasas")

>>> type(33)


şekinde verilerin tipini öğrenebiliriz.

type fonksiyonu harf karakterleri direkt tanımaz hata verir. bu yüzden direkt yazmak yerine onları da tanımlayabiliriz. evet sırf zevk için yapabiliriz bunu.

>>> asasas= "epoke pythonda da mı var?"
>>> print asasas
epoke pythonda da mı var?
>>> type(asasas)


virgüllü değerler:

>>> 7/3
2

veya

>>> 5/6
0

yazarsak virgülden sonrasını hiç tanımadığını görürüz. virgüllü sayıları elde etmek için

>>> 7.0/3
2.3333333333333335
>>> 5/6.0
0.83333333333333337

şeklinde işlemlerimizi yapabiliriz.





idle' de yazdığınız betikleri direkt kaydedemezsiniz. çünkü orası etkileşimli bir ortamdır ve yazdıklarınız python tarafından anında yorumlanır.

sorunu çözmek çok basit, menüden File>New window u seçip oraya yazarsınız ve orada yazdıklarınızı kaydedip daha sonra tekrar çalıştırabilirsiniz.

şimdi değişken atamalardan devam edelim.

değişkenimizi atarken (kilo=5 gibi) karakterler arasında boşluk bırakmamalıyız onun yerine _ altçizgi kullanabiliriz.
dikkat etmemiz gereken diğer bir nokta da bazı anahtar kelimelerin değişken adı olarak kullanılamaması.

29 tane anahtar kelime vardır:

and else import raise
assert except in return
break exec is try
class finally lambda while
continue for not yield
def from or
del global pass
elif if print

Matematiksel ifadelerde öncelik parantez içlerinindir. Daha sonra üslü ifadeler gelir. Pythonda üslü ifadeler a**b şeklinde gösterilir. Matlab'de kullanılan ^ işareti kullanılmaz. o işaret iki sayının farkının mutlak değerini elde etmek için kullanılır. Üslü ifadelerden sonra çarpım (*) ve bölüm (/) işlemleri aynı öncelik sırasına sahiptirler. Bu iki işlemden sonra da toplama ve çıkarma gelir.

Karakterlerden oluşan elemanlar kendi aralarında toplanabilir, bu yan yana dizilmeleri şeklinde olur. Karakter elemanı bir sayıyla çarpılırsa ardarda çarpıldığı sayı kadar yazdırılır. Ancak karakter ve sayılar arasında toplama çıkarma ve ölme yapılamaz.


>>> a="Ali"
>>> b=" ata"
>>> c=" bak."
>>> print a+b+c
Ali ata bak.
>>> "Ali bak"*3
'Ali bakAli bakAli bak'
>>> "Ali bak. "*5
'Ali bak. Ali bak. Ali bak. Ali bak. Ali bak. '




Klavye girişleri:

Programınızda kullanıcıdan bilgi almak veya bazı fonksiyonların değerlerini kullanıcıdan istemek için girdi istenebilir. Pythonda input ve raw_input fonksiyonlarıyla bu girişler yapılabilir. input sayısal değerler için raw_input ise karakter girişi iin kullanılır. raw_input fonksiyonunda Türkçe karakterler sorun çıkarmaktadır.

>>> k=raw_input('bir cümle giriniz:')
bir cümle giriniz:Merhaba
>>> k
'Merhaba'
>>> l=input('bir sayı giriniz')
bir sayı giriniz148
>>> l
148

Kodunuzun neresinde hangi işlemleri yaptığınızı hatırlamak için yada başkaları tarafından kolay anlaşılır olması için # karakteri ile yorumlar koyabilirsiniz.

>>> #yorumların programda etkisi yoktur.


 
eXTReMe Tracker