当前位置: 代码迷 >> C语言 >> 这个程序怎么实现
  详细解决方案

这个程序怎么实现

热度:405   发布时间:2007-06-08 19:39:33.0
这个程序怎么实现

如何用二分法实现求解一个方程的根

搜索更多相关的解决方案: 如何  二分法  

----------------解决方案--------------------------------------------------------

我是个菜鸟
请问你说的二分法是个什么方法啊


----------------解决方案--------------------------------------------------------
先对给定的范围(定义域,假设为x1,x2)做判断F(x1),F(x2),F((x1+x2)/2);使得x更新为(x1+x2)/2,条件就是两个函数同号.
再假定F(x1)*F((x1+x2)/2)>0;(x2,同理)
则做x1=(x1+x2)/2
一直做下去直到所得到的函数值F((x1+x2)/2)很接近0;

还有弦截法,主要是看两点形成的直线与曲线的点做更新,还有做切线的交点.原理是一样的,使用的是若F(x1)*F(x2)<0,则在(x1,x2)之间一定有一个零点.
----------------解决方案--------------------------------------------------------
楼主的是什么方程?一元二次?
----------------解决方案--------------------------------------------------------

怎么看了这么多都是书上有的啊  好好看书才是真道理


----------------解决方案--------------------------------------------------------
回复:(appleadionzm)楼主的是什么方程?一元二次?

一元二次方程


----------------解决方案--------------------------------------------------------
回复:(Bonwe_PC)我是个菜鸟请问你说的二分法是个什...
二分法就是不断的将区间范围分半最后得到要求解的值

----------------解决方案--------------------------------------------------------
回复:(nuciewth)先对给定的范围(定义域,假设为x1,x...
非常感谢,不过对你所说的弦截法我还是不太理解,你能具体的解释一下吗
----------------解决方案--------------------------------------------------------

二分法求2*x*x*x-4*x*x+3*x-6=0
#include <stdio.h>
#include <math.h>
void main()
{
float x0,x1,x2,fx0,fx1,fx2;
do
{
PRINTF("enter x1 & x2:");
scanf("%f,%f",&x1,&x2);
fx1=x1*((x\2*x1-4)*x1+3)-6;
fx2=x2*((2*x2-4)*x2+3)-6;
}while(fx1*fx2>0);
do
{
x0=(x1+x2)/2;
fx0=x0*((2*x0-4)*x0+3)-6;
if ((fx0*fx1)>0)
{
x2=x0;
fx2=fx0;
}
else
(
x1=x0;
fx1=fx0;
}
}while(fabs(fx0)>=1e-5);
printf("x=%6.2f\n",x0);
}
这是我看到的一个二分法的实列,不知道对你有没有用


----------------解决方案--------------------------------------------------------
这里需要知道中值定理,最大x的fx和最小x的fx如果乘积同号则与x轴无交点,反之则有解,然后逼近就行
----------------解决方案--------------------------------------------------------
  相关解决方案