计算π的算法

C++ 实现简略计算π的程序 课余时间,也由于工作需要 所以就写了这么一个小程序 用到的数学方法主要是 pi/4 = 1 - 1/3 + 1/5 - 1/7 …… #include <iostream> using namespace std; int main() { double key = 1; int count = 0; for (long long i = 3; i < 19; i += 2) { if(count % 2 == 0) { 阅读详情

#include <string.h>

/*
	PI/2 = 1 + (1/3) + (1/3)*(2/5) + (1/3)*(2/5)*(3/7) + (1/3)*(2/5)*(3/7)*(4/9) + ...
	double x=2, z=2;
	int a=1, b=3;
	while(z>1e-15)
	{
		z = z*a/b;
		x += z;
		a++;
		b+=2;
	}
*/

#define PI_WEI_COUNT	1000
#define	ARRSIZE			(PI_WEI_COUNT + (PI_WEI_COUNT/100))

void CalPI(void)
{
	char x[ARRSIZE], z[ARRSIZE];
	int a=1, b=3, c, d, Run=1, Cnt=0;
	int i;

	memset(x,0,ARRSIZE);
	memset(z,0,ARRSIZE);

	x[1] = 2;
	z[1] = 2;

	while(Run && (++Cnt < 200000000)) {
		/* z*=a; */
		d = 0;
		for(i=ARRSIZE-1; i>0; i--) {
			c = z[i]*a + d;
			z[i] = c % 10;
			d = c / 10;
		}
		
		/* z/=b; */
		d = 0;
		for(i=0; i<ARRSIZE; i++) {
			c = z[i]+d*10;
			z[i] = c / b;
			d = c % b;
		}

		/* x+=z; */
		Run = 0;
		for(i=ARRSIZE-1; i>0; i--) {
			c = x[i] + z[i];
			x[i] = c%10;
			x[i-1] += c/10;
			Run |= z[i];
		}

		a++;
		b+=2;
	}

	printf("Cal %d times:", Cnt);
	for(i = 0; i < PI_WEI_COUNT; i++) {
		x[i] += '0';
	}
	x[i] = '\0';
	printf("%s", x);
	printf("\n");
}

 

0042算法笔记——【随机化算法】计算π值和计算定积分 1、计算π值     问题描述     设有一半径为r的圆及其外切四边形。向该正方形随机地投掷n个点。设落入圆内的点数为k。由于所投入的点在正方形上均匀分布,因而所投入的点落入圆内的概率为           。所以当n足够大时,k与n之比就逼近这一概率。从而。     程序具体代码如下: //随机化算法 用随机投点法计算π值 #include "stdafx.h" #incl 阅读详情

相关推荐

【探索圆周率π的计算:从古典算法到现代代码实现】

介绍了多种计算圆周率的算法,包括古典的割圆术,分析算法中的莱布尼茨公式、马青公式、高斯 - 勒让德算法,概率算法中的蒙特卡洛方法,分别阐述其原理,并给出对应的 Matlab 和 Python 实现代码。随后着重讲解拉马努金计算圆周率的公式,同样展示了用 Matlab 和 Python 实现该公式计算的代码,通过循环计算累加和来获取圆周率近似值,还可调整计算项数控制精度。

youngerwang的博客 2752

【C语言程序设计】C语言求圆周率π(三种方法)

题目一: 利用公式①计求π的近似值,要求累加到最后一项小于10^(-6)为止。 程序代码: #include <stdio.h> #include <stdlib.h> #include <math.h> int main(){ float s=1; float pi=0; float i=1.0; float n=1.0; while(fabs(i)>=1e-6){ ...

HUYA69的博客 3万+

高精度计算π的万位实现:从算法选型到GMP库实战

高精度计算是计算机科学中处理超越常规浮点数精度范围数值运算的核心领域,其原理依赖于大数运算与自定义精度数据结构。这项技术的价值在于为科学计算、密码学、物理仿真等需要极高数值精度的场景提供了基础支撑。在算法层面,高斯-勒让德迭代算法因其二次收敛特性,成为实现高效高精度计算的典型选择,尤其适用于π值计算等数学常数求解。通过结合GMP(GNU多精度运算库)这一经过深度优化的工具,开发者能够在工程实践中有效管理计算精度与性能平衡,确保万位级π值结果的正确性与稳定性。本文聚焦于利用高斯-勒让德算法与GMP库,详细解析

weixin_33713350的博客 455

编程计算Pi(π)的N种方法

