gpt4 book ai didi

c - 实现麦克劳林级数但得到错误的答案

转载 作者:行者123 更新时间:2023-11-30 14:43:27 25 4
gpt4 key购买 nike

我正在尝试仅为该系列中的前 7 个函数实现 Mauriac 级数。我有一个数组,其中包含 (0) 最多 5 个导数的所有值。但为了简单地实现我的目标,我需要执行以下数学函数:

f(x)=2+0-13x^2+26*x^3+(-299/12)*(x^4)+13*x^5

所以如果:f(2)= 175.3

但是,代码给了我 f(2)= 275.0

#include <stdio.h>
#include <stdlib.h>

int main()
{
int x,i;

double term [5] = {2,0,-13,26,-299,13};
double answer;

printf("\n\nEnter the value of x in the series : ");
scanf("%d",&x);

term [2]*=(x*x);
term [3]*=(x*x*x);
term [4]*=(x*x*x*x)/12;
term [5]*=(x*x*x*x*x);

for (i=1; i <6; i++)
{
answer = answer + term[i];
}

printf("f(%d)= %lf",x,answer);

return 0;
}

最佳答案

这里有几个问题。您似乎没有完全理解数组在 C 中的工作原理。声明 term[5] 是一个包含 5 个元素的数组。该数组的第一个索引是 term[0],因为数组始终从 0 开始。然后按如下方式进行。

  • 术语[0]
  • 术语[1]
  • 术语[2]
  • 术语[3]
  • 术语[4]

当您声明 term 数组时,您所做的就是尝试将 6 个值放入具有 5 个索引的数组中。这不起作用,因此您必须执行 term[6] 来创建 6 个索引,而实际索引 6 超出范围。我注意到的另一件事是,当您计算数组的每个元素时,您需要手动计算指数((x*x*x) 等)。你真的应该使用pow() function from math.h 。该函数来自 C Math 库。要编译包含 C 数学库的程序,您必须将其指定给链接器。

不要像这样编译,

$ cc program.c -o program

您可以像这样编译,以包含数学库。请注意-lm

$ cc program.c -lm -o program

我已经重建了您的程序以使用 pow() 函数。我还将 x 设为 double ,因为我们将其赋予 pow(),并将 printf 和 scanf 语句中的 %d 更改为正确的 %f。我还为 answer 指定了初始值 0,因为正如其他人指出的那样,您使用的是未初始化的变量。

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main(void) {
double x;
int i;

double term[6] = {2,0,-13,26,-299,13};
double answer = 0;

printf("\n\nEnter the value of x in the series : ");
scanf("%f",&x);

term[2] *= pow(x, 2);
term[3] *= pow(x, 3);
term[4] *= pow(x, 4)/12;
term[5] *= pow(x, 5);

for (i = 0; i < 6; i++) {
answer = answer + term[i];
}

printf("f(%f) = %f \n", x, answer);
return 0;
}

我对此进行了测试,在提示符下输入数字 2 会产生正确的结果:f(2.00000) = 175.33333

关于c - 实现麦克劳林级数但得到错误的答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53917695/

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