在 C++ 中执行无穷求和的有效方法
Efficient way to perform summation to infinite in c++
我是 c++ 的新手,我正在尝试实现一个在 k=1
和 infinite
之间求和的函数:
你知道如何在 C++ 中有效地实现无限求和吗?
Do you know how summation to infinite can be implemented efficiently in c++?
这种事情,做 X 直到无穷大以达到任何有限的结果可以用任何语言来完成。这是不可能的,没有糖衣的说法,但是对于数字计算机来说就是这样。
不过,您可能会做出近似值。例如,sin x
只是一个无穷大的表达式。但是为了计算 sin x
我们不会 运行 循环直到无穷大,将进行近似表示这些项之后的项非常小,它们在误差范围内。因此被忽略了。
你必须做一个类似的方法。假设 t-t1
总是正数,就会出现 k
,其中 (k.pi/2)^2
项太大以至于 1/e^(...)
会很小,下面说 0.00001
并说您希望您的结果在 +- 0.001
的误差范围内,因此如果该系列是收敛的(查找收敛系列),那么您可能会忽略这些术语。本质上,首先是笔和纸的问题,然后您可以将其转化为您的代码。
从数学上讲,求和为无穷大是完全有效的(在某些情况下)。形式上,你写的总和与取从 1 到 n 的所有 k 的总和的极限相同,因为 n 趋于无穷大。
但是,计算机无法通过蛮力计算这样的总和;无限多次迭代循环将花费无限时间。除了取近似值之外,您也许可以为该总和找到一个封闭形式的方程。不幸的是,这不仅仅是一个简单的几何级数,因此可能无法找到封闭形式的解决方案,而且几乎可以肯定 non-trivial.
我是 c++ 的新手,我正在尝试实现一个在 k=1
和 infinite
之间求和的函数:
你知道如何在 C++ 中有效地实现无限求和吗?
Do you know how summation to infinite can be implemented efficiently in c++?
这种事情,做 X 直到无穷大以达到任何有限的结果可以用任何语言来完成。这是不可能的,没有糖衣的说法,但是对于数字计算机来说就是这样。
不过,您可能会做出近似值。例如,sin x
只是一个无穷大的表达式。但是为了计算 sin x
我们不会 运行 循环直到无穷大,将进行近似表示这些项之后的项非常小,它们在误差范围内。因此被忽略了。
你必须做一个类似的方法。假设 t-t1
总是正数,就会出现 k
,其中 (k.pi/2)^2
项太大以至于 1/e^(...)
会很小,下面说 0.00001
并说您希望您的结果在 +- 0.001
的误差范围内,因此如果该系列是收敛的(查找收敛系列),那么您可能会忽略这些术语。本质上,首先是笔和纸的问题,然后您可以将其转化为您的代码。
从数学上讲,求和为无穷大是完全有效的(在某些情况下)。形式上,你写的总和与取从 1 到 n 的所有 k 的总和的极限相同,因为 n 趋于无穷大。
但是,计算机无法通过蛮力计算这样的总和;无限多次迭代循环将花费无限时间。除了取近似值之外,您也许可以为该总和找到一个封闭形式的方程。不幸的是,这不仅仅是一个简单的几何级数,因此可能无法找到封闭形式的解决方案,而且几乎可以肯定 non-trivial.