导航:首页 > 源码编译 > 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相关的资料

热点内容
数控车床编程加工视频 浏览:245
程序员在公司受到委屈 浏览:783
玩和平精英显示连接不到服务器怎么办 浏览:705
安卓如何一步安装软件 浏览:493
云服开我的世界服务器标配 浏览:170
打印机的分配算法 浏览:634
新加坡服务器怎么进 浏览:620
上海女程序员上班被偷 浏览:377
如何添加后台app 浏览:350
中国移动机顶盒时钟服务器地址 浏览:943
如何开发app流程 浏览:427
哈尔滨编程培训课程 浏览:722
编程语言执行速度排行 浏览:174
启辰原厂导航如何装app 浏览:840
jsp项目优秀源码 浏览:757
如何查看电脑web服务器端口号 浏览:901
小区物业管理系统编程源码 浏览:96
王城战争为什么无法获取服务器列表 浏览:805
剑桥商务英语pdf 浏览:480
服务器如何不休眠 浏览:800