gpt4 book ai didi

c++ - 为什么这两个版本的代码给出不同的输出

转载 作者:行者123 更新时间:2023-11-27 22:37:21 24 4
gpt4 key购买 nike

我有同一个多项式的两个版本,但它们给出了明显不同的输出,我不确定为什么。

// Example program
#include <iostream>
#include <string>
#include <math.h>

float v1(float alpha)
{
alpha = 1.0-alpha;
alpha = 1.0-pow(alpha, 5.0)*6.0 - 15.0*pow(alpha,4.0) +10.0*pow(alpha,3.0);
return alpha;
}

float v2(float alpha)
{
alpha = 1.0-alpha;
alpha = 1.0-alpha*alpha*alpha*(alpha*((alpha*6.0) -15.0) + 10.0);
return alpha;
}

int main()
{
for(float t=0; t<=1; t+=0.1)
{
float a1 = v1(t);
float a2 = v2(t);
std::cout<< a1 << ", " << a2 << std::endl;
}

}

输出:

-10, 0
-5.09444, 0.00856005
-1.99008, 0.05792
-0.17992, 0.16308
0.74944, 0.31744
1.125, 0.5
1.19456, 0.68256
1.13392, 0.83692
1.05408, 0.94208
1.00844, 0.99144

最佳答案

v2 中的表达式在数学上等价于

1.0 - (6*pow(alpha, 5) - 15*pow(alpha, 4) + 10*pow(alpha, 3))

注意额外的一组括号。你的两个函数are not equivalent出于同样的原因,1 - x^2 + x 不等同于 1 - (x^2 + x)

如果您在 v1 中的表达式周围添加一组额外的括号,您将得到 same result来自这两个函数(除了一些小的浮点舍入错误)。

关于c++ - 为什么这两个版本的代码给出不同的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52616718/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com