| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 602 人关注过本帖
标题:[求助]弦切法求函数根(函数调用),这个程序结果为什么错误?
取消只看楼主 加入收藏
tanjinglei
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2007-8-15
收藏
 问题点数:0 回复次数:1 
[求助]弦切法求函数根(函数调用),这个程序结果为什么错误?
可以通过编译,我检查了很多遍,输出结果就是不对。很苦恼,请帮忙看一下哪里错了?
#include<stdio.h>
#include<math.h>
float f(float x)
{return ((x-5)*x+16)*x-80;
}
float xpoint(float x1,float x2)
{return (x1*f(x2)-x2*f(x1))/(f(x2)-f(x1)) ;
}
float root(float x1,float x2)
{float x,y,y1;
y1=f(x1);
do
{x=xpoint(x1,x2);
y=f(x);
if(y*y1>0)
{x1=x;y1=y;
}
else
{x2=x;
}
}while(fabs(y)>0.00001);
return x;
}
void main()
{ float x,x1,x2,y1,y2;
do
{ printf("Input x1,x2:");
scanf("%f,%f",&x1,&x2);
y1=f(x1);y2=f(x2);
}while(y1*y2>0);
x=root(x1,x2);
printf("The root is:%f\n",x);
getch();
return(0);
}
搜索更多相关主题的帖子: 函数 弦切法 结果 
2007-08-17 14:39
tanjinglei
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2007-8-15
收藏
得分:0 
下面是版主卧龙给的答复(我发邮件问的)问题已经解决。在此表示感谢!他的评论对初学者有一些帮助!
#include<stdio.h>
#include<conio.h> /*getch()需要此库,否则标准C编译器通不过*/
#include<math.h>
float f(float x)
{
return ((x-5)*x+16)*x-80;
}
float xpoint(float x1,float x2)
{
return (x1*f(x2)-x2*f(x1))/(f(x2)-f(x1)) ;
}
float root(float x1,float x2)
/*这个函数你写的很混乱,变量名与变量内容许多不符,因此直接对此函数进行了修改*/
{
float x;
do
{
x=xpoint(x1,x2);
if(f(x)*f(x1)>0)
x1=x;
else
x2=x;
}while(fabs(f(x))>0.01f); /*此处精度设的低一些,原因1是float精度较低,2是计算时间问题*/
return x;
}
int main(void) /*末尾既然加了return 0,那么main()函数就要声明返回值为int,否则标准C编译无法通过*/
{
float x,x1,x2,y1,y2;
do
{
printf("Input x1,x2(With ',' in middle):");
scanf("%f,%f",&x1,&x2);
y1=f(x1);y2=f(x2);
}while(y1*y2>0);
x=root(x1,x2);
printf("The root is:%f\n",x); /*求的是方程的根,原方程的根就是5,所以输入-10,100,-10,10两组数据后测试成功*/
getch();
return(0);
}
/*我已经将代码重新以缩进方式编排,请日后注意书写格式,这样有利于代码的维护和他人的阅读*/
2007-08-22 10:22
快速回复:[求助]弦切法求函数根(函数调用),这个程序结果为什么错误?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016988 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved