Pi sayısına yaklaşma sorusu

def m(i):
    result=0
    for i in range(1,i):
        if(i%2==0):
            result-=(1/(2*i-1))
        else:
            result+=(1/(2*i-1))
    return 4*result
print(m(101))

ekran çıktısı gibi olmuyor sadece yaklaşan pi değeri yazıyor bu kodla

Ben şu şekilde bir yol izledim, ama değerler sizin paylaştığınız değerlerden biraz farklı.

def m(i):
    result = 0
    for j in range(i):
        if i == 1:
            result += ((-1) ** (1 + 1)) / ((2 * 1) - 1)
        else:
            if j != 0:
                result += ((-1) ** (j + 1)) / ((2 * j) - 1)
    return 4 * result


print("i", " " * 14, "m(i)\n")
for k in range(1000):
    if k != 0:
        if k == 1:
            print(k, " " * 7, m(k))
        elif (k - 1) % 100 == 0:
            print(k, " " * 5, m(k))

# Ekran Çıktısı:
i                m(i)

1         4.0
101       3.1315929035585537
201       3.136592684838816
301       3.1382593295155914
401       3.1390926574960143
501       3.139592655589785
601       3.139925988080531
701       3.1401640828900845
801       3.1403426540780757
901       3.140481542821618
1 Beğeni

hmm teşşekkürler ben halletmeye çalışıyım gerisini , bendede benzeri çıktı ama snn kod daha düzgün hizalı

Az önce pi’ye yaklaşmak için i değerini 100000 olarak aldım ve i=99901 durumunda m(i) 3.1415826435797087 olarak hesaplandı. Yani sayı giderek pi’ye yaklaşıyor ama paylaştığınız metindeki gibi i=901 durumundaki sonucu elde etmek için i değerini daha da arttırmak gerekiyor.

1 Beğeni

anladım teşekkür edrim . dediğiniz mantıklı metinde hata olablr. m(i) tam 4.0 ın üstünde yapabilirmiyiz peki

Biraz daha açabilir misiniz?

Paylaştığım kodlarda i=101’den sonra bir artış söz konusu. Yani değer pi’ye artarak yaklaşıyor. Sizin paylaştığınız ekran görüntüsünde ise i=101’den sonra bir azalış söz konusu. Yani değer pi’ye azalarak yaklaşıyor.

image

işaretlediğim m(i) 4.0000 ın sütununda hizalıya onu demek istedim. sizinkinde biraz sağa kayma vardı,ondan dedim

Hmmm, evet o sorun değil. 15. satırdaki şu kodları:

print("i", " " * 14, "m(i)\n")

aşağıdaki gibi değiştirin, tamamdır.

print("i", " " * 7, "m(i)\n")

:+1: eyvallah teşekkür edrm

Rica ederim, bunlar ödev mi?

kendi topladığım sorular kendimi geliştirmeye çalışıyorum, yeni başladımda pythona

1 Beğeni

Güzel. Şayet ödev deseydiniz, hiç de iyi bir şey yapmadığımı söyleyecektim. :wink:

1 Beğeni