hesap makinesi olmasaydi?

145 views
Skip to first unread message

ozde...@gmail.com

unread,
Feb 17, 2011, 3:55:20 PM2/17/11
to TMOZ
bu gruba ikinci sorum efendiler :

diyelim ki henuz hesap makinesi bulunmamis. tek bildiginiz toplama,
cikartma, carpma ve bolme. ve maalesef size pozitif bir A reel sayinin
logaritmasi lazim. yalniz virgulden sonra atiyorum 10. basamaga kadar
falan bir hassasiyetle. nasil hesaplarsiniz?

hatta bitirmeyelim burada, ayni sayinin mesela kupkokune ihtiyaciniz
olsun. onu nasil hesaplarsiniz?

selamlar.

erdal karaburun (Öğretmen)

unread,
Feb 17, 2011, 4:18:51 PM2/17/11
to tm...@googlegroups.com
EFENDİ senin haberin yokmu hesap makinesi icat oldu.her şey çok kolay...

17 Şubat 2011 22:55 tarihinde ozde...@gmail.com <ozde...@gmail.com> yazdı:



--
Milli varlığımızın temelini;milli şuurda ve milli birlikte görmekteyiz.
Mustafa Kemal ATATÜRK



ediz alturk

unread,
Feb 17, 2011, 4:22:48 PM2/17/11
to tm...@googlegroups.com
Küp kök için cevabım.
 
küp.jpg

sinan aşık

unread,
Feb 17, 2011, 4:29:18 PM2/17/11
to tm...@googlegroups.com
[s.a]

Küpkökle ilgili şöyle bir yöntem buldum netten?

KÖK ALMAK

(22 Mart Gardner, "Scientific American" adlı popüler bilim derisinde 1957 yılından beri eğlenceli Matematik yazıları yazar. Bu yazıda anlatılan gösterilerin hemen hepsi onun bu yazılardan birinden alınmadır...)

Tanıdığım bir öğretim üyesi İngiltere'de öğrenimdeyken gördüğü bir gösteriyi anlatmıştı. Sahnede Hintli bir kadın gösterdi. Ustası küpkök ve beşinci mertebeden kök alıyormuş. Yani kendisine bir sayı veriyormuşsunuz, o da göz açıp kapayıncaya kadar size "hangi sayı kendisyle 3 kez, 5 kez çarpılırsa o verdiği sayı çıkar" söylüyormuş. "Bunda ne zorluk var?" diyenlere soruyorum: "550.731.776" sayısının 5.mertebeden kökü kaçtır?"

Arkadaşımın anlattığı bu hüner, beni gerçekten çok etkilemişti. "Aşk olsun." demiştim; ta ki işin püf noktasını bulana kadar. Bulunca da hayranlığım kızgınlığa dönüştü.

1 ile 100 arasındaki bir tamsayı, 5.kuvveti olmak koşuluyla size verilen sayının 5.mertebeden kökünü bulmak gerçekten çocuk oyuncağı. Ancak bunun için aşağıdaki cetveli ezberlemek gerekiyor.
Bu işi çocuk oyuncağı yapan özellik şu: Bir tam sayının birler basamağındaki rakam ile o sayının beşinci kuvvetinin birler basamağındaki rakam aynıdır. Şimdi diyelim ki, biri size; "550.731.776" sayısını verdi. Sayı 550 milyon ile başladığına göre 5. mertebeden kökünün 50 ile 60 arasında, yani 50 küsür olduğunu ezberinizdeki cetvelden saptayın. Ve son basamağa kadar bekleyin. (aradaki basamakları dinlemeseniz de olur.) Son basamak 6 olduğuna göre aranan kök "56" dır. 5. mertebeden kök almak kadar olmasa bile, küpkök alma da oldukça kolay. Bunun için 1'den 10'a kadar sayıların küpünü ezberlemek gerekli.
Sayı 1 2 3 4 5 6 7 8 9 10
Küpü 1 8 27 64 125 216 343 512 729 1000

Görüldüğü gibi; 2, 3, 7 ve 8'in küpleri dışında küpün birler basamağındaki rakam, küpü alınan saynın aynısı. 2, 3, 7 ve 8 durumunda ise bunların toplamı 10 ediyor.

Şimdi diyelim ki, küp kökü alınacak sayı 31. Son 3 basamağı atın, 314'ü alın. 314; 216 ile 343 arasında olduğundan küp kökün onlar basamağı 6'dır. (neden?) Küpün birler basamağında 2 olduğuna göre küpkökün birler basamağında 8 olması gerekir. Şu halde aranan küpkök "68" dir.

Mtn KRSLN

