看到這個題目,俗了,大家都在計算圓周率。不過咱們的目的是看一下平行計算的基本流程。書上計算pi用的是精確的數值計算方法,我這裡再給出一種概率計算方法。openmp和mpi將同時亮相。
1.tan(pi/4)=1 => pi=4arctan1。知道arctan1轉化為定積分的形式是什麼吧。
利用arctan(x)的冪級數展開式,可以手工地計算pi
另外也可以採用正式手工計算pi
mpi_bcast(&n,1,mpi_int,0,mpi_comm_world); //把n廣播給本通訊環境中的所有程序
width=1.0/n;
sum=0.0;
for(i=my_rank;impi_bcast(buffer,count,datatype,root,comm)
in/out buffer 通訊訊息緩衝區的起始位址(可變)
in count 通訊訊息緩衝區中的資料個數(整型)
in datatype 通訊訊息緩衝區中的資料型別(控制代碼)
in root 傳送廣播的根的序列號(整型)
in comm 通訊子(控制代碼)
mpi_reduce(sendbuf,recvbuf,count,datatype,op,root,comm)orisun@orisun-desktop:~/program$ mpicc -o pi3 pi3.c %使用mpicc編譯in sendbuf 傳送訊息緩衝區的起始位址(可變)
out recvbuf 接收訊息緩衝區中的位址(可變,僅對於根程序)
in count 傳送訊息緩衝區中的資料個數(整型)
in datatype 傳送訊息緩衝區的元素型別(控制代碼)
in op 歸約操作符(控制代碼)
in root 根程序序列號(整型)
in comm 通訊子(控制代碼)
orisun@orisun-desktop:~/program$ mpirun -np 4 ./pi3 %指定number of processor為4
processor 0 of 4 on orisun-desktop
please give n=processor 2 of 4 on orisun-desktop
processor 1 of 4 on orisun-desktop
processor 3 of 4 on orisun-desktop
pi is 3.14159465358887635134
time: 0.012510
orisun@orisun-desktop:~/program$ mpdcleanup
時間是0.01251秒,比0.02秒明顯減少。
注意輸出中有這麼一行:please give n=processor 2 of 4 on orisun-desktop
這說明是我們不能保證**中的18行和20行的執行順序。
圓周率背誦世界記錄的趨勢
世界記錄是100000位,日本人原口證於2023年10月3日背誦圓周率π至小數點後100000位。
普通話用諧音記憶的有「山巔一寺一壺酒,爾樂苦煞吾,把酒吃,酒殺爾,殺不死,樂而樂」,就是3.1415926535897932384626。 另一諧音為:「山巔一石一壺酒,二侶舞仙舞,罷酒去舊衫,握扇把市溜」,就是3.14159265358979323846。
主要內容來自:
7 15 計算圓周率
7 15 計算圓周率 15 分 根據下面關係式,求圓周率的值,直到最後一項的值小於給定閾值。2 1 1 3 2 3 5 3 3 5 7 n 3 5 7 2 n 1 輸入格式 輸入在一行中給出小於1的閾值。輸出格式 在一行中輸出滿足閾值條件的近似圓周率,輸出到小數點後6位。輸入樣例 0.01 輸出樣例...
7 15 計算圓周率
學到翁愷老師 c語言程式設計 第八周了,來pta做點習題練習 題目是 用圓周率的關係式,求圓周率的值,直到最後一項的值小於給定閾值。2 1 3 1 3 5 2 3 5 7 3 3 5 7 2n 1 n 輸入格式 輸入在一行中給出小於1的閾值。輸出格式 在一行中輸出滿足閾值條件的近似圓周率,輸出到小數...
《計算圓周率》python
題目 歷史上有許多計算圓周率pai的公式,其中,格雷戈里和萊布尼茨發現了下面的公式 pai 4 1 1 3 1 5 1 7 這個公式簡單而優美,但美中不足,它收斂的太慢了。如果我們四捨五入保留它的兩位小數,那麼 累積1項是 4.00 累積2項是 2.67 累積3項是 3.47 請你寫出它累積100項...