27x^3+3x-4=0如何求解27x^3+3x-4=0怎样解啊

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/29 19:34:58

27x^3+3x-4=0如何求解27x^3+3x-4=0怎样解啊
27x^3+3x-4=0如何求解
27x^3+3x-4=0怎样解啊

27x^3+3x-4=0如何求解27x^3+3x-4=0怎样解啊
/*
27x^3 + 3x - 4 = 0
如果用计算机来解的话,可以用枚举法,用枚举法的关键是枚举数据的范围的确定.
可将上面方程变换为:
x * ( 27x^2 + 3 ) - 4 = 0
进一步变换:
27x^2 + 3 = 4x^(-1)
可以将左有两边分别看做两个初等函数,即:
y1 = 27x^2 + 3

y2 = 4x^(-1)
现在问题就简化为,找到一个x的值,让函数y1=27x^2+3和y2=4x^(-1)的y取得相等值
转换为坐标图象问题,即:求此两个初等函数的图象交点的x坐标
由此两个函数的图象可以知道,交点的x坐标一定在(0,1)范围内,即,枚举范围为(0,1)
并且根据函数图象可以知道,交点左边y1y2
*/
#include
#include
#include
void main(void)
{
double xLeft = 0.0;
double xRight = 1.0;
double x = (xLeft + xRight) / 2.0;
const double verySmallData = 1e-6;
double y1 = 0.0;
double y2 = 0.0;
while (true)
{
y1 = 27 * x * x + 3;
y2 = 4 * pow( x ,-1 );
if ( abs( y1 - y2 ) < verySmallData )
{
printf("找到x的值 = %f\n",x);
break;
}
else//不断缩小x的区间,直到满足此区间的x值代入上面y1及y2两个函数,使y1-y2的差小于非常小的数(1e-6)
{
if ( y1 < y2 )//区间中点落在了交点左边
{
xLeft = x;
x = (xLeft + xRight) / 2.0;
}
else//区间中点落在了交点右边
{
xRight = x;
x = (xLeft + xRight) / 2.0;
}
}
}
getchar();
}