用二分法求方程的根(C语言)
来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/11/11 11:14:50
用二分法求方程的根(C语言)
想问下大家,如何求2*x*x*x-4*x*x+3*x-6=0在(-10,10)内的全部的根,要是全部的根,不能只求 一个,帮忙分析下,并给出源代码 ,
想问下大家,如何求2*x*x*x-4*x*x+3*x-6=0在(-10,10)内的全部的根,要是全部的根,不能只求 一个,帮忙分析下,并给出源代码 ,
刚才那个只能找一个根,现在改了下,可以找所有根:
刚才有个小BUG,改了下::
#include
void FindRoot(void)
{
double dbLeftX = -10.0;
double dbRightX = 10.0;
double dbResultY = 0.0;
double dbTmp = 0.0;
double dbMidleX =0.0;
//当二分点Y的值不为0不是根(即,二分点X不满足方程)
//当区间无限小时完成计算(下面的语句表示当区间不是无限小时继续计算)
while ( abs(dbRightX-dbLeftX) > 0.1e-6 )
{
//二分区间
dbMidleX = ( dbLeftX + dbRightX ) / 2.0;
//算二分点Y的值
dbResultY = 2 * pow(dbMidleX,3) - 4 * pow(dbMidleX,2) + 3 * dbMidleX - 6;
//如果计算的Y值为0时,找到一个根
if ( abs(dbResultY) < 0.1e-6 )
{
printf("Finde a root in [-10,10] ,value = [%lf].\n",dbMidleX);
}
//判断方程的根落于刚才二分区间的哪个区间,并生成新的区间.
if ( dbResultY < 0.0 )
{
dbTmp = 2 * pow(dbLeftX,3) - 4 * pow(dbLeftX,2) + 3 * dbLeftX - 6;
if ( dbTmp < 0.0 )
{
dbLeftX = dbMidleX;
}
else
{
dbRightX = dbMidleX;
}
}
else
{
dbTmp = 2 * pow(dbLeftX,3) - 4 * pow(dbLeftX,2) + 3 * dbLeftX - 6;
if ( dbTmp > 0.0 )
{
dbLeftX = dbMidleX;
}
else
{
dbRightX = dbMidleX;
}
}
}
//区间无限小,如果区间两端计算的Y值一个为正一个为负则区间中点也是一个根
if( 2 * pow(dbLeftX,3) - 4 * pow(dbLeftX,2) + 3 * dbLeftX - 6 < 0 &&
2 * pow(dbRightX,3) - 4 * pow(dbRightX,2) + 3 * dbRightX - 6 >0 )
{
printf("Finde a root in [-10,10] ,value = [%lf].\n",dbMidleX);
}
}
刚才有个小BUG,改了下::
#include
void FindRoot(void)
{
double dbLeftX = -10.0;
double dbRightX = 10.0;
double dbResultY = 0.0;
double dbTmp = 0.0;
double dbMidleX =0.0;
//当二分点Y的值不为0不是根(即,二分点X不满足方程)
//当区间无限小时完成计算(下面的语句表示当区间不是无限小时继续计算)
while ( abs(dbRightX-dbLeftX) > 0.1e-6 )
{
//二分区间
dbMidleX = ( dbLeftX + dbRightX ) / 2.0;
//算二分点Y的值
dbResultY = 2 * pow(dbMidleX,3) - 4 * pow(dbMidleX,2) + 3 * dbMidleX - 6;
//如果计算的Y值为0时,找到一个根
if ( abs(dbResultY) < 0.1e-6 )
{
printf("Finde a root in [-10,10] ,value = [%lf].\n",dbMidleX);
}
//判断方程的根落于刚才二分区间的哪个区间,并生成新的区间.
if ( dbResultY < 0.0 )
{
dbTmp = 2 * pow(dbLeftX,3) - 4 * pow(dbLeftX,2) + 3 * dbLeftX - 6;
if ( dbTmp < 0.0 )
{
dbLeftX = dbMidleX;
}
else
{
dbRightX = dbMidleX;
}
}
else
{
dbTmp = 2 * pow(dbLeftX,3) - 4 * pow(dbLeftX,2) + 3 * dbLeftX - 6;
if ( dbTmp > 0.0 )
{
dbLeftX = dbMidleX;
}
else
{
dbRightX = dbMidleX;
}
}
}
//区间无限小,如果区间两端计算的Y值一个为正一个为负则区间中点也是一个根
if( 2 * pow(dbLeftX,3) - 4 * pow(dbLeftX,2) + 3 * dbLeftX - 6 < 0 &&
2 * pow(dbRightX,3) - 4 * pow(dbRightX,2) + 3 * dbRightX - 6 >0 )
{
printf("Finde a root in [-10,10] ,value = [%lf].\n",dbMidleX);
}
}
用二分法求方程的根(C语言)
C语言二分法求方程近似根
C语言编程例题:用二分法求方程的解
C语言怎么样用二分法求方程的解
C语言 二分法求方程
C语言:用二分法求方程的根,求具体可用程序;
C语言表编程:用二分法求一元三次方程的根 要求:又主函数调用求根子函数
C语言编程二分法6) 用二分法求下面方程在(-10,10)之间的根.2x3-4x2+3x-6=0【提示】(1) 取两个不
编个C语言程序,用热二分法求方程x^3+4x-10=0 在区间[1,2]内的根(精确到0.00001)
设计一个C语言程序:用二分法求方程2x^3-4x^2+3x-6在(-10,10)内的根,用到循环语句
怎么用C语言求二分法
用C语言输入一元二次方程的系数a,b,c,采用二分法求方程的根 ,精确到小数点后2位(即误差