标签: numerics

std :: valarray的未来是什么样的?

直到最近,我还没有跟上C++ 11的讨论.当我试图更熟悉它和正在处理的问题时,我遇到了这个网站似乎主张弃用或删除,std::valarray因为大多数人都在使用Blitz ++.我想我可能是那里仍然使用的少数几个人之一std::valarray(是的,我知道这个班有一个肮脏的过去,一个失去光泽的礼物,一个可疑的未来).但是,它做了我需要的,也许更重要的是,它是标准的一部分(现在任何方式).

除了上面的一个网站,我已经能够找到很少关于std::valarray新标准实际发生的事情,并且希望SO上的某些人能够提供一些洞察力和/或参考资料,包括谷歌,维基百科和即使是C++标准委员会网站到目前为止也没有让我失望.谢谢.

c++ numerics c++11

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

非常庞大的数据集的平均值和标准差

我想知道是否有算法计算未绑定数据集的平均值和标准差.

例如,我正在监测一个测量值,比如电流.我想得到所有历史数据的平均值.每当有新值出现时,更新均值和stdev?因为数据太大而无法存储,我希望它可以在不存储数据的情况下即时更新均值和stdev.

即使数据被存储,标准方式(d1 + ... + dn)/ n也不起作用,总和将吹灭数据表示.

我通过求和(d1/n + d2/n + ... d3/n),如果n为hugh,则误差太大并累积.此外,在这种情况下,n是未绑定的.

数据的数量肯定是未绑定的,无论何时,它都需要更新值.

有人知道是否有算法吗?

algorithm statistics mean large-data numerics

21
推荐指数
2
解决办法
3万
查看次数

取C中两个有符号数的平均值

让我们说我们有x和y,两者都是C中的有符号整数,我们如何找到两者之间最准确的平均值?

我更喜欢一种不利用任何机器/编译器/工具链特定工作的解决方案.

我提出的最好(a / 2) + (b / 2) + !!(a % 2) * !!(b %2)的解决方案是:有更准确的解决方案吗?快点?更简单?

如果我们知道一个是否比另一个先验大?

谢谢.

d


编者注:请注意,当输入值接近C int类型的最大绝对边界时,OP需要不受整数溢出影响的答案.这在原始问题中没有说明,但在给出答案时很重要.

c optimization average numerics

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

在Haskell中做有效的数字

我被这篇名为" 只有快速语言很有趣 "的帖子所启发,以便在Haskell中查看他建议的问题(从向量中总结几百万个数字)并与他的结果进行比较.

我是一名Haskell新手,所以我真的不知道如何正确计时或如何有效地做到这一点,我对此问题的第一次尝试如下.请注意,我不是在向量中使用随机数,因为我不确定如何以一种好的方式做.我也打印东西,以确保完整的评估.

import System.TimeIt

import Data.Vector as V

vector :: IO (Vector Int)
vector = do
  let vec = V.replicate 3000000 10
  print $ V.length vec
  return vec

sumit :: IO ()
sumit = do
  vec <- vector
  print $ V.sum vec

time = timeIt sumit
Run Code Online (Sandbox Code Playgroud)

在GHCI中加载并运行time告诉我,运行300万个数字需要大约0.22秒,而3000万个数字需要2.69秒.

与博客作者在郁郁葱葱中的0.02s和0.18s的结果相比,情况要糟糕得多,这使我相信这可以以更好的方式完成.

注意:上面的代码需要运行包TimeIt.cabal install timeit会得到它.

optimization haskell numerics

11
推荐指数
2
解决办法
1176
查看次数

在Python中比较数字的一般方法

我一直在寻找一种比较Python中两个数字的通用方法.特别是,我想弄清楚它们是否相同.

Python中的数字类型是:

int, long, float & complex
Run Code Online (Sandbox Code Playgroud)

例如,我可以简单地说:2比较2个整数(一种数字):

a == b
Run Code Online (Sandbox Code Playgroud)

对于浮子,由于舍入精度,我们必须更加小心,但我可以在一定容差范围内对它们进行比较.

我们得到2个一般数字ab:我们如何比较它们?我正在考虑将两者都转换为复数(如果类型是,那么它将具有0个虚部int)并在该域中进行比较?

