一元三次方程求解(有bug) 分治

2021-07-07 06:50:47 字數 772 閱讀 3545

****** description:

形如ax^3+bx^2+cx+d=0的方程,求其解

根與根之間差值的絕對值比1大

精確到小數點後4位

分析:

求解高次方程的解,最簡單的做法就是用零點存在定理(point 1)。

用簡單列舉過於複雜而耗時。

因而選擇使用分治的方法。

#include 

#include

#define p 0.0001

int a, b, c, d;

double mul(double k);

double key(double a, double b);

int main() else

if (mul(i) * mul(i + 1) < 0)

}return0;}

double mul(double k)

double key(double a, double b) else

if (mul(a) * mul((a + b) / 2) < 0) else

if (mul(b) * mul((a + b) / 2) < 0)

return

0;//最後一定要有這個返回值,不然會報錯。

}

ps:此題有bug,無法解決根之間差值小於1的問題。

feeling:

分治演算法難理解,多思考,多做題。

堅持!!

一元三次方程求解(分治)

形如 ax3 bx2 cx d 0 這樣的乙個一元三次方程。給出該方程中各項的係數 a,b,c,d均為實數 並約定該方程存在三個不同實根 根的範圍在 100至100之間 且根與根之差的絕對值 1。要求由小到大依次在同一行輸出這三個實根 根與根之間留有空格 並精確到小數點後2位。一行,包含四個實數a,...

一元三次方程求解

有形如 ax 3 bx 2 cx d 0這樣的乙個一元三次方程。給出該方程中各項的係數 a,b,c,d均為實數 並約定該方程存在三個不同實根 根的範圍在 100至100之間 且根與根之差的絕對值 1。要求由小到大依次在同一行輸出這三個實根 根與根之間留有空格 並精確到小數點後2位。輸入有多行測試資料...

一元三次方程求解

問題描述 有形如 ax 3 bx 2 cx d 0 這樣的乙個一元三次方程。給出該方程中各項的係數 a,b,c,d 均為實數 並約定該方程存在三個不同實根 根的範圍在 100至100之間 且根與根之差的絕對值 1。要求三個實根。輸入格式 四個實數 a,b,c,d 輸出格式 由小到大依次在同一行輸出這...