আমার পাইয়ের গণনাটি সঠিক কিনা তা আমি কীভাবে নির্ধারণ করব?


772

আমি এমন একটি প্রোগ্রাম বাস্তবায়নের জন্য বিভিন্ন পদ্ধতির চেষ্টা করছিলাম যা পাই এর অঙ্কগুলি ক্রমিকভাবে দেয়। আমি টেলর সিরিজ চেষ্টা করেছিলাম পদ্ধতিটি , তবে এটি অত্যন্ত ধীরে ধীরে রূপান্তরিত হয়েছিল (যখন আমি আমার ফলাফলটিকে কিছু সময়ের পরে অনলাইন মানের সাথে তুলনা করি)। যাইহোক, আমি আরও ভাল অ্যালগরিদম চেষ্টা করছি।

সুতরাং, প্রোগ্রামটি লেখার সময় আমি সমস্ত অ্যালগোরিদমের মতো একটি সমস্যার উপরে আটকে গেলাম: আমি কীভাবে জানব যে আমি যে nঅঙ্কগুলি গণনা করেছি তা সঠিক?


20
গাণিতিক সমস্যা আরও। ভাল অ্যালগরিদম ত্রুটির একটি অনুমানও দেয়।
উদাহরণস্বরূপ

35
পাই এর সাথে তুলনা করুন?
ডেভ নিউটন

55
@ ক্রিস: "আক্ষরিক সব জায়গায়"?
অরবিটে

32
আমি আপনার জন্য 3.141592653589793238462643383279502 পর্যন্ত চেক করতে পারি, এর বাইরেও আপনার এত বড় সংখ্যার দরকার নেই কেন? (এটি মহাবিশ্বের আকারের বৃত্তের সাথে পারমাণবিক স্তরের যথার্থতার মতো কিছু।)
এজে হেন্ডারসন