unread,
Feb 17, 2011, 4:37:07 PM2/17/11
to TMOZ
HOCAM BU ALETLER Bİ ARA KOL SAATLERİNDE VARDI HATTA ÇOK MODA İDİ BİZİM
GENÇLİĞİMİZDE
REHBERLİ SAATLER FALAN ŞİMDİDE TELEFONLARDA VAR
ÇOK KULLANIŞLI AMA HESAP MAKİNASI OLMASYDI NÜMERİK ANALİZ OLMAZDI VE
BENDE O DERSİN
HOCASINA KÜFÜR ETMEZDİM MESELA
( AMA ÇOK GICIKTI YA)
On 17 Şubat, 23:29, sinan aşık <s.a.sinan.a...@gmail.com> wrote:
> [s.a]
>
> Küpkökle ilgili şöyle bir yöntem buldum netten?
>
> KÖK ALMAK <http://matematik-ogretmenim.blogspot.com/2008/07/kk-almak.html>

ediz alturk

unread,
Feb 17, 2011, 4:42:27 PM2/17/11
to tm...@googlegroups.com

Logaritma için yanıtım.
 
Sorularınız güzeldi hocam. Beğendim.
log.jpg

ozde...@gmail.com

unread,
Feb 18, 2011, 8:46:38 PM2/18/11
to TMOZ
Simdi oncelikle Ediz beyi bir tebrik, bir de itiraz bekliyor. Kupkok
icin verdigi cevap gayet dogru, tabii bir de gerekcesini verelim.

Burada Newton-Raphson metodu denilen bir metodu izlemis Ediz bey, ki
tercih edilebilecek en iyi kok bulma yontemlerinden birisidir Newton-
Raphson metodu. Cok da hizli yakinsar. Asagidaki link guzelce de
aciklamis, sekilli mekilli :

http://www.ibrahimay.com/bilim/matematik/69-newton-raphson-yontemi.html

en basit hali ile sonrakideger = ilkdeger - ( f(ilkdeger)/
f'(ilkdeger)) diye ozetlenebilecek bir iterasyon dizisi ile koke
yaklasilir. Yakinsamadigi, hususiyetle turevin sifira gittigi
durumlarda iraksadigi da olur, ilkdegeri dikkatli secmek gerekir.
Bizim kupkok problemine uygulanirsa,

Kupkok(x) = A olsun, biz burada A'yi ariyoruz aslinda. O halde
x = A^3 olur. Ve f (A) = A^3 - x = 0 denklemini A'ya gore cozmemiz
gerekir.

sonrakideger = ilkdeger - (ilkdeger^3 - x) / (3 * ilkdeger^2) ve
buradan da

sonrakideger = 2/3 * ilkdeger - x / (3 * ilkdeger^2) olarak dizi
belirlenmis olur.

Gelelim logaritmaya.. Ediz bey'in logaritma icin onerdigi acilim, bir
Taylor acilimi. Gelin gorun ki sozkonusu acilim -1<x<=1 icin ln(1+x)'e
yakinsamaktadir. Biz ise daha genis bir logaritma yaklasimi ariyoruz.

Yine Newton-Raphson yonteminden yararlanacagiz. Dikkat edilirse kup
kok hesabi icin, 3. kuvvetle ugrasmis idik. Benzer sekilde logaritma
icin de onun ters fonksiyonu olan exponansiyel fonksiyonla ugrasiriz.
Yukaridaki islemleri logaritma icin gerceklestirirseniz,

sonrakideger = ilkdeger + x / exp (ilkdeger) - 1

iterasyonuna denkligine ulasacaksiniz. Burada exponansiyel fonksiyonu
ise yine sadece dort islem kullanarak,

exp (x) = 1 + x + x^2/2! + x^3/3! + x^4/4! + ...

seklinde ifade edersek, sadece dort islem ile oldukca iyi yakinsayan
bir logaritma hesaplama yontemi elde etmis oluruz.

bunlarin her ikisini de kullanarak hesap yapan nacizane bir programcik
yazdim, derledim, calistirdim. kendisi ve ciktisi asagidaki gibi :


======================================================================================
/*
Programi derleme komutu:
gcc numerik.c -Wall -o numerik
*/

#include <stdio.h>

#define MAXIMUM_TERIM 50
#define EPSULON 1E-9

/* < TURKCELESTIRME> */
#define uzun long double
#define tamsayi int
#define baslangic main
#define eger if
#define yoksa else
#define icinDongusu for
#define olduguMuddetce while
#define ekranaYaz printf
#define dondur return
/* </TURKCELESTIRME> */

uzun mutlakDeger (uzun x) {
eger (x >= 0)
dondur x;
yoksa
dondur -x;
}

uzun tamKuvvet (uzun x, tamsayi d) {
tamsayi i;
uzun sonuc = 1;

icinDongusu (i = 0 ; i < d ; ++i) {
sonuc *= x;
}

dondur sonuc;
}

uzun faktoriyel (tamsayi d) {
tamsayi i;
uzun sonuc = 1;

eger (d == 0 || d == 1)
dondur 1;

icinDongusu (i = 2 ; i <= d ; ++i)
sonuc *= i;

dondur sonuc;
}

uzun eUzeri (uzun x) {
tamsayi i;
uzun sonuc = 1;

icinDongusu (i = 1 ; i <= MAXIMUM_TERIM ; ++i) {
sonuc += tamKuvvet (x, i) / faktoriyel (i);
}

dondur sonuc;
}

uzun logaritma (uzun x) {
uzun sonuc = x, araDegisken = 0;

olduguMuddetce (mutlakDeger (sonuc - araDegisken) >= EPSULON) {
araDegisken = sonuc;
sonuc = araDegisken + (x / eUzeri(araDegisken)) - 1;
}

dondur sonuc;
}

uzun kupkok (uzun x) {
uzun sonuc = x/2, araDegisken = 0;

olduguMuddetce (mutlakDeger (sonuc - araDegisken) >= EPSULON) {
araDegisken = sonuc;
sonuc = 2.0 / 3.0 * araDegisken + x / (3 * tamKuvvet (araDegisken,
2));
}

dondur sonuc;
}

tamsayi baslangic (){
ekranaYaz ("ln (%0.12Lf) : %0.12Lf\n", (uzun) 2.718281828459,
logaritma(2.718281828459));
ekranaYaz ("kupkok (%0.12Lf) : %0.12Lf\n", (uzun) 8.0, kupkok (8));
dondur 0;
}

==========================================================================

Calistirilinca ciktisi da asagidaki gibi olmaktadir :

Administrator@DANIS_LAPTOP ~/CALISMA $ ./numerik
ln (2.718281828459) : 1.000000000000
kupkok (8.000000000000) : 2.000000000000
==========================================================================

diger kelamlara gelince, hesap makinesi boyle hesaplar sayesinde icat
oldu efendiler, biz cok gec kalmis vaziyetteyiz bazi seyler icin, bari
gelecek nesillerimize bunlari aktaralim ;)

