一元三次方程求解

有形如:ax3+bx2+cx+d=0 这样的一个一元三次方程。给出该方程中各项的系数(a,b,c,d 均为实数),并约定该方程存在三个不同实根(根的范围在-100至100之间),且根与根之差的绝对值>=1。要求由小到大依次在同一行输出这三个实根(根与根之间留有空格),并精确到小数点后2位。

MyCode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
a,b,c,d=map(int,input().split())
def y(x):
return a*x**3+b*x**2+c*x+d
for i in range(-100,100):
left=i
right=i+1
y1=y(left)
y2=y(right)
if y1==0:
print("{:.2f}".format(left), end=' ')
if y1*y2<0:
while right-left>=0.001:
mid=(left+right)/2
if y(mid)*y(right)<=0:
left=mid
else:
right=mid
print("{:.2f}".format(right), end=' ')

一元三次方程求解
https://ianwusb.blog/2024/03/17/一元三次方程求解/
作者
Ianwusb
发布于
2024年3月17日
许可协议