标签: computation

用Horner算法进行有效多项式评估

我有等式y = 3(x + 1)^ 2 + 5(x + 1)^ 4.

使用Horner方案,我可以用这种形式评估这个多项式,y = 8 + x(26 + x(33 + x(20 + 5x))),因此需要8次算术运算.

我也可以用这种形式评估它,y =(x + 1)^ 2*((5x + 10)x + 8),需要7次操作.

我被告知这可以在5次操作中完成,但Horner的算法应该是最有效的,它只能在7次操作中完成.我错过了什么吗?

algorithm performance computation polynomial-math

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

快速计算大浮点数就像0.4 ^ 1亿,任何想法?

嗯......我遇到了一个问题我有一个计算结果是超过10 ^ -308(双.net中的最大值)我通过一个名为BIGFLOAT的库解决了这个问题http://www.fractal- landscapes.co.uk/bigint.html,

我需要计算一些像0.4 ^(1000或100000000)这样的问题我需要花很长时间来研究并行或分布式编程但是我需要一个快速且易于理解的解决方案我将要去在接下来的6小时内完成这个项目!! :d

这是代码:

private BigFloat getBlocking(double k)
    {
        double p1, p2;
        BigFloat p3;
        p3 = new BigFloat(pp);
        p1 = this.P / (double)(k / (double)this.N);
        p2 = Math.Pow((1 - p1), 2);
        p3= new BigFloat(1-p2,pp);
        p3.Pow((int)k);
        return p3;

    }
Run Code Online (Sandbox Code Playgroud)

其中K是1000,N是1001

c# performance computation bigint bigfloat

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

bash在循环"〜$./ program> file.dat"时删除我的文件(gnuplot)

我在bash上做一些脚本用gnuplot绘制数据.但它不起作用.

我有一个程序将数据抛出到命令行.我在文件上收集数据,然后我循环这个过程以获得所需的结果.说我有这个脚本

 N = 10
 ./program.exe > data_$N.dat # Creating the data to be plotted
 for ((i = 0 ; i<1 ; i++)) do # Dummy loop to throw all together to gnuplot
  echo "set size square"
  echo "set xrange[-$N-1:$N+1]; set yrange[-$N-1:$N+1];"
  echo "plot '-' using 1:2"
  for((j = 0 ; j <= 9 ; j++)) do
   # Throwing the data to gnuplot
   echo "cat data_$N.dat" 
   # Updating the file and overwriting on it
   echo "cat data_$N.dat | xargs ./program.exe …
Run Code Online (Sandbox Code Playgroud)

bash gnuplot computation

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

Matlab:反向eps?正重的准确性?

eps返回从1.0到下一个最大双精度数的距离,因此我可以使用它来解释负权重位置上的数字值.但对于具有高正重量位置值的非常大的数字,我可以用什么来解释?

我的意思是我需要一些参考来计算在Matlab上获得的数字上的计算噪声.

matlab computation eps noise

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

postgres如何处理位数据类型?

我有一个类型为bit(2000)的列向量的表.db引擎如何处理此值的操作ANDOR?它是否只是分成32位块(或分别为64位),然后分别比较每个块,最后简单地将结果连接在一起?还是只处理两个字符串?

我的观点是预测,哪个用例会更快.我得到了一个键值数据(用户项).

userID | itemID
U1     | I1
U1     | Ix
Un     | Ij
Run Code Online (Sandbox Code Playgroud)

对于每个用户,我想计算n个最近邻居的列表(例如,使用jaccard索引).

select my_jaccard(select itemID from table where userID=U1,select itemID from table where userID=U2)
Run Code Online (Sandbox Code Playgroud)

我的解决方案 - 我将输入数据解析为用户向量表,其中向量的类型为bit(2000),在表示特定项目的位置上有1.

userID | vector
U1     | 00.......01
U1     | 0..1.....00
Un     | 00..1..1..0
Run Code Online (Sandbox Code Playgroud)

我只是在这张桌子上

select vector1&vector2
Run Code Online (Sandbox Code Playgroud)

关键是每个用户最多只有10条记录用于所有项目,即向量最多有10个有效位.我认为,解析整个bitvector只是为了找到有效位需要更多的计算资源,而不是简单地将user1的10个值与user2的10个值相互比较.

是否更快地使用长位向量,这些位向量的位数设置为1,或者更好地将原始值用作集合并将两个集合在一起?(一套最多10件)

我同时使用psql v8.2和v9.x.

postgresql vectorization data-mining computation

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

有一个快速的算法计算功能多半个?

我正在编写一个解决平面受限三体问题的程序.它的方程式如下.此函数计算位置和速度的导数并将它们写入数组.

valarray<double> force(double t, valarray<double> r)
{
    valarray<double> f(dim);
    valarray<double>r0(r-rb0);
    valarray<double>r1(r-rb1);      

    f[0]=   2 * r[1] + r[2] - (1 - mu)*r0[2]/norm3(r0) - mu*r1[2]/norm3(r1);
    f[1]= - 2 * r[0] + r[3] - mu*r0[3]/norm3(r0) - mu*r1[3]/norm3(r1);
    f[2] = r[0];
    f[3] = r[1];
    return f;
}

double norm3(valarray<double> x)
{
    return pow(x[2]*x[2]+x[3]*x[3],1.5);
}
Run Code Online (Sandbox Code Playgroud)

所以我必须计算位置矢量的平方,然后将其提高到3/2的幂.我认为这些操作占用了很大一部分计算时间.

现在我使用math.h的pow函数.还有另一种更快的算法来计算这种功率吗?我尝试使用快速反平方根(并稍后将其立方体),但它为我的目的提供了太不精确的值并且工作时间更长(可能是因为立方体).

谢谢!

c++ performance computation differential-equations

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

如何解决这个问题而不需要强加强制和/或需要大量的计算时间?

我正在尝试解决以下问题:

A store sells large individual wooden letters for signs to put on houses. 
The letters are priced individually.
The total cost of letters in LOAN is 17 dollars.
The total cost of letters in SAM is 18 dollars.
The total cost of letters in ANNA is 20 dollars.
The total cost of letters in ROLLO is 21 dollars.
The total cost of letters in DAMAGES is 30 dollars.
The total cost of letters in SALMON is 33 dollars.

How …
Run Code Online (Sandbox Code Playgroud)

python algorithm computation

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

为什么加法运算比乘法运算更快?

有人可以解释为什么加法运算比乘法运算更快?

例如,如果我们需要将25乘以50

编译器会将其转换为for循环的添加吗?

cpu cpu-architecture computation

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

为什么这个C代码输出1

有什么理由可以:

void function_foo(){
    int k[8];
    function_math(k, 8);
}

void function_math(int *k, int i){
    printf("value: %d", k[i]);
}
Run Code Online (Sandbox Code Playgroud)

主要执行function_foo();

输出将是1?矩阵k的元素没有初始化.也许在内存中有int长度的东西?

我是C概念,指针和一切的新手.

c computation

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

'腐'运算符的必要性

为什么Forth实现了rot运算符,为什么它在堆栈的三个最顶层项目上运行?

这只是为了方便还是在没有这样的指示的情况下Forth不是Turing-complete?三个数量是图灵完成的最小可行选择吗?

我可以想象一个人可以rotpick或实现roll.因此,如果这三个操作都没有,那么它仍然是图灵完成的吗?

forth stack-based computation computation-theory formal-languages

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