hepinize selamlar, surc-u lisan var ise affola..

Ediz Altürk

unread,
Feb 19, 2011, 8:50:55 AM2/19/11
to tm...@googlegroups.com
Hocam söyledikleriniz çok değerli şeyler, en çok hoşuma giden de en son dile getirdiğiniz " hesap makinesi boyle hesaplar sayesinde icat oldu efendiler, biz cok gec kalmis vaziyetteyiz bazi seyler icin, bari gelecek nesillerimize bunlari aktaralim ;) " gerçeği. Maalesef biz iyi bir eğitimden geçmedik. Bizden sonraki nesillerin bizim maruz kaldığımız ezberci eğitime maruz kalmaması dileğiyle.
 
logaritma ilgili başka bir hesap şeklini ekte gönderiyorum. Buna benzer bir çok şey türetilebilir. Hatta seri açılımı olmayan algoritmalar da türetilebilir. Saygılarımla.
ddd.jpg

ozde...@gmail.com

unread,
Feb 19, 2011, 12:17:49 PM2/19/11
to TMOZ
Hocam,

Estagfirullah, surada entellektuel bir sohbet ediyoruz. Bu "degerli
kelamlar etme hali" karsilikli ;) Ezberciligin bitmesi dileginize
butun kalbimle katiliyorum.

Logaritma konusuna gelince, haklisiniz, epey birsey uretilebilir. Ben,
sizin kupkok almak icin Newton-Raphson kullandiginizi gorunce, uyumlu
olsun diye ayni yontemle cevap verdim. Ve tekrar estagfirullah,
saygilar bizden.

Yanit veren herkese tekrar cok tesekkurler. Bir baska sualde gorusmek
umidi ile.

Iyi aksamlar..

Ediz Altürk

unread,
Feb 19, 2011, 4:55:20 PM2/19/11
to tm...@googlegroups.com

Soruyu şu şekilde değitirirsek :

hesap makinesi.jpg

ozde...@gmail.com

unread,
Feb 21, 2011, 5:08:58 PM2/21/11
to TMOZ
hocam, surekli mesaideyim bu aralar. o yuzden yanit da veremiyorum
haliyle. sorunuza dair benim kafama takilan kucuk birsey var :

ters almadan kastiniz tam olarak hangi isleme goredir?

selamlar..

Ediz Altürk

unread,
Feb 21, 2011, 5:31:44 PM2/21/11
to tm...@googlegroups.com

x sayısı girildiğinde 1/x i hesaplayabiliyor hocam.

ozde...@gmail.com

unread,
Feb 22, 2011, 1:22:40 PM2/22/11
to TMOZ
Hocam,

