****** 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 輸出格式 由小到大依次在同一行輸出這...