導航:首頁 > 源碼編譯 > pi演算法c

pi演算法c

發布時間:2022-09-18 02:26:04

A. 用C語言求π

你的程序是模擬大量隨機事件來求pi的近似值。有兩點給你糾正的:

1、

x=(double)(rand()%10000);

y=(double)(rand()%10000);

x/、y都是小於10000的數表示(x,y)這個隨機點是落在了長10000,寬10000的矩形也就是正方形中,所以if(x*x+y*y<=10000*1000)表示這個點落在了以10000為半徑的圓內,所以,你的

if(x*x+y*y<=1)應該改為if(x*x+y*y<=10000000)。

2、

pi=(double)(a/MAX)*4.0;

pi=(double)(a/MAX)*4.0;由於MAX是10000,a<=9999,所以a永遠小於MAX所以(a/MAX)永遠等於0,所以你求出的pi值永遠等於0。pi=(double)(a/MAX)*4.0等價於pi=(double)(0)*4.0等價於pi=0;在c語言或者c++中兩個int型的變數相除結果還是int型的,如果分母大於分子結果則為0,java中好像也是的。但是分子分母中只要有一者是double或floati型的,那個整型會自動向高精度的數據類型轉換。所以你的pi=(double)(a/MAX)*4.0;應更正為pi=a/(double)MAX *4.0;或者

pi=(double)a/MAX*4/0;或者把double替換為float也可以滴

在我的機器上最終模擬出的pi的近似值是

B. 計算Pi值,用C語言,程序

樓主這個方法應當用隨機數來做。
思想:
在0到1之間取兩個隨機數,如果這兩個隨機數(x,y)在四分之一圓內,就加一。
最後用落在圓內的點數,除以總點數,就是PI了。
#include
<stdio.h>
#include
<conio.h>
#include
<stdlib.h>
#include
<time.h>
#define
N
300000
main()
{
long
i,n=0;
float
x,y,pi;
srand(time(NULL));
for
(i=0;i<N;i++)
{
x=1.0*rand()/RAND_MAX;
y=1.0*rand()/RAND_MAX;
if
(x*x+y*y<1)
n++;
}
pi=4.0*n/N;
printf("pi=%f\n",pi);
getch();
}

C. C語言編程計算出π的值 最好有三種方法!! 急求 好人一生平安啊

我只說說π是怎麼近似計算出來的,大一應該學過高數,可以知道:tan π/ 4 =1,從而π=4*arctan1,應用泰勒公式將arctan(x)展開,就可以得到

把這展開式展開,直到最後一項的絕對值小於1e-6為止。


下面是C語言遞歸實現:

#include<stdio.h>

#include<math.h>

void main()

{

float fuc(int n);

float s,pi;

for(int i=1;i<10000;i++)

{s=1.0/(2*i-1);

if(s<1e-6)

break;}

pi=fuc(i);

pi=pi*4;

printf ("pi=%10.6f ",pi);

}


float fuc(int n)

{

float pi;

if(n==1) pi=1;

else if(n%2==0)

pi=fuc(n-1)+(-1.0)/(2*n-1);

else pi=f(n-1)+1.0/(2*n-1);

return(pi);

}

程序運行結果pi=3.141498.


希望能明白明白π的實現原理,增進你的理解。

D. 那個計算π的C語言程序是怎麼寫的啊

1、PI的值可以通過以下公式計算出來,

π/4=1-1/3+1/5-1/7……

編寫循環程序,當這種計算方法所得到的偏差小於0.000001時停止計算,並輸出PI的值及所需要計算的項數。


2、常式:

doubles=0;//面積
doublepi=0;//圓周率
doubled=200;//直徑(值越大圓周率越精確)
doubler=d/2;//半徑
for(inti=1;i<=d;i++){
for(intj=1;j<=d;j++){
if((i-r)*(i-r)+(j-r)*(j-r)<=r*r){
s++;
}
}
}
pi=s/(r*r);

E. C語言求 π

C 語言是一種編譯型語言, 每個程式執行時都從 main 函數開始執行, 所以每個 C 語言程序都必須包含一個且只能包含一個 main 函數, C 語言的語句每條語句以 ";" 作為結束符, 程式的寫法可以不拘泥與格式, 但是要想寫出好程式, 需要盡可能的每條語句分開, 寫出自己和別人都能看懂的程式, C 語言本身提供了一些標準的函數庫, 用來簡化 C 程序的編寫, 例如: stdio.h, 是 Standard Input Output (標准輸入輸出庫), math.h 是 Math (數學函數庫), 函數庫所有定義的函數都會在 head (頭文件) ".h" 中聲明, 在使用標准頭文件時, 要使用 C 語言編譯器預處理關鍵字 #include (包含), C 語言的程序會在編譯自動加入根據頭文件的聲明連接你在編程中使用的庫函數, C 語言提供五種不同類型的數據類型, int (integter 整數型), float (浮點型), char (character 字元型), void (無值型), bool (boolean 布爾型), 提供基本的判斷語句 if ... else, 循環結構 for, while, do.. while 和多分枝結構 switch, C 語言還提供兩種寫給別人幫助理解方式注釋方式, 第一種是使用 // (雙斜杠) 後面加註釋內容, 注釋內容僅限於本行的結束, 第二種是 /* ... */ (省略號中間是注釋的內容) (單斜杠加星號開始, 星號加單斜杠結束) 的塊注釋.

以上的給你大概了解, 下面是對你的程式的等價變化, 和注釋