65
আপনি কেবল পাই দিয়ে ভাগ করবেন না এবং ফলাফল 1 আছে কিনা তা যাচাই করবেন না? (স্রেফ
ঠাট্টা করা

উত্তর:


1628

যেহেতু আমি পাই এর সর্বাধিক অঙ্কের বর্তমান বিশ্ব রেকর্ডধারক, আমি আমার দুটি সেন্ট যুক্ত করব :

আপনি যদি সত্যই কোনও নতুন বিশ্ব রেকর্ড স্থাপন না করেন, সাধারণ অনুশীলনটি কেবল জ্ঞাত মানগুলির তুলনায় গণিত সংখ্যাগুলি যাচাই করা। সুতরাং এটি যথেষ্ট সহজ।

আসলে, আমার একটি ওয়েবপৃষ্ঠা রয়েছে যা তাদের বিরুদ্ধে সংখ্যার যাচাইকরণের উদ্দেশ্যে ডিজিটের স্নিপেটগুলি তালিকাভুক্ত করে: http://www.numberworld.org/digits/Pi/


তবে আপনি যখন বিশ্ব-রেকর্ড অঞ্চলে প্রবেশ করবেন তখন এর সাথে তুলনা করার মতো কিছুই নেই।

Orতিহাসিকভাবে, গণিত অঙ্কগুলি সঠিক কিনা তা যাচাইয়ের জন্য মানক পদ্ধতির হ'ল দ্বিতীয় অ্যালগরিদম ব্যবহার করে অঙ্কগুলি পুনরায় সংশোধন করা। সুতরাং যদি হয় কোনও গণনা খারাপ হয়, শেষে অঙ্কগুলি মেলে না।

এটি সাধারণত প্রয়োজনীয় সময়ের চেয়ে দ্বিগুণেরও বেশি কাজ করে (যেহেতু দ্বিতীয় অ্যালগরিদম সাধারণত ধীর হয়)। তবে একবারে কখনই আগে-গণনা করা অঙ্কগুলি এবং একটি নতুন বিশ্ব রেকর্ডের অরক্ষিত অঞ্চলে ঘোরাঘুরি করা হলে এটি সংযুক্ত অঙ্কগুলি যাচাইয়ের একমাত্র উপায়।


যে দিনগুলিতে সুপার কম্পিউটারগুলি রেকর্ড স্থাপন করছিল, দু'টি ভিন্ন এজিএম অ্যালগরিদম সাধারণত ব্যবহৃত হত:

এটি উভয়ই O(N log(N)^2)অ্যালগরিদম যা কার্যকর করা মোটামুটি সহজ ছিল।

তবে আজকাল বিষয়গুলি কিছুটা আলাদা। সর্বশেষ তিনটি বিশ্ব রেকর্ডে, দুটি গণনা সম্পাদনের পরিবর্তে আমরা দ্রুততম পরিচিত সূত্র ( চুদনভস্কি ফর্মুলা ) ব্যবহার করে কেবল একটি গণনা সম্পাদন করেছি :

এখানে চিত্র বিবরণ লিখুন

এই অ্যালগরিদমটি প্রয়োগ করা বেশ শক্ত, তবে এটি এজিএম অ্যালগরিদমের চেয়ে অনেক দ্রুত।

তারপর আমরা ব্যবহার বাইনারি ডিজিট যাচাই অঙ্ক নিষ্কাশন জন্য BBP সূত্র

এখানে চিত্র বিবরণ লিখুন

এই সূত্রটি আপনাকে সমস্ত সংখ্যার আগে এটির গণনা ছাড়াই নির্বিচারে বাইনারি অঙ্কগুলি গণনা করতে দেয় । সুতরাং এটি শেষ কয়েকটি গণিত বাইনারি সংখ্যা যাচাই করতে ব্যবহৃত হয়। সুতরাং এটি সম্পূর্ণ গণনার চেয়ে অনেক দ্রুত faster

এর সুবিধাটি হ'ল:

  1. শুধুমাত্র একটি ব্যয়বহুল গণনা প্রয়োজন।

অসুবিধাটি হ'ল:

  1. বেইলি-বোরওইন – প্লাফের একটি বাস্তবায়ন (বিবিপি) সূত্রের প্রয়োজন।
  2. বাইনারি থেকে দশমিক এ র‌্যাডিক্স রূপান্তরটি যাচাই করার জন্য একটি অতিরিক্ত পদক্ষেপের প্রয়োজন।

শেষ কয়েকটি অঙ্কের যাচাইকরণের ফলে আমি সমস্ত অঙ্ক সঠিক কিনা তা সম্পর্কে কিছু বিশদ আমি পর্যালোচনা করেছি। তবে এটি সহজেই দেখা যায় যেহেতু কোনও গণনার ত্রুটি শেষ অঙ্কগুলিতে প্রচার করবে।


এখন এই শেষ পদক্ষেপ (রূপান্তর যাচাই করা) আসলে মোটামুটি গুরুত্বপূর্ণ। পূর্ববর্তী বিশ্ব রেকর্ডধারীদের একজন প্রকৃতপক্ষে আমাদের ডেকেছিল কারণ প্রাথমিকভাবে, আমি এটি কীভাবে কাজ করে তার পর্যাপ্ত বিবরণ দেইনি।

সুতরাং আমি আমার ব্লগ থেকে এই স্নিপেট টেনেছি:

N = # of decimal digits desired
p = 64-bit prime number

এখানে চিত্র বিবরণ লিখুন

বাইনারি পাটিগণিত ব্যবহার করে বেস 10 গাণিতিক এবং বি ব্যবহার করে গণনা একটি।

এখানে চিত্র বিবরণ লিখুন

যদি A = B, তবে "অত্যন্ত উচ্চ সম্ভাবনা" সহ, রূপান্তরটি সঠিক।


আরও পড়ার জন্য, আমার ব্লগ পোস্ট পাই দেখুন - 5 ট্রিলিয়ন সংখ্যা


15
এবং যখন নির্দিষ্ট অ্যালগরিদমটি N অঙ্কগুলিতে রূপান্তরিত হয় তখন কীভাবে তা জানার বিষয়ে অন্যান্য প্রশ্নের উত্তর দেওয়ার জন্য: এটির প্রয়োজন হয় আপনি অ্যালগরিদমের রূপান্তর আচরণটি জানেন। টেলর সিরিজ ArcTan(1)লোগারিথ্মিকভাবে রূপান্তরিত হয়। সুতরাং আপনার রূপান্তর করতে খুব দ্রুত সংখ্যক শর্তাদি দরকার - সংক্ষেপে, এটি ব্যবহার করবেন না।
রহস্যময়

21
হ্যাঁ, চুদনভস্কির সূত্রটি প্রতি পদে স্থিতিশীল 14.18 অঙ্কে রূপান্তর করে। সুতরাং আপনার কতগুলি শর্তাবলী প্রয়োজন তা জানতে আপনি মোট অঙ্কের বিভাজন করতে পারেন। (সঠিক মানটি হ'ল Log(151931373056000)/Log(10) = 14.181647462725477655...)
রহস্যময়

7
@ এরিকবি 85 কিন্ডা বিবিপি সূত্রটি (কিছু পরিমাণে) দ্বিতীয় অ্যালগরিদম হিসাবে গণনা করা হয়। তবে এটি নিজেই যথেষ্ট নয় যেহেতু এটি বেস 10 তে রূপান্তরটি যাচাই করে না তবে দ্বিতীয় গণনার প্রয়োজনীয়তা অপসারণ করতে বিবিপি + রূপান্তর চেক ব্যবহার করার ধারণাটি আমার ছিল না। এটি 2009 সালে তার বিশ্ব রেকর্ডে প্রথম ফ্যাব্রিস বেলার্ড করেছিলেন। এটি এমন একটি ভাল ধারণা ছিল যে আমরা একই কাজ করেছি এবং এটির উপরে উন্নতি করেছি।
রহস্যময়

83
@ ফানসুক ওয়াঙ্গাদু আমি কেবল নিজের জন্যই কথা বলতে পারি, তবে এখানে তা ঘটে যায়: আমি আসলে পাই নিজেই যত্ন করি নি। আমার কাছে এটি অন্য একটি সংখ্যা। মানটি নিজেই সংখ্যায় বা 10 টেরাবাইট অকেজো সংখ্যা নয়, এটি অর্জনের জন্য ব্যবহৃত পদ্ধতিগুলি । শতাব্দীর গণিত, এবং কম্পিউটার / প্রোগ্রামিং গবেষণার দশকগুলি যা এই কীর্তিতে অবদান রেখেছিল তা অন্যান্য অনেক ক্ষেত্রে প্রযোজ্য এবং এইভাবে ডিজিটের হার্ড ড্রাইভের চেয়ে অনেক বেশি মূল্যবান। এটি সহজভাবে বলতে গেলে: পাই এর অঙ্কগুলি গণনা করা একটি খেলা বেশি।
রহস্যময়

8
@ মিস্টিক্যাল, কেবলমাত্র অন্য পাই স্ট্রোফ্লো প্রশ্ন থেকে আপনার পাই গণনা সাইটটিতে হোঁচট খেয়েছে এবং আপনি যে কাজটি করেছেন তাতে গৌরব ও ঝাঁকুনির সাহায্য করতে পারেনি। লগগুলিতে হার্ডড্রাইভ ব্যর্থতা / ভূমিকম্প পছন্দ করেছে :) খাঁটি আশ্চর্যজনক!
জো

48

নিঃসন্দেহে, আপনার উদ্দেশ্যে (যা আমি মনে করি এটি কেবল একটি প্রোগ্রামিং অনুশীলন), ওয়েবে পাই এর অঙ্কগুলির তালিকাভুক্তির কোনওটির বিরুদ্ধে আপনার ফলাফলগুলি পরীক্ষা করা ভাল জিনিস।

এবং কীভাবে আমরা জানি যে সেই মানগুলি সঠিক? ঠিক আছে, আমি বলতে পারি যে কম্পিউটার-বিজ্ঞান-y উপায় রয়েছে যা প্রমাণ করার জন্য একটি অ্যালগরিদমের বাস্তবায়ন সঠিক।

আরও বাস্তবিকভাবে, যদি ভিন্ন ভিন্ন লোক পৃথক পৃথক অ্যালগরিদম ব্যবহার করে এবং তারা সকলেই এক হাজার (মিলিয়ন, যাই হোক না কেন) দশমিক স্থানগুলিতে (একটি সংখ্যা বাছাই করে) সম্মত করে, এটি আপনাকে একটি উষ্ণ अस्पष्ट অনুভূতি দেয় যে তারা ঠিকই পেয়েছে।

Orতিহাসিকভাবে, উইলিয়াম শ্যাঙ্কস 1873 সালে পাই 707 দশমিক স্থানে প্রকাশ করেছিলেন P দরিদ্র লোক, তিনি 528 তম দশমিক জায়গায় শুরু করে ভুল করেছিলেন।

খুব মজার বিষয় হল, ১৯৯৫ সালে একটি অ্যালগরিদম প্রকাশিত হয়েছিল যার মধ্যে এমন সম্পত্তি ছিল যা পূর্ববর্তী সমস্ত অঙ্কগুলি গণনা না করে সরাসরি পাই এর নবম সংখ্যা (বেস 16) গণনা করতে পারে !

পরিশেষে, আমি আশা করি আপনার প্রাথমিক অ্যালগরিদম pi/4 = 1 - 1/3 + 1/5 - 1/7 + ...প্রোগ্রামের পক্ষে এটি সহজতম ছিল না , তবে এটি করার ধীরতম উপায়গুলির মধ্যে একটি এটিও। পরীক্ষা করে দেখুন উইকিপিডিয়াতে পাই নিবন্ধ দ্রুত পন্থা জন্য।


7
এটি শেষ সূত্র (লাইবনিজ সূত্র, আইর্ক) আসলে সংযোজন এবং বিয়োগফলকে পরিবর্তিত করে।
টমাস

21

আপনি একাধিক পদ্ধতি ব্যবহার করতে পারেন এবং দেখতে পান যে তারা একই উত্তরে রূপান্তর করে। বা 'নেট থেকে কিছু ধরুন। চুদনভস্কি অ্যালগরিদম সাধারণত পাই গণনার খুব দ্রুত পদ্ধতি হিসাবে ব্যবহৃত হয়। http://www.craig-wood.com/nick/articles/pi-chudnovsky/


সম্ভাবনাগুলি হ্রাস করে তবে আমি একাধিক পদ্ধতির সমাধানের সাথে এখনও নিশ্চিত হতে পারি না, যদি উভয়ই ভুল হয়। নেট চেক করা বৈধতা ধরে রাখে না, তবে কেন নেট থেকে নিজেই মানগুলি নেওয়া হবে না। আমি বিবিপি সম্পর্কে ভাবছি কোনটি আরও উপযুক্ত?
ইশান শর্মা

7
@ ইশানশর্মা যদি দুটি অ্যালগরিদমগুলি স্বতন্ত্র থাকে তবে তুলনামূলক ফলাফলের সাথে উভয় গণনা ভুল হওয়ার সম্ভাবনা থেকে অনেকটা শূন্য। যদি কোনও গণনায় ভুল হয় তবে চূড়ান্ত ফলাফলগুলি মেলে না - তাই আপনি জানেন যে তাদের মধ্যে কমপক্ষে একটিরও ভুল।
রহস্যময়

15

টেলর সিরিজ আনুমানিক পাই এর এক উপায়। হিসাবে উল্লেখ করা হয়েছে এটি ধীরে ধীরে রূপান্তরিত হয়।

টেলর সিরিজের আংশিক যোগফলগুলি পাই এর আসল মান থেকে দূরে পরবর্তী পদের কিছু গুণকের মধ্যে দেখানো যেতে পারে।

পাই প্রায় অনুমানের অন্যান্য উপায় সর্বাধিক ত্রুটি গণনা করার জন্য একই রকম পদ্ধতি রয়েছে।

আমরা এটি জানি কারণ আমরা এটি গাণিতিকভাবে প্রমাণ করতে পারি।


Seconded। আমি মনে করি এখানে বেশিরভাগ উত্তরগুলি গাণিতিক প্রমাণের ধারণায় প্রায় যথেষ্ট পরিমাণ ওজন রাখছে না । আপনার প্রোগ্রাম পাই এর অঙ্কগুলি গণনার জন্য যাই হোক না কেন এটি আপনার প্রোগ্রামের পদ্ধতিটি পাইয়ের গণনা করে এমন সবচেয়ে দৃ conv়প্রতিজ্ঞিত গাণিতিক প্রমাণের চেয়ে আর কোনও বিশ্বাসযোগ্য হতে পারে না। যা পাইগুলি গণনা করে এমন প্রোগ্রামগুলিতে আলাদা বাধা প্রস্তাব করে: তাদের পারফরম্যান্স এবং নির্ভুলতার মতো বোঝার জন্য যতটা লক্ষ্য করা উচিত ।
লুইস ক্যাসিলাস

5

আপনি পাপ এবং কোসগুলির জন্য দ্রুত (মোটামুটি) দ্রুত রূপান্তরকারী পাওয়ার সিরিজটি ব্যবহার করে কম্পিউটিং sin(pi/2)(বা cos(pi/2)সেই বিষয়ে) চেষ্টা করতে পারেন । (আরও ভাল: x=0দ্রুত অভিবর্তনের জন্য নিকটবর্তী গণনা করতে বিভিন্ন দ্বিগুণ সূত্র ব্যবহার করুন ))

