পাই এর বহু সংখ্যক ডাউনলোড কোথায় করবেন? [বন্ধ]


11

পাই এর বৃহত পরিমাণে কোথায় পাই? আমি ইতিমধ্যে পাইফাস্ট ব্যবহার করে 3.14 বিলিয়ন গণনা করেছি (ওয়ানের অধীনে ভাল কাজ করে)।

আমি ধীর ডাউনলোডের গতি সম্পর্কে চিন্তা করি না।


2
আপনার কি কিছু দূর থেকে ব্যবহারিক উদ্দেশ্যে, বা কেবল ... জন্য প্রয়োজন? আমি বিন্দুটি দেখতে পাচ্ছি না, তাই আমি কেবল কৌতুহলী।
দাড়কাক

2
@ ইডিগাস: আপনি কখনও পাই তৈরি করেন না?
নসরেডনা

শীঘ্রই আমি পাই গণনা করার জন্য অ্যালগরিদমটি খুঁজে পেতে পারি, আপনি
যতগুলি

2
এগিয়ে যান এবং আপনার প্রশ্নের একটি নতুন উত্তর গ্রহণ করার চেষ্টা করুন। মূল গৃহীত উত্তরের একটি একক লিঙ্ক ছিল যা আর বিদ্যমান নেই, তাই এটি মুছে ফেলা হয়েছে। মডারেটরদের জন্য আপনার যদি কোন প্রশ্ন থাকে তবে এগিয়ে যান এবং প্রশ্নটিকে ফ্ল্যাগ করুন।
ট্র্যাজি

উত্তর:


9

আমি জানি আপনি বলেছেন যে আপনি যত্ন নেন না , তবে আমি গুরুতরভাবে সন্দেহ করি যে আপনার সিপিইউ এটি ডাউনলোড করতে সক্ষম হওয়ার চেয়ে আপনার নেটওয়ার্ক কার্ডের তুলনায় আরও দ্রুত গণনা করতে পারে ।

শেষ অঙ্ক এবং এটি তৈরির জন্য ব্যবহৃত ক্যালকুলেটরটির বর্তমান অবস্থার ভিত্তিতে পরের অঙ্কটি ধ্রুব সময়ে পাওয়া যাবে। এটি পরবর্তী প্রধানমন্ত্রী হিসাবে সন্ধান করার মতো ক্রমশ শক্তিশালী হয় না।


হ্যাঁ, তবে এটি উত্সর্গ করতে অনেক সময় সিপিইউ হয় এবং আমি সিপিইউর সমস্ত সময়ের চেয়ে কিছু ব্যান্ডউইথকে উত্সর্গ করতে চাই।
বিজিডব্লিউ

@ জোয়েল: যাইহোক, আপনি কি এর জন্য একটি অ্যালগরিদমকে একটি পয়েন্টার দেখাতে পারেন? (হ্যাঁ, আমি জানি এটি আরও এসও সামগ্রীগুলির মতো, তবে যেহেতু আমরা এখানে আছি ...)
আর মার্টিনহো ফার্নান্দেস


গণিতটি আমার বাইরে নয়, তবে উইকিপিডিয়ায় পড়ুন এবং সিরিজের একটিতে "প্রতি শব্দে 14 টি সংখ্যা সরবরাহ করা" বলে জানা গেছে।
জোয়েল কোহোর্ন 21

দুঃখিত, ভুল লিঙ্ক: numbers.computation.free.fr/Constants/PiProgram/algo.html , এটি ফ্রেম ছিল
bgw


4

উবুন্টুতে, আপনি পারেন sudo apt-get install pi

এবং তারপর:

$ pi 100 3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067

এটি গণনার জন্য অঙ্কের সংখ্যা দিয়ে নির্বিচারে নির্ভুলতা গণনা করে।


0

আপনি যদি পাইথন এটি গণনা করতে ব্যবহার করতে চান তবে এখানে একটি অতি দ্রুত পদ্ধতি (পাইথন এবং জিপিপি 2 লাইব্রেরি ব্যবহার করে):

http://www.craig-wood.com/nick/articles/pi-chudnovsky/

একটি ছোট ফিক্স সহ কোড এখানে:

"""
Python3 program to calculate Pi using python long integers, binary
splitting and the Chudnovsky algorithm

See: http://www.craig-wood.com/nick/articles/pi-chudnovsky/ for more
info

Nick Craig-Wood <nick@craig-wood.com>
"""

import math
from gmpy2 import mpz
from time import time
import gmpy2

def pi_chudnovsky_bs(digits):
    """
    Compute int(pi * 10**digits)

    This is done using Chudnovsky's series with binary splitting
    """
    C = 640320
    C3_OVER_24 = C**3 // 24
    def bs(a, b):
        """
        Computes the terms for binary splitting the Chudnovsky infinite series

        a(a) = +/- (13591409 + 545140134*a)
        p(a) = (6*a-5)*(2*a-1)*(6*a-1)
        b(a) = 1
        q(a) = a*a*a*C3_OVER_24

        returns P(a,b), Q(a,b) and T(a,b)
        """
        if b - a == 1:
            # Directly compute P(a,a+1), Q(a,a+1) and T(a,a+1)
            if a == 0:
                Pab = Qab = mpz(1)
            else:
                Pab = mpz((6*a-5)*(2*a-1)*(6*a-1))
                Qab = mpz(a*a*a*C3_OVER_24)
            Tab = Pab * (13591409 + 545140134*a) # a(a) * p(a)
            if a & 1:
                Tab = -Tab
        else:
            # Recursively compute P(a,b), Q(a,b) and T(a,b)
            # m is the midpoint of a and b
            m = (a + b) // 2
            # Recursively calculate P(a,m), Q(a,m) and T(a,m)
            Pam, Qam, Tam = bs(a, m)
            # Recursively calculate P(m,b), Q(m,b) and T(m,b)
            Pmb, Qmb, Tmb = bs(m, b)
            # Now combine
            Pab = Pam * Pmb
            Qab = Qam * Qmb
            Tab = Qmb * Tam + Pam * Tmb
        return Pab, Qab, Tab
    # how many terms to compute
    DIGITS_PER_TERM = math.log10(C3_OVER_24/6/2/6)
    N = int(digits/DIGITS_PER_TERM + 1)
    # Calclate P(0,N) and Q(0,N)
    P, Q, T = bs(0, N)
    one_squared = mpz(10)**(2*digits)
    #sqrtC = (10005*one_squared).sqrt()
    sqrtC = gmpy2.isqrt(10005*one_squared)
    return (Q*426880*sqrtC) // T

# The last 5 digits or pi for various numbers of digits
check_digits = {
        100 : 70679,
       1000 :  1989,
      10000 : 75678,
     100000 : 24646,
    1000000 : 58151,
   10000000 : 55897,
}

if __name__ == "__main__":
    digits = 100
    pi = pi_chudnovsky_bs(digits)
    print(pi)
    #raise SystemExit
    for log10_digits in range(1,9):
        digits = 10**log10_digits
        start =time()
        pi = pi_chudnovsky_bs(digits)
        print("chudnovsky_gmpy_mpz_bs: digits",digits,"time",time()-start)
        if digits in check_digits:
            last_five_digits = pi % 100000
            if check_digits[digits] == last_five_digits:
                print("Last 5 digits %05d OK" % last_five_digits)
                open("%s_pi.txt" % log10_digits, "w").write(str(pi))
            else:
                print("Last 5 digits %05d wrong should be %05d" % (last_five_digits, check_digits[digits]))
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.