#include <stdio.h> // 包含標注輸入輸出頭文件
#include <math.h> // 包含數學函數頭文件

int main() // main 函數, 是函數執行進入點
{
int s = 1; // 定義一個整數型變數 s, 並賦值初始值 1

float n, t, pi; // 定義三個浮點型變數 n, t, pi, 多個相同的定義可以寫在一起用逗號作為分隔符

t = 1; // 給浮點型變數 t 賦值初始值 1

pi = 0; // 給浮點型變數 pi 賦值初始值 0

n = 1.0; // 給浮點型變數 n 賦值初始值 1

/* 下面的 fabs(t) 是調用 math 函數庫裡面的去絕對值函數, 這個值和1e-6 (表示1.0乘以10負六次方), 表示一個很小的值, 浮點數比較時, 和很小的數相比, 表示近似等於 0, while 是循環語句, 是下面的大括弧裡面的是否執行的條件

*/

while (fabs(t) < 1e-6)

{

pi = pi+t; // 將 pi 原來值加上 t, 所得值再賦值給 pi, 第一次執行, t 就是 1

n = n+2; // 和上面的相同的含義

s = -s; // 取 s 原值的相反數, 再賦值給 s

t = s / n; // t 取新的值, 作為下次循環的判斷條件, 給下一次次執行 t 作預備

}

pi = pi * 4; // 以上計算的是π/4的值, 乘以4的得到π

printf("pi=%10.6f\n", pi); // 調用標准輸出函數printf, 參數"pi=%10.6f\n" 是格式化輸出的格式
return 0; // 表示程序執行成功

}

以上只是大概的解釋, 在看看書, 了解吧

F. c語言計算PI

數值概率演算法具有隨機性建議不用

#include<string.h>

#include<stdio.h>

#include<stdlib.h>

doublegetPI(intn);

voidmain()

{

doublePI;

intn;

printf(" ");

scanf("%d",&n);

PI=getPI(n);

printf("ThesimilarvalueofPIis %f ",PI);

getchar();

}

doublegetPI(intn)

{

intinCircle=0;

floatx,y;

intcount=n;

while(count)

{

x=random(101);

y=random(101);

if(x*x+y*y<=10000)

inCircle++;

count--;

}

return4.0*inCircle/n;

}

贈送割圓術解法

#include<string.h>

#include<stdio.h>

#include<math.h>

doublegetPI(intn);

voidmain()

{

intn;

doublePI;

printf("Pleaseenteraccuracy ");

scanf("%d",&n);

PI=getPI(n);

printf("ThesimilarvalueofPIis %f ",PI);

getchar();

}

doublegetPI(intn)

{

intdiv,i=4;

doubleb=sqrt(2)/2.0;

doublec=0.0;

for(div=0;div<n;div++)

{

b=sqrt(2.0-2.0*sqrt(1.0-b*b))*0.5;

i=i*2;

}

c=b*i;

returnc;

}

G. 求π(Pi)的得數計算公式

計算公式如下:

π=sin(180°÷n)×n公式源於圓形——正無窮邊形,當此公式n=∞時π的值誤差率為0,π=sin(180°÷1×10¹⁴)×10¹⁴=3.1415926535898。

1、圓周率(Pi)為圓的周長與直徑的比值,一般用希臘字母π表示,一個在數學及物理學中普遍存在的數學常數。

2、π也等於圓形之面積與半徑平方之比,是精確計算圓周長、圓面積、球體積等幾何形狀的關鍵值。 在分析學里,π可以嚴格地定義為滿足sin x = 0的最小正實數x。


(7)pi演算法c擴展閱讀:

一、圓的第一定義

1、在同一平面內到定點的距離等於定長的點的集合叫做圓(circle)。這個定點叫做圓的圓心。

2、圓形一周的長度,就是圓的周長。能夠重合的兩個圓叫等圓,等圓有無數條對稱軸。

3、圓是一個正n邊形(n為無限大的正整數),邊長無限接近0但永遠無法等於0。

二、圓的第二定義:

1、平面內一動點到兩定點的距離之比(或距離的平方之比),等於一個不為1的常數,則此動點的軌跡是圓。

2、證明:點坐標為(x1,y1)與(x2,y2),動點為(x,y),距離比為k,由兩點距離公式。滿足方程(x-x1)2 + (y-y1)2 = k2×[ (x-x2)2 + (y-y2)2] 當k不為1時,整理得到一個圓的方程。

閱讀全文

與pi演算法c相關的資料

熱點內容
web應用安全pdf 瀏覽:47
linuxintel網卡驅動下載 瀏覽:217
資源解壓後怎麼刪除 瀏覽:868
編程之美15種演算法 瀏覽:147
java的圖形用戶界面設計 瀏覽:769
算數游戲源碼 瀏覽:999
壓縮機工作聲音判斷 瀏覽:985
事業單位程序員 瀏覽:506
易語言取相似顏色源碼 瀏覽:773
pyodbclinux 瀏覽:585
vivo為什麼把伺服器沉到深海 瀏覽:460
程序員能為電商做什麼 瀏覽:401
騰訊直充qq號加密碼 瀏覽:140
qt搭建msvc編譯器環境 瀏覽:338
單片機晶振壞了會不會工作不穩定 瀏覽:770
天天影迷APP顯示連接伺服器失敗怎麼回事 瀏覽:961
鋼鐵命令同盟第七關怎麼過 瀏覽:7
android底部控制項彈出 瀏覽:43
為程序員而自豪 瀏覽:583
可以進行c語言編譯的文件名 瀏覽:384