这个问题比直接比较浮点数更普遍.当然,它与这个问题有关,但它不一样.

python floating-point int type-conversion numerics

9
推荐指数
2
解决办法
1048
查看次数

Mathematica的库函数功能

我正在尝试使用CUSP作为Mathematica的外部线性求解器来使用GPU的强大功能.这是CUSP项目网页.我想问一下如何将CUSP与Mathematica集成.我相信你们中的许多人都有兴趣讨论这个问题.我认为编写输入矩阵然后将其提供给CUSP程序是不可取的.使用Mathematica LibrarayFunctionLoad将是一种更好的方法,可以将输入矩阵传输到基于GPU的求解器.直接从Mathematica提供矩阵和右侧矩阵的方法是什么?

这是一些CUSP代码片段.

#include <cusp/hyb_matrix.h>
#include <cusp/io/matrix_market.h>
#include <cusp/krylov/cg.h>

int main(void)
{
// create an empty sparse matrix structure (HYB format)
cusp::hyb_matrix<int, float, cusp::device_memory> A;

// load a matrix stored in MatrixMarket format
cusp::io::read_matrix_market_file(A, "5pt_10x10.mtx");

// allocate storage for solution (x) and right hand side (b)
cusp::array1d<float, cusp::device_memory> x(A.num_rows, 0);
cusp::array1d<float, cusp::device_memory> b(A.num_rows, 1);

// solve the linear system A * x = b with the Conjugate Gradient method
cusp::krylov::cg(A, x, b);

return 0;
}
Run Code Online (Sandbox Code Playgroud)

这个问题让我们有可能讨论Mathematica 8的编译功能.也可以调用MMA的mathlink接口主题.我希望这里的人们发现这个问题值得思考,有趣,值得思考. …

cuda gpu wolfram-mathematica linear-algebra numerics

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

System.Numerics 的矩阵乘法值完全错误

尽管System.Numerics.Vectors可以通过 NuGet 获得的库有自己的视图和投影矩阵函数,但我想自己实现它并只使用向量和矩阵结构。

不幸的是,当我的目标向量与(正确的)视图矩阵相乘时,我已经得到了完全错误的结果。我正在使用右手坐标系和以下说明

var cameraVector4 = new Vector4(0, 4, 2, 1);
var focusVector4 = new Vector4(0, 0, 0, 1);
var vMatrix4 = LookAt(cameraVector4, focusVector4, new Vector4(0, 1.0f, 0, 0));
var targetVector4 = new Vector4(1, 0, -1, 1);
var targetViewVector4 = Vector4.Transform(targetVector4, vMatrix4);
Run Code Online (Sandbox Code Playgroud)

具有以下功能

