编程序:编写任意一元三次方程求根该怎样编

来源:百度知道 编辑:UC知道 时间:2024/06/07 02:30:00
如ax(3)+bx(2)+cx(1)+d=O 任意输入a,b,c,d 要求运行得出正确解(括号内数字代表次方)
如认为好,还可以多加100哦 就不能给我准确结果,并带有语句说明的 可以a,b,c,d取整这会轻松了吧.

就不能给我准确结果???
我想你是不理解编程语言对数据的存储方式。小数在计算机中是不能准确表示的,如2.9999998、2.9999997结果是3。所以,你想准确表示小数是不可能的,只能在一定范围内是准确的,如误差小于0.000001...所以
左值(result) - 右值(0)的误差小于0.000001就算是解

用C++编写的,已经编译运行调试,测试方程如下:
// 3x(3)+2x(2)+x(1)-6=0
// x(3)+10x(2)+x(1)+1=0

在编程中求解方程的解都是用“穷举”的思想(转化为程序就是循环)进行的,即不断判断在一定的数据范围内存不存在解。所以运算的次数会很多很多!

//@@@@@@@@@@@
double x=-0.001; //假设解的最小值,根据方程情况决定!
double M=100; //假设解的最大值,根据方程情况决定!
//@@@@@@@@@@@
根据方程情况决定!可以修改,但要控制好循环次数哦,假如你设置为x=-0.00001,M=1000000。估计程序要运行个几分钟才结束,搞不好死机哦。

说得这么详细,一定要给分哦!

#include <math.h> //pow、fabs函数在这个库里
#include <iostream>
using namespace std;

double x=-0.001; //假设解的最小值double M=100; //假设解的最大值
void main()
{
double a,b,c,d,result;
cout<<"输入a,b,c,d: ";
cin>>a>>b>>c>>d;
while (1)
{
//左值(result) - 右值(0)的误差小于0.000001就算是解
result=a*pow(x,3)+b*p