新手求帮助,我们要求用c语言写一个计算n次多项式的程序,但运行结果不准啊,求大佬看看有什么问题

lanshanstar 2018-08-30 01:59:38
#include <stdio.h>
#include <math.h>

const double eps = 1e-20;


int main()
{


int n, y, k, i;
double m,p,u;
double j,sum;
printf("The function is like y = [(arr[n])x^n] + [(arr[n-1])x^(n-1)] + [(arr[n-2])x^(n-2)] + ... + [(arr[1])x] + arr[0]\n");
printf("Input n :");
scanf("%d",&n);
i = n;
double arr[n];
for(i=n; i>=0; i--)
{
printf("Input the arr[%d]: ",i);
scanf("%lf", &arr[i]);
}

double f(double x)
{

y = 0;
for(k=n; k>=0; k--)
{
y = y + arr[k] * pow(x,k);
}
return y;
}

printf("\nEnter the range[m,p]:");
scanf("%lf%lf",&m,&p);
if(f(m)*f(p)<0)
{
while(fabs(m-p)>eps)
{
i=(m+p)/2.0;
sum=f(i);
printf("[%lf %lf]\n",m,p);
if(fabs(sum)<eps)
{
break;
}
else
{if(f(i)*f(m)<0)
{
p=i;
}
else if(f(i)*f(p)<0)
{
m=i;
}
}
}
j=(m+p)/2;
printf("\nThe nearest result is:x=%lf\n",j);
}

else
{
printf("Wrong");
}
return 0;
}
...全文
191 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2018-08-30
  • 打赏
  • 举报
回复
lanshanstar 2018-08-30
  • 打赏
  • 举报
回复
@赵4老师 真的太感谢了,真的是大佬啊
赵4老师 2018-08-30
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <math.h>
const double eps = 1e-20;
double arr[10];
int n;
int n, k, i;
double m,p,u,y;
double j,sum,v;
double f(double x) {
y = 0.0;
for (k=n; k>=0; k--) {
y = y + arr[k] * pow(x,(double)k);
}
return y;
}
int main() {
printf("The function is like y = [(arr[n])x^n] + [(arr[n-1])x^(n-1)] + [(arr[n-2])x^(n-2)] + ... + [(arr[1])x] + arr[0]\n");
printf("Input n :");
scanf("%d",&n);
if (n<1 || 10<=n) {
printf("1<=n<10\n");
return 1;
}
i = n;
for (i=n; i>=0; i--) {
printf("Input the arr[%d]: ",i);
scanf("%lf", &arr[i]);
}


printf("\nEnter the range[m,p]:");
scanf("%lf%lf",&m,&p);
if (f(m)*f(p)<0.0) {
while (fabs(m-p)>eps) {
v=(m+p)/2.0;
sum=f(v);
printf("[%lf %lf]\n",m,p);
if (fabs(sum)<eps) {
break;
} else {
if(f(v)*f(m)<0) {
p=v;
} else if(f(v)*f(p)<0) {
m=v;
}
}
}
j=(m+p)/2.0;
printf("\nThe nearest result is:x=%lf\n",j);
} else {
printf("Wrong");
}
return 0;
}

lanshanstar 2018-08-30
  • 打赏
  • 举报
回复
多项式求零点,比如(x+1)(x+2)(x+3) 这个函数, 我输入范围[-2.5,-4],理论上的输出结果是-3,但它最后的输出结果是-3.25

15,440

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