private static Matrix4x4 LookAt(Vector4 cameraVector4, Vector4 focusVector4, Vector4 upVector4) {
    if (cameraVector4 == focusVector4) return Matrix4x4.Identity;
    var z = Vector4.Normalize(cameraVector4 - focusVector4);
    var x = Vector4.Normalize(upVector4.Cross(z));
    var y = Vector4.Normalize(z.Cross(x));

    return new Matrix4x4(
        x.X, …
Run Code Online (Sandbox Code Playgroud)

c# matrix numerics system.numerics

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

在具有固定常数离散的给定网格上与c ++进行数值积分

我有以下问题:

我的c ++代码可以计算两个函数

F1(I1,I2,I3,I4)

F2(J1,J2)

对于{i1,i2,i3,i4}的每一组,我得到一些f1值,对于{j1,j2}的每一组,我得到一些f2的值.

集合{i1,i2,i3,i4}和{j1,j2}在FIXED网格上给出,具有一些恒定的离散化步骤"h".

我需要用数学语言计算积分F3(x1,x3)=积分[f1(x1,x2,x3,x4)*f2(x3,x4)dx3 dx4]

简单求和不够好,因为f2有很多跳跃.

是否有一些c ++库可以进行这种集成?或者一些易于实现的算法(我对c ++并不擅长)

非常感谢

c++ algorithm math integration numerics

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

有没有好的 GLSL 哈希函数?

所以我仍然为我对这个问题的古老评论而获得赞成:这个 GLSL rand() one-liner 的起源是什么?

这让我开始思考,一个好的 GLSL 哈希函数应该是什么样的?它有明显的用例,例如 Perlin 噪声。我会在一个好的实现中寻找一些属性。

  • 在不同精度(中、高)下稳定。这可以是可配置的。
  • 应该可以在 ES2 中使用,所以它不能使用整数支持
  • 仅 ALU,无纹理
  • 不是在寻找加密质量,而是寻找大周期和“感知”随机性
  • 理想情况下应该在最低规格的 ES2 实现上产生相同的结果

实际上,我认为大多数人只是通过将 x,y 输入与一些素数相乘,相加,再次相乘,然后在具有最近采样的随机数平铺纹理中查找结果来混合它们。

所以这个问题不是关于寻找“答案”而是关于是否有一个好的方法来做到这一点的好奇心。我也想知道关于为什么不可能的争论。

math gpu glsl numerics

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

使用Math.Net Numerics对大x值进行错误的线性插值

我正在尝试使用Math.NET Numerics来插入DateTime - Value系列.我开始使用线性插值,但是我得到了一些看起来非常不合适的结果.

运行此测试:

public class script{

public void check_numerics()
  {
    var ticks = DateTime.Now.Ticks;
    Console.WriteLine("Ticks: " + ticks);
    var xValues = new double[] { ticks, ticks + 1000, ticks + 2000, ticks + 3000, ticks + 4000, ticks + 5000 };
    var yValues = new double[] {0, 1, 2, 3, 4, 5};
    var spline = Interpolate.LinearBetweenPoints(xValues, yValues);
    var ticks2 = ticks;
    for (int i = 0; i < 10; i++)
    {
      ticks2 += 500;
      Console.WriteLine(spline.Interpolate(ticks2));
    }
  }
} …
Run Code Online (Sandbox Code Playgroud)

c# linear-interpolation numerics math.net

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

浮点数的二分查找/二分法

即使它可以是任意大,使用二分查找也很容易找到一个整数:首先猜测数量级,然后继续划分区间。 这个答案描述了如何找到任意有理数。

设置好场景后,我的问题是类似的:我们如何猜测 IEEE 754 浮点数?假设它不是 NaN,但其他一切都是公平的游戏。对于每次猜测,您的程序都会被告知所讨论的数字是更高、相等还是更低。尽量减少最坏情况下所需的猜测次数。

(这不是一项家庭作业。不过,如果结果证明有一个有趣的答案,而不仅仅是“通过大量的特殊情况处理来解决浮点数值困难。”,我可能会将其作为一项作业。)

编辑:如果我更善于搜索,我可以找到答案——但这只有在你已经知道重新解释int有效的情况下才有效(有某些警告)。所以就留下这个吧。感谢哈罗德的精彩回答!

algorithm floating-point binary-search numerics

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

SAS 和 R 中的回归不匹配

我正在尝试用 R 重写我当前的 SAS 程序,并且我正在检查输出以确保它匹配。我从一个非常基本的回归开始,我什至无法匹配它。我还仔细检查了 Excel 中的结果,它与 R 输出匹配。

我的回归 SAS 代码非常基本:

Proc Reg data=[data set];
 model DepVar = Reg1 Reg2 Reg3 Reg4 Reg5 Reg6;
run;
Run Code Online (Sandbox Code Playgroud)

以下是输出摘要:

VAR         SAS         R           Excel
DepVar       0.01748     0.01748     0.01748 
Reg1        (0.24815)   (0.24809)   (0.24809)
Reg2         1.19502     1.19481     1.19481 
Reg3        (0.33029)   (0.33012)   (0.33012)
Reg4         0.80502     0.80507     0.80507 
Reg5        (1.39338)   (1.39345)   (1.39345)
Reg6        (0.13034)   (0.13051)   (0.13051)
Run Code Online (Sandbox Code Playgroud)

这是数据(只有 60 个数据点):

OBS DepVar  Reg1    Reg2    Reg3    Reg4    Reg5    Reg6
1   -0.0444 -0.0298 -0.0165 0.0266  0.032   0.0019  -0.0035
2   -0.0491 …
Run Code Online (Sandbox Code Playgroud)

regression r sas numerics

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