请问一下python程序代码错在哪里了,谢谢。是通过二分法求方程根的函数

代码如下: def f(x): s=(a*x)**3+(b*x)**2+(c*x)+d return s a=int(input("a")) b=int(input("b")) c=int(input("c")) d=int(input("d")) for i in range(-100,100,1): x1=int(i) x2=int(i+1) if f(x1)*f(x2)<0: lo,hi=x1,x2 while hi-lo>0.01: mid=(lo+hi)/2 if f(lo)*f(mid)<0: hi=mid else: lo=mid return mid else: pass print(mid)

代码有两个地方有问题
1:19行的return缩进有问题,19行的return不应该出现在一个非方法的地方
2: 代码有可能出现死循环,在我输入a:10, b:10, c:10, d:10的时候出现死循环,请检查代码逻辑

我已经调整好了

def f(x):
    s=(a*x)**3+(b*x)**2+(c*x)+d
    return s

a=int(input("a"))
b=int(input("b"))
c=int(input("c"))
d=int(input("d"))

mid = 0
for i in range(-100,100,1):
    x1=int(i)
    x2=int(i+1)
    if f(x1)*f(x2)<0:
        lo,hi=x1,x2
        while hi-lo>0.01:
            mid=(lo+hi)/2
            if f(lo)*f(mid)<0:
                hi=mid
            else:
                lo=mid
    else:
        pass

print mid

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-12-03

请问一下python程序代码错在哪里了,谢谢。是通过二分法求方程根的函...
代码有两个地方有问题1:19行的return缩进有问题,19行的return不应该出现在一个非方法的地方2: 代码有可能出现死循环,在我输入a:10, b:10, c:10, d:10的时候出现死循环,请检查代码逻辑我已经调整好了def f(x): s=(a*x)**3+(b*x)**2+(c*x)+d return sa=int(input("...

python用二分法求方程在区间上的根
1:19的退货订单有问题。19行的返回值不应出现在非方法中。2: ?有可能代码会循环,直到我输入 a: 10?B: 10,对吗?C: 10,?D: 10在循环中,请检查代码逻辑,我已经调整了定义??F (x) : ???S = (a * x) * 3 (b * x) * 2 (c * x) d??????(input ...

方程求根-二分法、牛顿法、割线法(Python)
二分法的基础是对于连续函数,通过选取区间中点来判断根所在区间,然后递归缩小区间直至满足误差条件。以方程为例,Python代码实现如下,要求误差不高于,区间取。经过步骤后,误差满足条件。牛顿法借助泰勒展开,取线性阶近似,得到迭代公式,每次迭代通过当前点减去其导数的值来逼近根。对于方程,使用牛顿法的P...

数值计算-方程求根
为了改进迭代方法,引入了 Steffensen 迭代法,它在无需计算导数的情况下,通过构造一个更接近二次收敛的迭代公式。这种方法通过引入辅助函数,使得迭代过程更加高效和稳定,适用于在区间内求根。牛顿迭代法是一种基于泰勒展开的高精度求根方法,通过求解函数在某点的切线方程与 x 轴的交点来逼近根。该方法...

如何用Python解一元二次方程?
最常见的数值方法是二分法。我们可以通过二分法计算平方加立方等于80的近似解。具体的方法是,将取值范围分为两部分,然后判断待求的解是否在其中一部分中,如果在,就继续二分直到求出近似解。我们可以先取a的范围为0到5,然后设定一个精度要求,比如说小数点后两位,然后不断逼近最终解。在这个范围内...

loge平方等于多少python(2023年最新整理)
1、利用input()函数获取一个数字a a=input("请输入数字:")2、利用运算符"**"获取变量a的二次幂运算 b=a**2 3、将获取到的结果利用print()函数打印到屏幕上即可。print("a**2=",b)运行结果:python如何求平方根1:二分法 求根号5 a:折半:???5\/2=2.5 b:平方校验:?2.5*2.5=6....

编写一个求一元二次方程根的通用程序,任意输入a、b、c三个数的值,即...
我用Python写一个:结果是:import matha = float(input('Enter coefficient a '))b = float(input('Enter coefficient b '))c = float(input('Enter coeeficient c '))if a == 0: print("a不能为0,不是一元二次方程")else: delta = b ** 2 - 4 * a *c if de...

6.用艾特肯加速方法求方程 x-sinx\/x=0 在(0.5,1)内的近似根(精确到 10...
艾特肯(Aitken)加速方法是一种用于加速数值迭代过程的技术。为了求解方程 x - sin(x)\/x = 0 在区间 (0.5, 1) 内的近似根,我们可以结合二分法和艾特肯加速方法来进行迭代。以下是使用Python示例代码来实现这个过程:```python import math def f(x):return x - math.sin(x) \/ x def ...

loge平方等于多少python(2023年最新整理)
1、利用input()函数获取一个数字a a=input("请输入数字:")2、利用运算符"**"获取变量a的二次幂运算 b=a**2 3、将获取到的结果利用print()函数打印到屏幕上即可。print("a**2=",b)运行结果:python如何求平方根1:二分法 求根号5 a:折半:???5\/2=2.5 b:平方校验:?2.5*2.5=6....

我们如何求解一个方程式呢?
最常见的数值方法是二分法。我们可以通过二分法计算平方加立方等于80的近似解。具体的方法是,将取值范围分为两部分,然后判断待求的解是否在其中一部分中,如果在,就继续二分直到求出近似解。我们可以先取a的范围为0到5,然后设定一个精度要求,比如说小数点后两位,然后不断逼近最终解。在这个范围内...

相似回答