一个看起来很牛的计算Pi的程序: int a=10000,b,c=2800,d,e,f[2801],g;   main() { for(;b-c;)     f[b++]=a/5; for(;d=0,g=c*2;c -=14,printf("%.4d",e+d/a),e=d%a)       for(b=c; d+=f[b]*a,f[b]=d%--g,d/=g--,--b; d*

s170262941的专栏 2万+

Python实战:用Chudnovsky算法计算π的1000位(附完整代码与优化技巧)

本文详细介绍了如何使用Python实现Chudnovsky算法计算π的1000位,包括算法原理、基础实现、性能优化和工业级应用。通过阶乘记忆化、多核并行和GMP库优化,将计算时间从分钟级缩短至秒级,适合数学计算和算法优化的开发者参考。

weixin_28731231的博客 401

JavaScript实现计算π值算法(附完整源码)

JavaScript实现计算π值算法(附完整源码)π.js完整源代码 π.js完整源代码 const circleRadius = 1; function getNGonSideLength(sideLength, splitCounter) { if (splitCounter <= 0) { return sideLength; } const halfSide = sideLength / 2; // Liu Hui used the Gou Gu (Pythagor

希望我的博客,能帮上你解决学习中工作中所遇到的问题 1508

如何计算Pi?python

首先,它定义了一个名为`calculate_pi`的函数,该函数使用莱布尼茨级数来计算π的近似值。然后,它定义了一些辅助函数,如`factorial`、`power`和`sin`,这些函数用于计算泰勒级数展开式中的项和其他数学运算。接下来,它定义了一个名为`polygon_approximation`的函数,该函数计算正n边形的边长。最后,它定义了一个名为`estimate_pi`的函数,该函数通过不断增加正多边形的边数,直到相邻边长的差小于给定的精度阈值,来估算π的值。# 计算正n边形的边长。

2401_86075647的博客 879

JavaScript实现计算π值算法

对于计算π值,我们可以在一个正方形区域内生成大量的随机点,然后计算这些点在一个以正方形为边长的圆内部的比例。由于正方形区域和圆的面积之间的关系已知,我们可以通过比例来计算π的近似值。蒙特卡罗方法是一个非常有趣且灵活的数值计算技术,不仅可以用于计算π值,还可以应用于其他计算问题。通过编写这样的算法,我们可以更好地理解数学问题,并且在实际应用中发挥作用。在本文中,我们将使用JavaScript编写一个简单的算法来计算π的近似值。最后,我们根据计算出的比例得到π的近似值,并将其返回。在代码的最后,我们调用了。

CsCufft的博客 370

蒙特卡罗算法计算圆周率π

(1)均匀撒点:在C语言中可以使用随机函数来实现,产生【0,1】之间的随机坐标【x,y】。 (2)区域判断:图中阴影部分的特点是距离坐标原点的距离小于等于1,这样,可以通过计算判断x2+y2<=1来实现。 #include<stdio.h> #include<time.h> #include<stdlib.h> double MontePI(int n) ...

qq_43404969的博客 951

SPL06气压温度传感器SPI驱动与补偿算法详解

气压传感器与温度传感器是嵌入式环境感知系统的核心组件,其测量精度高度依赖于MEMS芯片的校准参数与非线性补偿机制。SPL06作为集成式高精度数字传感器,采用24位Σ-Δ ADC与片内补偿引擎,需结合唯一出厂校准系数(即‘芯片指纹’)进行多阶数学修正,才能将原始ADC值转化为符合计量要求的帕斯卡(Pa)与摄氏度(℃)物理量。该过程涵盖SPI通信协议解析、寄存器时序控制、大端数据拼接、二进制补码处理及浮点/定点混合运算等典型嵌入式工程实践。广泛应用于无人机高度计、智能穿戴海拔监测与IoT气象终端中。

weixin_34640289的博客 143

汇总药用数据库(Pubchem,bingdingDB,Chembl,ExcapeDB)数据

记载一下如何汇总4大数据库的数据

recher_He1107的博客 3394

使用BBP算法计算π的任意位数

使用BBP算法计算π

穿梭的编织者 1666

华为MA5626 ONU开局配置实战:从零到业务就绪的完整命令手册

本文详细介绍了华为MA5626 ONU设备的开局配置全流程,包括物理连接、命令行初始化、业务VLAN划分、PoE功能配置及故障排查。通过实战命令手册,帮助网络工程师快速完成从设备上电到业务就绪的完整配置,特别适合FTTB场景部署。

weixin_26934905的博客 561

BBP算法:直接计算π的任意位。

BBP算法(Bailey–Borwein–Plouffe算法)是一种用于计算圆周率π的任意十六进制位或二进制位的算法。该算法由David H. Bailey、Peter Borwein和Simon Plouffe于1995年提出。BBP算法的独特之处在于它能够直接计算π的任意位,而不需要计算前面的所有位,这在数学和计算机科学领域具有重要价值。

qvU_kbt7的博客 603

数字IC后端面试题目汇总含解析,ICer上岸必备!

今天IC修真院为大家带来了数字IC后端的面试题目,希望大家能够用得上。

coachip的博客 2447

STM32开发工具链选型:MDK、CubeIDE、VSCode与IAR深度对比

嵌入式开发工具链是连接软件逻辑与硬件行为的核心枢纽,其选择直接影响代码可靠性、调试效率与量产稳定性。从编译器优化能力、调试协议支持(如ARM CoreSight、SWO)、硬件抽象层级(寄存器/LL/HAL)到跨平台构建能力,不同工具在实时性保障、静态分析合规性(如MISRA-C)、WCET可预测性及生态开放度上存在本质差异。尤其在STM32平台,Keil MDK凭借深度调试能力成为HardFault定位首选,STM32CubeIDE依托图形化配置加速外设初始化,而VSCode+PlatformIO则以LS

weixin_42602368的博客 429

【算法】高精度计算π(pi)值

😀大家好,我是白晨,一个不是很能熬夜😫,但是也想日更的人✈。如果喜欢这篇文章,点个赞👍,关注一下👀白晨吧!你的支持就是我最大的动力!💪💪💪 文章目录📔前言📕1.公式选择📗2.实现难点解析📘3.代码实现📙后记 📔前言 π 一直是一个备受数学界青睐的数字。从古至今,无数的学者都在努力探求着 π 精确值。

白晨的博客 1万+

激光打标轴坐标计算分析

‌:基于坐标差的平方和开方运算,勾股定理将几何关系转化为代数计算,从而实现了从坐标到距离的精确转换‌12。直角三角形的应用从上图可以看到A,B,P三个点连起来就是一个直角三角形了。用勾股定理计算距离 C#有相关的方法直接传参数就可以了。很方便。

StevenChen的博客 311

java并行计算π,快速算法并行计算Pi

I am starting to learn CUDA and I think calculating long digits of pi would be a nice, introductory project.I have already implemented the simple Monte Carlo method which is easily parallelize-able. I...

weixin_29533233的博客 260

18、偏微分方程数值计算:粘性不可压缩流与电磁学的有限元方法

本文系统介绍了偏微分方程数值计算在粘性不可压缩流与电磁学中的应用,重点探讨了稳态与非稳态Navier-Stokes问题的混合有限元方法及求解技术,包括弱形式构建、半离散与时间离散格式、牛顿迭代法等。同时,详细阐述了电磁学中Maxwell方程的有限元与时域有限差分法(FDTD)求解方法,涵盖时间谐波与时域波方程、边界条件处理、稳定性分析与误差估计。结合MATLAB代码示例和实际案例,展示了速度场、压力、电场与磁场的数值模拟过程,并通过流程图与表格对比了两类问题的方法原理、应用场景与收敛性特性。最后展望了多物理

lemon的博客 88

KingSCADA3.8保姆级安装教程

大家好,我是雷工!最近开始学习KingSCADA,今天这篇详细记录安装KingSCADA3.8的过程。首先下载需要的安装版本,此处以从官网下载的最新版本KingSCADA3.8为例,双击:Setup.exe;

做有价值的事,积累有价值的笔记! 1万+

Java算法:计算π(圆周率)

3世纪中期,魏晋时期的数学家刘徽首创割圆术 利用对圆形的无线分割,使计算结果更接近π 在圆形中做一个正六边形,此六边形的每个定点都在圆上。正六边形中心和圆心重合。正六边形可以看作是是六个正三角形的组合。 因此,我们可以得到第一个公式 : 如下图所示 根据平方差公式可得: 所以 得到递归函数公式: 我们可以设 半径 r = 1,如此则有: 代码如下: public void...

雲驊 的博客 3544

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

计算π的1000位小数:用BigInt实现Gibbon‘s Spigot算法

想要在Swift中计算圆周率π的1000位小数吗?通过使用强大的Swift大整数库BigInt,我们可以轻松实现这一数学壮举。BigInt是一个纯Swift实现的高精度整数库,支持任意精度算术运算,是进行大数计算的理想选择。本文将向您展示如何使用Gibbon's Spigot算法和BigInt库来计算π的前1000位小数,即使您是Swift新手也能轻松掌握。 ## 🔍 什么是BigInt库?

gitblog_00096的博客 383

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

高斯-勒让德算法:用AGM迭代把π计算到百万位

在数值计算领域,π的精度突破往往象征着算法与底层算力的双重跃迁。从蒙特卡洛随机撒点到无穷级数累加,传统方法受限于线性收敛速度,难以支撑百万位级别的工程需求。高斯-勒让德算法基于算术-几何平均(AGM)迭代,以平方收敛的独特性质,让有效数字每轮近乎翻倍,从双精度起步仅需约二十次迭代即可触及百万位。这一过程不仅关乎π本身,更是一次高精度浮点库、大数乘法与内存生命周期管理的系统性实践。通过mpmath快速原型验证,再切换到gmpy2库利用FFT加速大数运算,可将计算耗时从十几分钟压缩至数秒。该算法适用于性能基准测

weixin_33326218的博客 266

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

有趣的算法题: 给定随机数生成函数,怎么计算π?

有趣的算法题: 给定随机数生成函数,怎么计算π?

nuannuan_lay的博客 209
上一篇: 重温唐诗二首
下一篇: Window 命令提示符不支持UTF-16代码页
二进制脑袋
博客等级 码龄25年 25粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值