當前位置:編程學習大全網 - 編程語言 - 編程序:編寫任意壹元三次方程求根該怎樣編

編程序:編寫任意壹元三次方程求根該怎樣編

就不能給我準確結果

我想妳是不理解編程語言對數據的存儲方式。小數在計算機中是不能準確表示的,如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*pow(x,2)+c*pow(x,1)+d;

if ( fabs(result-0)<0.000001 )//fabs是求絕對值

{

cout<<"ax(3)+bx(2)+cx(1)+d=O的解是x="<<x<<endl;

break; //結束程序

}

if (x>M)

{

cout<<"無解!"<<endl;

break;//結束程序

}

x += 0.00001; //每次增加0.00001

}

}

根據這個題目的思想,妳可以編寫出壹元10次方程的求解方法!把result=a*pow(x,3)+b*pow(x,2)+c*pow(x,1)+d;

這裏改變,增長壹點就可以了,依次是a*pow(x,10)+ b*pow(x,9)+...

  • 上一篇:福建省小學計算機教師招聘考試專業知識考什麽?
  • 下一篇:什麽是編程,在自己的電腦上面如何學習編程,希望大家指點迷津?
  • copyright 2024編程學習大全網