相关疑难解决方法(0)

如何确定我的pi计算是否准确?

我正在尝试各种方法来实现一个顺序给出pi数字的程序.我尝试了泰勒系列方法,但事实证明它非常缓慢地收敛(当我在一段时间后将我的结果与在线值进行比较时).无论如何,我正在尝试更好的算法.

因此,在编写程序时,我遇到了问题,就像所有算法一样:我怎么知道n我计算的数字是准确的?

language-agnostic algorithm math pi

765
推荐指数
5
解决办法
12万
查看次数

将弧度转换为度数的方法是什么?

我偶尔碰到这个,总是忘记怎么做.

经常出现的其中一件事.

另外,将以弧度表示的角度转换为度数又返回的公式是什么?

algorithm math trigonometry

149
推荐指数
4
解决办法
11万
查看次数

如何在C#中计算PI?

如何使用C#计算PI的值?

我以为它会通过一个递归函数,如果是这样,它会是什么样子,是否有任何数学公式支持它?

我对性能不太挑剔,主要是从学习的角度来看如何进行.

c# pi

27
推荐指数
4
解决办法
6万
查看次数

并行计算Pi的快速算法

我开始学习CUDA,我认为计算pi的长数字将是一个很好的介绍性项目.

我已经实现了简单的蒙特卡罗方法,该方法很容易并行化.我只是让每个线程在单位正方形上随机生成点,计算单位圆内有多少点,并使用缩小操作计算结果.

但这当然不是计算常数的最快算法.以前,当我在单线程CPU上进行此练习时,我使用类似Machin的公式来进行计算,以便更快地收敛.对于那些感兴趣的人,这涉及将pi表示为反复数组的总和并使用泰勒级数来评估表达式.

这样一个公式的一个例子:

在此输入图像描述

不幸的是,我发现将这种技术并行化到数千个GPU线程并不容易.问题是大多数操作只是在进行高精度数学运算,而不是对长数据向量进行浮点运算.

所以我想知道,在GPU上计算pi的任意长数字的最有效方法是什么?

algorithm parallel-processing pi cuda numerical-methods

20
推荐指数
1
解决办法
1万
查看次数

使用基本算术来计算具有任意精度的Pi

我正在寻找一个公式/算法来计算给定精度的PI~3.14.

公式/算法必须只有非常基本的算术

  • +:加法
  • - :减法
  • *:乘法
  • /:Divison

因为我想用C++实现这些操作,并希望尽可能简化实现(不允许使用bignum库).

我发现这个计算Pi的公式非常简单:

Pi/4 = 1 - 1/3 + 1/5 - 1/7 + ...  = sum( (-1)^(k+1)/(2*k-1) , k=1..inf )
Run Code Online (Sandbox Code Playgroud)

(注意,(-1)^(k + 1)可以由上述运算符容易地实现).

但是这个公式的问题是无法指定要计算的位数.换句话说,没有直接的方法来确定何时停止计算.

也许这个问题的解决方法是计算n-1th和nth计算的术语之间的差异,并将其视为当前错误.

无论如何,我正在寻找具有这些属性的公式/算法,并且还能更快地收敛到Pi

algorithm math pi

5
推荐指数
2
解决办法
9335
查看次数

4
推荐指数
1
解决办法
246
查看次数

#define应该在宏周围添加空格吗?

我正在查看http://www0.us.ioccc.org/1988/westley.c上的程序,在另一个SO答案中提到- 它应该打印pi的值,大约3.142,但是当我编译它并运行时我得到它0.250.看起来当GCC预处理器(经过测试的4.1.2和3.4.6)在代码上运行时,它会转换

#define _ -F<00||--F-OO--;
_-_-_
Run Code Online (Sandbox Code Playgroud)

-F<00||--F-OO--;- -F<00||--F-OO--;- -F<00||--F-OO--;
Run Code Online (Sandbox Code Playgroud)

但我认为,要使该计划有效,它应该是

-F<00||--F-OO--;--F<00||--F-OO--;--F<00||--F-OO--;
Run Code Online (Sandbox Code Playgroud)

