gpt4 book ai didi

创建一个迭代程序来估计多项式的根

转载 作者:太空宇宙 更新时间:2023-11-04 05:21:24 28 4
gpt4 key购买 nike

我正在用 c 创建一个程序,该程序假设使用 newton raphson 方法估计 10 阶多项式的根。用户输入 10 个系数,假设估计方程的根。绝对相对误差为 0.00000001,允许的最大迭代次数为 70。示例代码如下。

   n=0;
while(abserr<=0.00000001){
yold=y;
y = y-(poly(y,coefficients,11)/poly_der(y,coefficients,11));
ynew = y;
error=ynew-yold;
abserr=sqrt(error*error);

printf("iteration x%d = %.2f error =%.2f\n",n+1,y,abserr);
n++;
iteration++;

if(iteration==70){
printf("you have reached the maximum number of iterations\n");
break;}
}

函数 poly 和 poly_der 分别计算多项式及其导数的值。下面是定义。

float poly(float x, float coefficients[], int order)
{
int idx;
float total;

for (idx = 0; idx < order; idx++)
total += coefficients[idx] * pow(x, idx);
return total;
}

float poly_der(float x, float coefficients[], int order)
{
int idx;
float total;

for (idx = 0; idx < order; idx++)
total += coefficients[idx] * deri(x, idx);
return total;
}

deri 是计算多项式中某项的导数的函数。不幸的是,这个程序产生了意想不到的结果。我不知道哪里出了问题,因为它编译并运行良好。有没有另一种方法可以使用牛顿法估计根。我怎样才能改进程序以使其产生所需的结果。

最佳答案

您有几个单元化变量:total(两次)和看似iteration。如果您不初始化一个变量,它的值是未定义的,甚至可能在同一程序的运行之间不同。

polypoly_der 中进入循环之前执行 total = 0.

关于创建一个迭代程序来估计多项式的根,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5422951/

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