二分法解决方程求解问题

  • 格式:doc
  • 大小:99.50 KB
  • 文档页数:4

下载文档原格式

  / 4
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据要求
问题中的常量:
1e–6;
问题的输入:

问题的输出:
输出方程的根
设计初始算法
1初始化数据
2使用二分法解方程。
算法细化
步骤2可以进一步细化,
将区间 分半,取中点 ,求 ,若 ,则取 ,否则作下一步。
计算 ,若 ,取 ;否则取 ,形成新的含根区间 ,且 。
对于新的含根区间重复上述步骤,直到 ,取
作为 的近似值。此时的计算误差为
流程图
实现
#include "stdio.h"
#include "math.h"
float function(float x)
{
float f;
f= x*((2*x-4)*x+3)-6;
return f;
}
void main()
{
float x1,x2,x0,fx1,fx2,fx0;
x1=10;x2=-10;
二分法解决方程求解问题
问题二分法解决方程求解问题
利用二分法,求方程 的实根,精确到两位小数。
分析二分法是一种典型的迭代问题,前面已经介绍了二分法定义,这里为了便于计算函数值 编制函数float function(float x)。在主函数中首先给出了有根区间 ,在程序中用[x1,x2]表示。由于不确定函数需要执行的次数,因此使用do-while循环,循环条件为区间中点的函数值小于 ,当函数值小于 时,近似认为当前的值为方程根。
fx1=function(x1);
fx2=function(x2);
do
{wenku.baidu.com
x0=(x1+x2)/2.0;/*计算中点*/
fx0=function(x0);/*计算中点处的函数值*/
if(fx0*fx1<0)/*计算新的区间*/
{/*区间中点的函数值与x1的函数值正负号相反*/
/*区间中点的y坐标与x1点的y坐标在不同y半轴上*/
x2=x0;/*新区间为[x1,x0]*/
fx2=fx0;
}
else
{/*区间中点的y坐标与x1点的y坐标在相同y半轴上*/
x1=x0;/*新区间为[x0,x2]*/
fx1=fx0;
}
}while(fabs(fx0)>=1e-6);
printf("The root is %f",x0);
}
测试
该程序没有输入,输出结果为方程的根,此处略。