1. 程式人生 > >作業系統上機作業--根據萊布尼茲級數計算PI(1)(多執行緒)

作業系統上機作業--根據萊布尼茲級數計算PI(1)(多執行緒)

pi1.c: 使用2個執行緒根據萊布尼茲級數計算PI

•   萊布尼茲級數公式: 1 - 1/3 + 1/5 - 1/7 + 1/9 - ... = PI/4
•   主執行緒建立1個輔助執行緒
•   主執行緒計算級數的前半部分
•   輔助執行緒計算級數的後半部分
•   主執行緒等待輔助執行緒執行結束後,將前半部分和後半部分相加

實現思路:
用全域性變數儲存主執行緒和副執行緒中的計算結果,然後將結果相加*4即得到結果。

#include<stdio.h>
#include<unistd.h>
#include<pthread.h>

#define NUMBER 200
double PI; double worker_output; double master_output; void *worker(void *arg){ int i; double j; worker_output=0; for(i=1;i<=NUMBER;i++){ j=i; if(i%2==0) worker_output-=1/(2*j-1); else worker_output+=1
/(2*j-1); } return NULL; } void master(){ int i=NUMBER+1; double j; master_output=0; for(;i<=2*NUMBER;i++){ j=i; if(i%2==0) master_output-=1/(2*j-1); else master_output+=1
/(2*j-1); } } int main(){ pthread_t worker_tid; pthread_create(&worker_tid,NULL,worker,NULL); master(); pthread_join(worker_tid,NULL); PI=(worker_output+master_output)*4; printf("PI: %f\n",PI); return 0; }

這裡寫圖片描述
歡迎留言交流。。。

相關推薦

作業系統上機作業--根據級數計算PI1執行

pi1.c: 使用2個執行緒根據萊布尼茲級數計算PI • 萊布尼茲級數公式: 1 - 1/3 + 1/5 - 1/7 + 1/9 - ... = PI/4 • 主執行緒建立1個輔助執行緒

作業系統上機作業--根據級數計算PI2執行

pi2.c: 使用N個執行緒根據萊布尼茲級數計算PI • 與上一題類似,但本題更加通用化,能適應N個核心,需要使用執行緒引數來實現 • 主執行緒建立N個輔助執行緒 • 每個輔助執行緒計

蔡高廳老師 - 高等數學閱讀筆記 - 14 定積分 - 積分中值定理 -牛頓公式-58 ~ 64

定積分的概念: 思想方法如下: 數學語言表達 然矩形代替曲線 1 連續函式 2 有界,有限的間斷點 3 如果是單調,有界的   60 定積分的

0082-三角形

題目 萊布尼茲三角形 難度級別:B; 執行時間限制:1000ms; 執行空間限制:51200KB; 程式碼長度限制:2000000B 試題描述 如下圖

魯賓遜與修改版

魯賓遜與萊布尼茲(修改版)     上世紀60年代,魯賓遜深入研讀萊布尼茲數學手稿(未發表的),有許多發現與心得。     魯賓遜高度讚美萊布尼茲關於實無窮小微積分的創新思想,為此,魯賓遜特推崇他為現代非標準分析的先行者。 &n

魯賓遜與

  魯賓遜與萊布尼茲     上世紀60年代,魯賓遜深入研讀萊布尼茲數學手稿,有許多發現。     魯賓遜高度讚美萊布尼茲關於實無窮小的創新思想,推崇他為現代非標準分析的先行者。    

三角形(C++)

lse inf names ont 行數 輸出 .com namespace com 【問題描述】 如下圖所示的三角形,請編程輸出圖中排在第 n 行從左邊數第 m 個位置上的數。 【代碼展示】

寫一下級數

背景:看《邏輯的引擎》這本書的時候,看到天才萊布尼茨的發現,本來是對電腦計算速度好奇的,試了下運算時間蠻長,就是了100,效果跟書本不一樣。記錄一下。 萊布尼茨級數:π/4 = 1-1/3+1/5-1/7+1/9… 越趨近極限,就越接近π/4的值。 packag

微分意義,積分意義,牛頓-茨公式

d是微分的符號,沒有什麼實際的意義,微分就是無限的分割;“dx”就是把x軸上點無限的分割,“dy”就是把y軸無限的分割,“d2x”就是吧直線2x無限的分割,“d(x^2+1)”我想你應該知道了。 簡單的理解就是化曲線為直線; 無限的分割時間,化變速為恆速; 還有很多

高階導數的運演算法則 與 茨公式

多個函式的線性組合的運演算法則: ∀m,n∈N,m,n≥1,[∑i=1mcifi(x)](n)=∑i=1mcif(n)i(x) 證明 n=1 時顯然成立。 設 n 時成立。則 n+1 時:

牛頓-茨公式求積分例題

1 求∫1011+x2dx 已知ddxarctanx=11+x2 所以結果=arctan1−arctan0=π4 注:如何求ddxarctanx y=arctanx; ∴x=tany; ∴

“一個千古絕倫的大智者”

►哥特弗裡德·威廉·萊布尼茨(Gottfried Wilhelm Leibniz)編者按:萊布尼

高等數學——手撕牛頓茨公式

本文始發於個人公眾號:TechFlow,原創不易,求個關注 今天是高等數學專題的第13篇文章,我們來看看定積分究竟應該怎麼計算。 定積分的實際意義 通過之前的文章,我們基本上熟悉了定積分這個概念和它的一些簡單性質,今天終於到了正題,我們要試著來算一算這個積分了。 我們先來回憶一下對定積分的直觀感受,它可

2018/9/27 離散大作業 根據輸入命題輸出真值表及主析取合取正規化

zl老師佈置的作業,網上程式碼都好長,自己寫一個才200行 自己寫就是很開心,抄程式碼有什麼意思呢 恕我直言,無腦copy程式碼就像偷人孩子的人販子 課內作業 /* 符號註記: + * - -> <->

作業系統上機題目執行2

主執行緒建立4個子執行緒T1、T2、T3、T4, 主執行緒在4個子執行緒退出後,才退出 執行緒T1、T2、T3、T4的執行時程式碼如下: #include <unistd.h> // sleep函式宣告在該標頭檔案中 void *T1_e

博客作業1,2,4,6,7

課本 發展 精確 必須 國足 font 是不是 log 動手 此作業的要求參見[https://edu.cnblogs.com/campus/nenu/2018fall/homework/2101] 1. 建博客(1分) 在 cnblogs.com (博客園)建賬號(1分)

javaleetcode717 1位元與2位元字元 即根據不同的長度對字元進行解碼1-bit and 2-bit Characters

題目描述: 有兩種特殊字元。第一種字元可以用一位元0來表示。第二種字元可以用兩位元(10 或 11)來表示。 現給一個由若干位元組成的字串。問最後一個字元是否必定為一個一位元字元。給定的字串總是由0結束。 示例1: 輸入: bits = [1, 0, 0]

python學習第34天之udp的套接字、套接字的執行socketserver模組的使用、作業系統理論

一、udp的套接字 Udp協議又叫資料報協議, 特點:每次傳送資料自帶報頭,即使傳送為0也會自帶報頭,所以不會報錯;一端發一次資料。另一端也只能收一次資料 服務端: import socket server=socket.socket(socket.AF_INET,socket.SOCK_DG

作業系統,核心定時器:使用“訊號”建立一種使用者空間機制來測量一個執行程式的執行時間。

      核心是一個作業系統的核心。它負責管理系統的程序、記憶體、裝置驅動程式、檔案和網路系統,決定著系統的效能和穩定性。 定時器是Linux提供的一種定時服務的機制,它在某個特定的時間喚醒某個程序來進行工作。核心在時鐘中斷髮生後檢測各定時器是否到期,在li

【OS大作業】用執行統計txt檔案中字元個數Java實現

問題描述 給定一個txt檔案,利用不同個數的執行緒查詢檔案中某字元的個數,探究執行緒個數與查詢時間的關係。 本作業程式碼使用JAVA實現,版本為10.0.2,使用的IDE為Eclipse4.9.0. 結果測試所用的txt檔案內容為英文,編碼格式為UTF-8。 原始碼 第一版程式碼:(