Biliyorsunuz ki carpma, toplamanin gruplar halinde yapilmasina tekabul
ediyor. Bu soru, bizim sorunun 11'in 10. dereceden kokunu bulma hali
gibi geldi bana. Buna dayanarak, reel bir sayinin, reel kuvvetini
hesaplayan reelKuvvet fonksiyonunu yazdim :)

Ve kupkoku de kaldirdim, onun yerine reelKuvvet (x, 1.0/3.0) 'i
kullanabiliriz.

Dikkat ederseniz, asagida sadece dort temel aritmetik islemi
kullaniyoruz.

Bunlarin yaninda, sizin de degindiginiz gibi o kadar cok yontem
turetilebilir ki, bahsetmek gozumde buyuyor. En basitlerinden biri,
klasik kok_10(11) = A ==> A_uzeri_10 = 11 ==> f(A) = A_uzeri_10 -
11 = 0 denklemine ulastiktan sonra, bu fonksiyonun pozitif ve negatif
oldugu birer baslangic degeri secip, daha sonra bu degerlerin
belirledigi araligin orta noktasinda fonksiyonun alacagi degere gore,
alt-araliklardan birini secmek suretiyle aralik daraltilabilir. Bu
bizi koke goturur. En kotu ihtimalde bu isin islemsel maliyeti,
araligin boyu N olursa, O[log2(N)] mertebesinde olacaktir. Ustelik bu
sekilde temel aritmetik islemlerden bolmeye ihtiyac da duymayacagiz.

Benim esas deginmek istedigim nokta aslinda daha baska idi. Hesap
makinesi icerisinde donenlerin oyle cok da ileri tekniklere
dayanmadigini yurttaslara hatirlatmak istemistim.

Belki de lafi cok uzattim ve sizin sorunuza da tam bir yanit vermedim,
bilemiyorum :)

Neyse, son hali sudur :

=======================================================================
/*
Programi derleme komutu:
gcc numerik.c -Wall -o numerik
*/

#include <stdio.h>

#define MAXIMUM_TERIM 100
#define EPSULON 1E-9

/* < TURKCELESTIRME> */
#define gercel long double
#define tamsayi int
#define programBaslangici main
#define eger if
#define yoksa else
#define belirliDongu for
#define olduguMuddetce while
#define ekranaYaz printf
#define geriGetir return
/* </TURKCELESTIRME> */

gercel mutlakDeger (gercel x) {
eger (x >= 0)
geriGetir x;
yoksa
geriGetir -x;
}

gercel tamKuvvet (gercel x, tamsayi d) {
tamsayi i;
gercel sonuc = 1;

belirliDongu (i = 0 ; i < d ; ++i) {
sonuc *= x;
}

geriGetir sonuc;
}

gercel faktoriyel (tamsayi d) {
tamsayi i;
gercel sonuc = 1;

eger (d == 0 || d == 1)
geriGetir 1;

belirliDongu (i = 2 ; i <= d ; ++i)
sonuc *= i;

geriGetir sonuc;
}

gercel eUzeri (gercel x) {
tamsayi i;
gercel sonuc = 1;

belirliDongu (i = 1 ; i <= MAXIMUM_TERIM ; ++i) {
sonuc += tamKuvvet (x, i) / faktoriyel (i);
}

geriGetir sonuc;
}

gercel dogalLogaritma (gercel x) {
gercel sonuc = x, araDegisken = 0;

olduguMuddetce (mutlakDeger (sonuc - araDegisken) >= EPSULON) {
araDegisken = sonuc;
sonuc = araDegisken + (x / eUzeri(araDegisken)) - 1;
}

geriGetir sonuc;
}

gercel gercelKuvvet (gercel x, gercel y) {
geriGetir eUzeri (dogalLogaritma (x) * y);
}

tamsayi programBaslangici (){
ekranaYaz ("ln (%0.6Lf) : %0.6Lf\n", (gercel) 2.718281828459,
dogalLogaritma(2.718281828459));
ekranaYaz ("kupkok (%0.1Lf) : %0.6Lf\n", (gercel) 8.0, gercelKuvvet
(8, 1.0 / 3.0));
ekranaYaz ("gercelKuvvet (%0.1Lf, %0.1Lf) : %0.6Lf\n", (gercel) 11.0,
(gercel) 1.0/10.0, gercelKuvvet (11.0, 1.0/10.0));
geriGetir 0;
}

=======================================================================

Ciktisi da sudur :

Administrator@DANIS_LAPTOP ~/CALISMA
$ gcc numerik.c -Wall -o numerik

Administrator@DANIS_LAPTOP ~/CALISMA
$ ./numerik
ln (2.718282) : 1.000000
kupkok (8.0) : 2.000000
gercelKuvvet (11.0, 0.1) : 1.270982

=======================================================================

iyi aksamlar..
Reply all
Reply to author
Forward
0 new messages