Bagaimana saya bisa menghasilkan Pi ke sejumlah tempat desimal dari skrip?

9

Adakah yang punya skrip yang bisa saya jalankan dengan mudah seperti:

sh generatepi.sh 10000

di mana 10.000 adalah jumlah tempat desimal π (Pi) yang dihasilkan.

LanceBaynes
sumber
7
Untuk tujuan apa? Jika Anda hanya membutuhkan digit: wolframalpha.com/input/?i=N%5BPi%2C+10000%5D
cYrus

Jawaban:

19

Dengan asumsi Anda memiliki utilitas bc(Kalkulator Dasar) pada sistem Anda, Anda dapat menggunakan perintah berikut dan sedikit matematika lama yang baik untuk menghitung π hingga 10.000 tempat desimal:

echo "scale=10000; 4*a(1)" | bc -l

Ini mungkin akan memakan waktu cukup lama untuk menyelesaikan 10.000 tempat desimal.

Melanggar perintah ...

  • scale = 10000 - ini menentukan jumlah tempat desimal yang digunakan untuk hasilnya
  • 4 * a (1) - ini mengembalikan arctangent dari 1 [yang sama dengan 45 °: 45 x (π / 180), atau ¼π] kemudian dikalikan dengan 4 untuk mendapatkan π.
  • bc -l - pipa string fungsi lengkap ke utilitas bc , -l menentukan untuk memuat perpustakaan matematika standar yang diperlukan untuk fungsi arctangent, a () .

Untuk membungkus ini dalam skrip seperti yang Anda tentukan dalam pertanyaan Anda, gunakan editor favorit Anda untuk menulis yang berikut dan simpan sebagai generatepi.sh:

#!/bin/bash
echo "scale=$1; 4*a(1)" | bc -l

Kemudian dari penggunaan terminal chmod +x generatepi.shdari folder Anda menyimpan file, yang akan memberikan hak eksekusi skrip. Sintaksnya kemudian generatepi.sh [number of places]. Catatan ini menggunakan cara penanganan parameter yang sangat mendasar dan tidak akan memvalidasi input, jadi pastikan Anda hanya memberikan bilangan bulat positif sebagai parameter.

Kebanyakan sistem Linux seharusnya memiliki bctetapi Anda mungkin perlu menginstalnya dalam beberapa kasus (misalnya apt-get di Ubuntu, emerge di Gentoo dll). Ada juga port bc untuk Windows .

Taji
sumber
ada kalkulator pi asli untuk windows - overclocker menggunakannya untuk pengujian stabilitas
Journeyman Geek
~ 3 menit di mesin saya, cukup berguna dalam skrip. +1 meskipun untuk digunakan bc.
cYrus
Saya pikir "b" dalam "bc" singkatan dari "Berkeley" daripada "Bench".
user1364368
Terima kasih. Diperbarui ke 'kalkulator dasar' berdasarkan en.wikipedia.org/wiki/Bc_(programming_language)
Gaff