বিটিডাব্লু, এর জন্য সিরিজ ব্যবহার করা ভাল tan(x), cos(x)ব্ল্যাক বক্স হিসাবে কম্পিউটিং দিয়ে বলা (যেমন আপনি উপরের মতো টেলর সিরিজ ব্যবহার করতে পারেন) নিউটনের মাধ্যমে রুট ফাইন্ডিং করা। অবশ্যই এখানে আরও ভাল অ্যালগরিদম রয়েছে, তবে আপনি যদি অজস্র অঙ্কগুলি যাচাই করতে না চান তবে এটি যথেষ্ট হওয়া উচিত (এবং এটি বাস্তবায়ন করা এতটা জটিল নয় এবং এটি কেন কাজ করে তা বোঝার জন্য আপনার কেবল কিছুটা ক্যালকুলাস প্রয়োজন))


6
আমি পুরোপুরি দেখতে পাচ্ছি না যে এটি কীভাবে এটির সাহায্য করবে যে 1000 তম সংখ্যাটি 1 দিয়ে বন্ধ হয়ে গেছে sin(pi/2)?
ম্যাথিউ এম।

আমি পূর্বের উত্তর সম্পর্কে কী বলব তা নিশ্চিত নই, যদি না এটি রসিকতা বা কিছু না হয়। sin (pi / 2) = 1 cos (pi / 2) = 0 সুতরাং, আমি নিশ্চিত যারা দ্রুত রূপান্তরিত করতে চাই।
বেন্টফ্র্যাঙ্কলিন

15
আমি অনুমান করি যে এটি সবার কাছে পরিষ্কার নয় যে মূল্যায়ন sin(x)এবং cos(x)উচ্চ নির্ভুলতার পক্ষে পাই নিজেই গণনার চেয়ে অনেক বেশি কঠিন is
রহস্যময়

2
সুস্পষ্ট কারণে, এর জন্য আপনার পাপ (পাই / ২) ব্যবহার করা উচিত নয়। পরিবর্তে পাপ ব্যবহার করা ভাল (পাই / 6) এবং এটি ঠিক 1/2 হিসাবে প্রকাশিত হয়েছে তা নিশ্চিত করে নিন।
রবার্ট লোজনিয়াক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.