即GCC在"宏观"扩张之前插入一个额外的空间.这#define是应该的方式吗?(自1988年以来有变化吗?)

编辑:此外,任何有关如何防止这些空间出现的信息将不胜感激.

c macros whitespace gcc c-preprocessor

3
推荐指数
3
解决办法
4723
查看次数

此 GolfScript 代码如何打印 1000 位 pi?

这段代码是如何工作的?

;''
6666,-2%{2+.2/@*\/10.3??2*+}*
`1000<~\;
Run Code Online (Sandbox Code Playgroud)

好像用了数组@*和循环{/**/},但是6666是什么?什么是\/

golfscript

3
推荐指数
1
解决办法
615
查看次数

π近似引起第29位数发散的误差

我有一个π近似程序,我一直在努力.它使用Rananujen-Chudnovsky系列(/sf/answers/37201/)来近似π.我测试了由我测试的不同来源的2个静态加载的π变体生成的数字.由于某种原因,我计算的经验版本始终无法使数字正确超过29位数.我已经使用了MathContext几乎所有可以使用它的东西.注意:broadcastSystemMessage()本质上是一个System.out.println()但是使格式"很好",基本上把第一个参数看作标题+:而第二个作为正文.

算法实现:

/**
     * The much faster Ramanujan-Chudnovsky algorithm.
     */
    RAMANUJAN_CHUDNOVSKY {

                private final long k1 = 545140134, k2 = 13591409, k3 = 640320,
                k4 = 100100025, k5 = 327843840, k6 = 53360;

                @Override
                public String getAlgorithmName() {
                    return "Ramanujan-Chudnovsky";
                }

                @Override
                public String getAlgorithmFormula() {
                    return "S=? from 0 to ?(-1^n *(6n)! * (k2 + n * k1) / ((n!) ^ 3 * (3n)! * 8 * k4 * k5) ^ …
Run Code Online (Sandbox Code Playgroud)

java math precision function

1
推荐指数
1
解决办法
86
查看次数

将Python MeshGrid拆分为单元格

问题陈述

需要将N维MeshGrid拆分为“多维数据集”:

例)二维情况:

(-1,1)|(0,1)|(1,1)

(-1,0)|(0,0)|(1,0)

(-1,-1)|(0,-1)|(1,-1)

将有4个单元格,每个单元格具有2 ^ D点:

我希望能够处理网格,将每个单元的坐标点放入容器中以进行进一步处理。

Cells =   [{(-1,1) (0,1)(-1,0),(0,0)},

          {(0,1),(1,1),(0,0),(1,0)},

          {(-1,0),(0,0)(-1,-1),(0,-1)}

          {(0,0),(1,0)(0,-1),(1,-1)}]
Run Code Online (Sandbox Code Playgroud)

我使用以下代码为任意尺寸d生成网格:

grid = [np.linspace(-1.0 , 1.0, num = K+1) for i in range(d)]
res_to_unpack = np.meshgrid(*grid,indexing = 'ij')
Run Code Online (Sandbox Code Playgroud)

哪个有输出:

[array([[-1., -1., -1.],
   [ 0.,  0.,  0.],
   [ 1.,  1.,  1.]]), array([[-1.,  0.,  1.],
   [-1.,  0.,  1.],
   [-1.,  0.,  1.]])]
Run Code Online (Sandbox Code Playgroud)

因此,我希望能够为给定的D维网格生成上述单元容器。在给定的K上除以2的幂。

我需要这个容器,因此对于每个像元,我需要引用所有关联的2 ^ D点并计算距原点的距离。

编辑说明

K应该将网格划分为K ** D个像元,并具有(K + 1)** D个点。每个像元应具有2 ** D个点。每个“单元”的体积为(2 ​​/ K)^ D。

所以对于K = 4,D = 2

Cells = [ …
Run Code Online (Sandbox Code Playgroud)

python simulation geometry numpy computational-geometry

1
推荐指数
1
解决办法
322
查看次数