Sinüs seri açılımı

Başlatan libuntu, 19 Ocak 2013 - 10:00:29

« önceki - sonraki »

0 Üyeler ve 2 Ziyaretçi konuyu incelemekte.

libuntu

Arkadaşlar pytona yeni başladım.Kendimce sorular bulup çözmeye çalışıyorum.Örneğin sinüs açılımı(sin(x) = x - x³/3! + x⁵/5! - x⁷/7! + ... )  nı anlayabileceğim bir şekilde nasıl kod haline getirebilirim. Şimdiden teşekkürler.

hckr

Bu mesele biraz kullanacağınız değişkenin duyarlılığına bağlı.Serideki elemanlar gittikçe sıfıra yaklaşıyor sıfır olmasa da ancak değişkeninizin duyarlılığı nedeniyle belli bir süre sonra elemanlar hep 0 sonucunu(ya da tam emin değilim 0.00...1) verecek ve siz de tam bu noktada fonksiyonu durdurup sonucu döndüreceksiniz.Sanırım bu işlemleri yapmak için de yinelemeli fonksiyon kullanmanız gerekli.

libuntu

Benim de öğrenmek istediğim buydu işlem sonsuza kadar devam edip sonuç veremez nihayetinde.Üs değerini belirlememiz lazım galiba.Daha fazla bilgi verecek varsa sevinirim.

hckr

Alıntı yapılan: libuntu - 19 Ocak 2013 - 10:26:18
Benim de öğrenmek istediğim buydu işlem sonsuza kadar devam edip sonuç veremez nihayetinde.Üs değerini belirlememiz lazım galiba.Daha fazla bilgi verecek varsa sevinirim.
Üs değeri değişecektir.Öyle olmaz.Söylediğim gibi işlem herhangi bir seri elemanının değeri senin kullanacağın değişken türüne bağlı olarak 0.00....1(float türünde virgülden sonra altı hane olur hatırladığım kadarıyla 0.000001) olduğunda döngüden çıkacaksın ya da yinelemeyi durduracaksın.Belli bir üs değeri olmaz mesela.Ha bir de unutma bir de ilk önce fonksiyona girilen parametreyi esas radyan ölçüsüne çevirmelisin.

alorak

İlgili soru taylor açılımı sorunudur. Ve sayısal yöntemlerle çözülebilmektedir. Sizin de dediğiniz gibi belirli bir üsden sonra daha doğrusu belirli bir duyarlılıktan sonra veya o duyarlılığa eriştiğinde işlemi durdur diyerek işlem sonlanabilir. Hazır bir python kodu ekleyeyim konu ile ilgili. 10 üzeri -10 duyarlılıkta hesaplayan bir sin fonksiyonu.

def sine(x):
    term = float(x)
    result = term # avoid 'sum' which is the name of a builtin function
    u = - term * term # this is minus (x squared)
    n = 0 # use an integer for integer data
    while abs(term) > 1.0e-10:
        n += 2
        term *= u / (n * (n+1))
        result += term
       
    return result
   
print "sonuc"
a=15 #hesaplanacak değer
b=a*3.14/180
print sine(b)
özgürlük için